diff options
155 files changed, 38786 insertions, 10951 deletions
diff --git a/erts/configure.in b/erts/configure.in index 6823133936..6278af3a2e 100644 --- a/erts/configure.in +++ b/erts/configure.in @@ -1693,7 +1693,7 @@ AC_CHECK_FUNCS([getnameinfo getipnodebyname getipnodebyaddr gethostbyname2]) AC_CHECK_FUNCS([ieee_handler fpsetmask finite isnan isinf res_gethostbyname dlopen \ pread pwrite writev memmove strerror strerror_r strncasecmp \ - gethrtime localtime_r gmtime_r mremap memcpy mallopt \ + gethrtime localtime_r gmtime_r mmap mremap memcpy mallopt \ sbrk _sbrk __sbrk brk _brk __brk \ flockfile fstat strlcpy strlcat setsid posix2time setlocale nl_langinfo poll]) if test "X$host" = "Xwin32"; then @@ -1725,7 +1725,6 @@ if test $disable_vfork = true; then fi AC_FUNC_VPRINTF -AC_FUNC_MMAP dnl The AC_DEFINEs are necessary for autoheader to work. :-( dnl for gzio @@ -3729,13 +3728,6 @@ dnl so it is - be adoptable fi ;; *) - if test "$cross_compiling" = "yes"; then - case "$with_ssl" in - "$erl_xcomp_sysroot"*) ;; - *) AC_MSG_ERROR([Invalid path to option --with-ssl=PATH (not a subdirectory to cross system root)]);; - esac - fi - # Option given with PATH to package if test ! -d "$with_ssl" ; then AC_MSG_ERROR(Invalid path to option --with-ssl=PATH) diff --git a/erts/doc/src/erlang.xml b/erts/doc/src/erlang.xml index c95a7005ec..cd9bb85f5c 100644 --- a/erts/doc/src/erlang.xml +++ b/erts/doc/src/erlang.xml @@ -5105,7 +5105,7 @@ true</pre> </p> <p><em>NOTE:</em> If other programs on the system have bound to processors, e.g. another Erlang runtime system, you - may loose performance when binding schedulers. Therefore, + may lose performance when binding schedulers. Therefore, schedulers are by default not bound.</p> <p>Schedulers can be bound in different ways. The <c>How</c> argument determines how schedulers are bound. <c>How</c> can diff --git a/erts/doc/src/notes.xml b/erts/doc/src/notes.xml index c11509131c..a4867adf22 100644 --- a/erts/doc/src/notes.xml +++ b/erts/doc/src/notes.xml @@ -109,7 +109,7 @@ <item> <p>A number of bugs concerning re and unicode are corrected:</p> - <p>re:compile no longer looses unicode option, which also + <p>re:compile no longer loses unicode option, which also fixes bug in re:split.</p> <p>re:replace now handles unicode charlist replacement argument</p> diff --git a/erts/emulator/beam/erl_bif_port.c b/erts/emulator/beam/erl_bif_port.c index 0389177fbe..2ba9dc00b7 100644 --- a/erts/emulator/beam/erl_bif_port.c +++ b/erts/emulator/beam/erl_bif_port.c @@ -1079,27 +1079,33 @@ struct packet_callback_args Eterm res; /* Out */ int string_as_bin; /* return strings as binaries (http_bin): */ byte* aligned_ptr; + Uint bin_sz; Eterm orig; Uint bin_offs; byte bin_bitoffs; }; +#define in_area(ptr,start,nbytes) \ + ((unsigned long)((char*)(ptr) - (char*)(start)) < (nbytes)) + static Eterm http_bld_string(struct packet_callback_args* pca, Uint **hpp, Uint *szp, const char *str, Sint len) { Eterm res = THE_NON_VALUE; Uint size; + int make_subbin; if (pca->string_as_bin) { size = heap_bin_size(len); - + make_subbin = (size > ERL_SUB_BIN_SIZE + && in_area(str, pca->aligned_ptr, pca->bin_sz)); if (szp) { - *szp += (size > ERL_SUB_BIN_SIZE) ? ERL_SUB_BIN_SIZE : size; + *szp += make_subbin ? ERL_SUB_BIN_SIZE : size; } if (hpp) { res = make_binary(*hpp); - if (size > ERL_SUB_BIN_SIZE) { + if (make_subbin) { ErlSubBin* bin = (ErlSubBin*) *hpp; bin->thing_word = HEADER_SUB_BIN; bin->size = len; @@ -1330,7 +1336,7 @@ BIF_RETTYPE decode_packet_3(BIF_ALIST_3) int packet_sz; /*-------Binaries involved: ------------------*/ byte* bin_ptr; /*| orig: original binary */ byte bin_bitsz; /*| bin: BIF_ARG_2, may be sub-binary of orig */ - Uint bin_sz; /*| packet: prefix of bin */ + /*| packet: prefix of bin */ char* body_ptr; /*| body: part of packet to return */ int body_sz; /*| rest: bin without packet */ struct packet_callback_args pca; @@ -1391,18 +1397,18 @@ BIF_RETTYPE decode_packet_3(BIF_ALIST_3) } - bin_sz = binary_size(BIF_ARG_2); + pca.bin_sz = binary_size(BIF_ARG_2); ERTS_GET_BINARY_BYTES(BIF_ARG_2, bin_ptr, pca.bin_bitoffs, bin_bitsz); if (pca.bin_bitoffs != 0) { - pca.aligned_ptr = erts_alloc(ERTS_ALC_T_TMP, bin_sz); - erts_copy_bits(bin_ptr, pca.bin_bitoffs, 1, pca.aligned_ptr, 0, 1, bin_sz*8); + pca.aligned_ptr = erts_alloc(ERTS_ALC_T_TMP, pca.bin_sz); + erts_copy_bits(bin_ptr, pca.bin_bitoffs, 1, pca.aligned_ptr, 0, 1, pca.bin_sz*8); } else { pca.aligned_ptr = bin_ptr; } - packet_sz = packet_get_length(type, (char*)pca.aligned_ptr, bin_sz, + packet_sz = packet_get_length(type, (char*)pca.aligned_ptr, pca.bin_sz, max_plen, trunc_len, &http_state); - if (!(packet_sz > 0 && packet_sz <= bin_sz)) { + if (!(packet_sz > 0 && packet_sz <= pca.bin_sz)) { if (packet_sz < 0) { goto error; } @@ -1458,7 +1464,7 @@ error: rest = (ErlSubBin *) hp; rest->thing_word = HEADER_SUB_BIN; - rest->size = bin_sz - packet_sz; + rest->size = pca.bin_sz - packet_sz; rest->offs = pca.bin_offs + packet_sz; rest->orig = pca.orig; rest->bitoffs = pca.bin_bitoffs; diff --git a/erts/emulator/test/decode_packet_SUITE.erl b/erts/emulator/test/decode_packet_SUITE.erl index 13f17e972c..6cde286871 100644 --- a/erts/emulator/test/decode_packet_SUITE.erl +++ b/erts/emulator/test/decode_packet_SUITE.erl @@ -1,19 +1,19 @@ %% %% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2008-2009. All Rights Reserved. -%% +%% +%% 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% %% @@ -24,10 +24,10 @@ -include("test_server.hrl"). -export([all/1,init_per_testcase/2,fin_per_testcase/2, - basic/1, packet_size/1, neg/1, http/1, line/1, ssl/1]). + basic/1, packet_size/1, neg/1, http/1, line/1, ssl/1, otp_8536/1]). all(suite) -> - [basic, packet_size, neg, http, line, ssl]. + [basic, packet_size, neg, http, line, ssl, otp_8536]. init_per_testcase(Func, Config) when is_atom(Func), is_list(Config) -> Seed = {S1,S2,S3} = now(), @@ -504,6 +504,27 @@ ssl(Config) when is_list(Config) -> F(v2hello), ok. +otp_8536(doc) -> ["Corrupt sub-binary-strings from httph_bin"]; +otp_8536(Config) when is_list(Config) -> + lists:foreach(fun otp_8536_do/1, lists:seq(1,50)), + ok. + +otp_8536_do(N) -> + Data = <<"some data 123">>, + Letters = <<"bcdefghijklmnopqrstuvwxyzyxwvutsrqponmlkjihgfedcba">>, + <<HdrTail:N/binary,_/binary>> = Letters, + Hdr = <<$A, HdrTail/binary>>, + Bin = <<Hdr/binary, ": ", Data/binary, "\r\n\r\n">>, + + io:format("Bin='~p'\n",[Bin]), + ?line {ok,{http_header,0,Hdr2,undefined,Data2},<<"\r\n">>} = decode_pkt(httph_bin, Bin, []), + + %% Do something to trash the C-stack, how about another decode_packet: + decode_pkt(httph_bin,<<Letters/binary, ": ", Data/binary, "\r\n\r\n">>, []), + + %% Now check that we got the expected binaries + {Hdr, Data} = {Hdr2, Data2}. + decode_pkt(Type,Bin) -> decode_pkt(Type,Bin,[]). decode_pkt(Type,Bin,Opts) -> diff --git a/erts/lib_src/common/erl_misc_utils.c b/erts/lib_src/common/erl_misc_utils.c index 9c25d33a3c..f70db86960 100644 --- a/erts/lib_src/common/erl_misc_utils.c +++ b/erts/lib_src/common/erl_misc_utils.c @@ -1,19 +1,19 @@ /* * %CopyrightBegin% - * - * Copyright Ericsson AB 2006-2009. All Rights Reserved. - * + * + * Copyright Ericsson AB 2006-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% */ @@ -373,8 +373,8 @@ erts_get_cpu_topology(erts_cpu_info_t *cpuinfo, return 0; memcpy((void *) topology, (void *) cpuinfo->topology, - cpuinfo->configured*sizeof(erts_cpu_topology_t)); - return cpuinfo->configured; + cpuinfo->topology_size*sizeof(erts_cpu_topology_t)); + return cpuinfo->topology_size; } int diff --git a/lib/compiler/src/cerl_clauses.erl b/lib/compiler/src/cerl_clauses.erl index bb0f998931..99fa8dd9d5 100644 --- a/lib/compiler/src/cerl_clauses.erl +++ b/lib/compiler/src/cerl_clauses.erl @@ -1,19 +1,19 @@ %% %% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2001-2009. All Rights Reserved. -%% +%% +%% Copyright Ericsson AB 2001-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% %% @doc Utility functions for Core Erlang case/receive clauses. diff --git a/lib/compiler/src/cerl_inline.erl b/lib/compiler/src/cerl_inline.erl index f4eaa17e72..6d7eca0113 100644 --- a/lib/compiler/src/cerl_inline.erl +++ b/lib/compiler/src/cerl_inline.erl @@ -1,19 +1,19 @@ %% %% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2001-2009. All Rights Reserved. -%% +%% +%% Copyright Ericsson AB 2001-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% %% %% Core Erlang inliner. diff --git a/lib/compiler/src/sys_core_inline.erl b/lib/compiler/src/sys_core_inline.erl index c644b9e015..9f93acb666 100644 --- a/lib/compiler/src/sys_core_inline.erl +++ b/lib/compiler/src/sys_core_inline.erl @@ -1,19 +1,19 @@ %% %% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2000-2009. All Rights Reserved. -%% +%% +%% Copyright Ericsson AB 2000-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% %% %% Purpose : Function inlining optimisation for Core. diff --git a/lib/compiler/test/bs_match_SUITE.erl b/lib/compiler/test/bs_match_SUITE.erl index e729367a81..75b6f801e7 100644 --- a/lib/compiler/test/bs_match_SUITE.erl +++ b/lib/compiler/test/bs_match_SUITE.erl @@ -1,19 +1,19 @@ %% %% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2005-2009. All Rights Reserved. -%% +%% +%% Copyright Ericsson AB 2005-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% %% diff --git a/lib/compiler/test/bs_utf_SUITE.erl b/lib/compiler/test/bs_utf_SUITE.erl index d1a74f4393..4281874a24 100644 --- a/lib/compiler/test/bs_utf_SUITE.erl +++ b/lib/compiler/test/bs_utf_SUITE.erl @@ -1,19 +1,19 @@ %% %% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2008-2009. All Rights Reserved. -%% +%% +%% 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% %% diff --git a/lib/compiler/test/guard_SUITE.erl b/lib/compiler/test/guard_SUITE.erl index 7343d0f8ca..f3960b28c3 100644 --- a/lib/compiler/test/guard_SUITE.erl +++ b/lib/compiler/test/guard_SUITE.erl @@ -1,19 +1,19 @@ %% %% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2001-2009. All Rights Reserved. -%% +%% +%% Copyright Ericsson AB 2001-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(guard_SUITE). diff --git a/lib/compiler/test/lc_SUITE.erl b/lib/compiler/test/lc_SUITE.erl index 0c1373924c..40bf67e1fa 100644 --- a/lib/compiler/test/lc_SUITE.erl +++ b/lib/compiler/test/lc_SUITE.erl @@ -1,19 +1,19 @@ %% %% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2001-2009. All Rights Reserved. -%% +%% +%% Copyright Ericsson AB 2001-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(lc_SUITE). diff --git a/lib/cosEvent/doc/src/notes.xml b/lib/cosEvent/doc/src/notes.xml index 78299a38dc..b6c4531901 100644 --- a/lib/cosEvent/doc/src/notes.xml +++ b/lib/cosEvent/doc/src/notes.xml @@ -33,6 +33,22 @@ </header> <section> + <title>cosEvent 2.1.9</title> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p> + Test suites published.</p> + <p> + Own Id: OTP-8543 Aux Id:</p> + </item> + </list> + </section> + </section> + + <section> <title>cosEvent 2.1.8</title> <section> diff --git a/lib/cosEvent/test/Makefile b/lib/cosEvent/test/Makefile new file mode 100644 index 0000000000..3d95075ee1 --- /dev/null +++ b/lib/cosEvent/test/Makefile @@ -0,0 +1,154 @@ +# +# %CopyrightBegin% +# +# Copyright Ericsson AB 1999-2009. All Rights Reserved. +# +# The contents of this file are subject to the Erlang Public License, +# Version 1.1, (the "License"); you may not use this file except in +# compliance with the License. You should have received a copy of the +# Erlang Public License along with this software. If not, it can be +# retrieved online at http://www.erlang.org/. +# +# Software distributed under the License is distributed on an "AS IS" +# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +# the License for the specific language governing rights and limitations +# under the License. +# +# %CopyrightEnd% +# +# +include $(ERL_TOP)/make/target.mk +include $(ERL_TOP)/make/$(TARGET)/otp.mk + +# ---------------------------------------------------- +# Application version +# ---------------------------------------------------- +include ../vsn.mk +VSN=$(COSEVENT_VSN) +# ---------------------------------------------------- +# Release directory specification +# ---------------------------------------------------- +RELSYSDIR = $(RELEASE_PATH)/cosEvent_test + +# ---------------------------------------------------- +# Target Specs +# ---------------------------------------------------- +TEST_SPEC_FILE = cosEvent.spec + + +IDL_FILES = \ + event_test_server.idl \ + +IDLOUTDIR = idl_output + +MODULES = \ + event_test_PushC_impl \ + event_test_PullC_impl \ + event_test_PushS_impl \ + event_test_PullS_impl \ + event_channel_SUITE \ + generated_SUITE + +GEN_MOD_COS = \ + event_test_PullC \ + event_test_PushS \ + event_test_PullS \ + oe_event_test_server \ + event_test_PushC + +GEN_HRL_COS = \ + event_test.hrl \ + event_test_PushC.hrl \ + event_test_PullC.hrl \ + event_test_PushS.hrl \ + event_test_PullS.hrl \ + oe_event_test_server.hrl + + +GEN_MODULES = $(GEN_MOD_COS) + +ERL_FILES = $(MODULES:%=%.erl) + +HRL_FILES = + +GEN_HRL_FILES = $(GEN_HRL_COS) + +GEN_FILES = \ + $(GEN_HRL_FILES:%=$(IDLOUTDIR)/%) \ + $(GEN_MODULES:%=$(IDLOUTDIR)/%.erl) + +GEN_TARGET_FILES = $(GEN_MODULES:%=$(IDLOUTDIR)/%.$(EMULATOR)) + +SUITE_TARGET_FILES = $(MODULES:%=%.$(EMULATOR)) + +TARGET_FILES = \ + $(GEN_TARGET_FILES) \ + $(SUITE_TARGET_FILES) + +# ---------------------------------------------------- +# PROGRAMS +# ---------------------------------------------------- +# ---------------------------------------------------- +# FLAGS +# ---------------------------------------------------- +ERL_IDL_FLAGS += -pa $(ERL_TOP)/lib/orber/ebin -pa $(ERL_TOP)/lib/ic/ebin + +ERL_COMPILE_FLAGS += $(ERL_IDL_FLAGS) \ + -pa $(ERL_TOP)/lib/test_server/ebin \ + -pa $(ERL_TOP)/lib/cosEvent/ebin \ + -pa $(ERL_TOP)/lib/cosEvent/test/idl_output \ + -I$(ERL_TOP)/lib/cosEvent \ + -I$(ERL_TOP)/lib/cosEvent/test/$(IDLOUTDIR) \ + -I$(ERL_TOP)/lib/test_server/include + +# ---------------------------------------------------- +# Targets +# ---------------------------------------------------- +tests debug opt: $(TARGET_FILES) + +clean: + rm -f idl_output/* + rm -rf java_initial_reference_idl java_cos_naming_idl + rm -rf java_iiop_module_idl java_output/* + rm -f $(TARGET_FILES) + rm -f errs core *~ + + +docs: + +# ---------------------------------------------------- +# Special Targets +# ---------------------------------------------------- + +# +# Each IDL file produces many target files so no pattern +# rule can be used. +# +TGT_COS = \ + $(GEN_HRL_COS:%=$(IDLOUTDIR)/%) \ + $(GEN_MOD_COS:%=$(IDLOUTDIR)/%.erl) + + +$(TGT_COS): event_test_server.idl + erlc $(ERL_IDL_FLAGS) -o$(IDLOUTDIR) event_test_server.idl + +# ---------------------------------------------------- +# Release Targets +# ---------------------------------------------------- +# We don't copy generated intermediate erlang and hrl files + +include $(ERL_TOP)/make/otp_release_targets.mk + +release_spec: + +release_docs_spec: + +release_tests_spec: tests + $(INSTALL_DIR) $(RELSYSDIR) + $(INSTALL_DATA) $(IDL_FILES) $(TEST_SPEC_FILE) \ + $(ERL_FILES) $(RELSYSDIR) + $(INSTALL_DATA) $(SUITE_TARGET_FILES) $(RELSYSDIR) + $(INSTALL_DIR) $(RELSYSDIR)/$(IDLOUTDIR) + $(INSTALL_DATA) $(GEN_TARGET_FILES) $(GEN_FILES) \ + $(RELSYSDIR)/$(IDLOUTDIR) + diff --git a/lib/cosEvent/test/cosEvent.spec b/lib/cosEvent/test/cosEvent.spec new file mode 100644 index 0000000000..910f7a7c28 --- /dev/null +++ b/lib/cosEvent/test/cosEvent.spec @@ -0,0 +1,19 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1999-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% +%% +{topcase, {dir, "../cosEvent_test"}}. diff --git a/lib/cosEvent/test/event_channel_SUITE.erl b/lib/cosEvent/test/event_channel_SUITE.erl new file mode 100644 index 0000000000..2b0cf1fe30 --- /dev/null +++ b/lib/cosEvent/test/event_channel_SUITE.erl @@ -0,0 +1,316 @@ +%%----------------------------------------------------------------- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1997-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%----------------------------------------------------------------- + +-module(event_channel_SUITE). + +-include("test_server.hrl"). +-include_lib("orber/include/corba.hrl"). +-include_lib("orber/COSS/CosNaming/CosNaming.hrl"). +-include_lib("orber/src/orber_iiop.hrl"). + +%%----------------------------------------------------------------- +%% Macros +%%----------------------------------------------------------------- + +-define(default_timeout, ?t:minutes(5)). + + +-define(match(ExpectedRes, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + io:format("------ CORRECT RESULT ------~n~p~n", + [AcTuAlReS]), + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS) + end + end()). + + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1, event_objects_api/1, events_api/1, events_sync_api/1, + cases/0, init_all/1, finish_all/1, + init_per_testcase/2, fin_per_testcase/2, app_test/1]). + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- + +all(doc) -> ["API tests for the cosEvent interfaces", ""]; +all(suite) -> {req, + [mnesia, orber], + {conf, init_all, cases(), finish_all}}. + +cases() -> + [events_api, events_sync_api, event_objects_api, app_test]. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- + +init_per_testcase(_Case, Config) -> + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +init_all(Config) when is_list(Config) -> + Path = code:which(?MODULE), + code:add_pathz(filename:join(filename:dirname(Path), "idl_output")), + mnesia:delete_schema([node()]), + mnesia:create_schema([node()]), + orber:install([node()]), + application:start(mnesia), + application:start(orber), + cosEventApp:install(), + cosEventApp:start(), + oe_event_test_server:oe_register(), + Config. + +finish_all(Config) when is_list(Config) -> + oe_event_test_server:oe_unregister(), + cosEventApp:stop(), + cosEventApp:uninstall(), + application:stop(orber), + application:stop(mnesia), + mnesia:delete_schema([node()]), + Path = code:which(?MODULE), + code:del_path(filename:join(filename:dirname(Path), "idl_output")), + Config. + +%%----------------------------------------------------------------- +%% Tests app file +%%----------------------------------------------------------------- +app_test(doc) -> []; +app_test(suite) -> []; +app_test(_Config) -> + ok=test_server:app_test(cosEvent), + ok. + + + +event_objects_api(doc) -> ["Testing the CosEvent API to setup a complete service", ""]; +event_objects_api(suite) -> []; +event_objects_api(_Config) -> + + Ch = ?match({_,key,_,_,_,_}, cosEventApp:start_channel([{typecheck, true}, + {pull_interval, 300}])), + + AC=?match({_,key,_,_,_,_}, + 'CosEventChannelAdmin_EventChannel':for_consumers(Ch)), + AS=?match({_,key,_,_,_,_}, + 'CosEventChannelAdmin_EventChannel':for_suppliers(Ch)), + + PPushS=?match({_,key,_,_,_,_}, + 'CosEventChannelAdmin_ConsumerAdmin':obtain_push_supplier(AC)), + PPullS=?match({_,key,_,_,_,_}, + 'CosEventChannelAdmin_ConsumerAdmin':obtain_pull_supplier(AC)), + + PPushC=?match({_,key,_,_,_,_}, + 'CosEventChannelAdmin_SupplierAdmin':obtain_push_consumer(AS)), + PPullC=?match({_,key,_,_,_,_}, + 'CosEventChannelAdmin_SupplierAdmin':obtain_pull_consumer(AS)), + + PushC=?match({_,key,_,_,_,_}, + 'event_test_PushC':oe_create([])), + PullC=?match({_,key,_,_,_,_}, + 'event_test_PullC':oe_create(PPullC)), + + PushS=?match({_,key,_,_,_,_}, + 'event_test_PushS':oe_create(PPushC)), + + PullS=?match({_,key,_,_,_,_}, + 'event_test_PullS':oe_create([])), + + NIL = corba:create_nil_objref(), + + ?match({'EXCEPTION',{'BAD_PARAM',_,_,_}}, + 'CosEventChannelAdmin_ProxyPushSupplier':connect_push_consumer(PPushS, NIL)), + ?match({'EXCEPTION',{'BAD_PARAM',_,_,_}}, + 'CosEventChannelAdmin_ProxyPushSupplier':connect_push_consumer(PPushS, PullS)), + ?match(ok, 'CosEventChannelAdmin_ProxyPushSupplier':connect_push_consumer(PPushS, PushC)), + ?match({'EXCEPTION',{'CosEventChannelAdmin_AlreadyConnected',_}}, + 'CosEventChannelAdmin_ProxyPushSupplier':connect_push_consumer(PPushS, PushC)), + + ?match(ok, 'CosEventChannelAdmin_ProxyPullSupplier':connect_pull_consumer(PPullS, NIL)), + ?match({'EXCEPTION',{'BAD_PARAM',_,_,_}}, + 'CosEventChannelAdmin_ProxyPullSupplier':connect_pull_consumer(PPullS, PullS)), + ?match(ok, 'CosEventChannelAdmin_ProxyPullSupplier':connect_pull_consumer(PPullS, PullC)), + ?match({'EXCEPTION',{'CosEventChannelAdmin_AlreadyConnected',_}}, + 'CosEventChannelAdmin_ProxyPullSupplier':connect_pull_consumer(PPullS, PullC)), + + ?match(ok, 'CosEventChannelAdmin_ProxyPushConsumer':connect_push_supplier(PPushC, NIL)), + ?match({'EXCEPTION',{'BAD_PARAM',_,_,_}}, + 'CosEventChannelAdmin_ProxyPushConsumer':connect_push_supplier(PPushC, PullS)), + ?match(ok, 'CosEventChannelAdmin_ProxyPushConsumer':connect_push_supplier(PPushC, PushS)), + ?match({'EXCEPTION',{'CosEventChannelAdmin_AlreadyConnected',_}}, + 'CosEventChannelAdmin_ProxyPushConsumer':connect_push_supplier(PPushC, PushS)), + + ?match({'EXCEPTION',{'BAD_PARAM',_,_,_}}, + 'CosEventChannelAdmin_ProxyPullConsumer':connect_pull_supplier(PPullC, NIL)), + ?match({'EXCEPTION',{'BAD_PARAM',_,_,_}}, + 'CosEventChannelAdmin_ProxyPullConsumer':connect_pull_supplier(PPullC, PushS)), + ?match(ok, 'CosEventChannelAdmin_ProxyPullConsumer':connect_pull_supplier(PPullC, PullS)), + ?match({'EXCEPTION',{'CosEventChannelAdmin_AlreadyConnected',_}}, + 'CosEventChannelAdmin_ProxyPullConsumer':connect_pull_supplier(PPullC, PullS)), + + + catch corba:dispose(AC), + %% Wait a couple of seconds to be sure all data removed from DB. + timer:sleep(2000), + + %% Since we terminated ConsumerAdmin only the Supplier Proxies should be terminated. + ?match(true, corba_object:non_existent(AC)), + ?match(true, corba_object:non_existent(PPushS)), + ?match(true, corba_object:non_existent(PPullS)), + + ?match(false, corba_object:non_existent(Ch)), + ?match(false, corba_object:non_existent(AS)), + ?match(false, corba_object:non_existent(PPullC)), + ?match(false, corba_object:non_existent(PPushC)), + + %% Terminate a proxy and check that its admin is unaffected. + catch corba:dispose(PPullC), + timer:sleep(2000), + ?match(false, corba_object:non_existent(AS)), + ?match(true, corba_object:non_existent(PPullC)), + + catch corba:dispose(Ch), + timer:sleep(2000), + + ?match(true, corba_object:non_existent(Ch)), + ?match(true, corba_object:non_existent(AS)), + ?match(true, corba_object:non_existent(PPullC)), + ?match(true, corba_object:non_existent(PPushC)), + + %% The client should be notified; wait for a couple of seconds and check it. + timer:sleep(2000), + ?match(true, corba_object:non_existent(PushC)), + ?match(true, corba_object:non_existent(PullC)), + ?match(true, corba_object:non_existent(PushS)), + ?match(true, corba_object:non_existent(PullS)), + + ok. + +events_api(doc) -> ["Testing the CosEvent API for sending events asynchronous", ""]; +events_api(suite) -> []; +events_api(_Config) -> + + Ch = ?match({_,key,_,_,_,_}, cosEventApp:start_channel([{typecheck, true}, + {pull_interval, 2}, + {blocking, false}])), + event_sender(Ch). + + +events_sync_api(doc) -> ["Testing the CosEvent API for sending events synchronous", ""]; +events_sync_api(suite) -> []; +events_sync_api(_Config) -> + + Ch = ?match({_,key,_,_,_,_}, cosEventApp:start_channel([{typecheck, true}, + {pull_interval, 2}, + {blocking, true}])), + event_sender(Ch). + +event_sender(Ch) -> + Event1 = #any{typecode=tk_long, value = 1}, + Event2 = #any{typecode=tk_long, value = 2}, + Event3 = #any{typecode=tk_long, value = 3}, + Event4 = #any{typecode=tk_long, value = 4}, + Event5 = #any{typecode=tk_long, value = 5}, + Event6 = #any{typecode=tk_long, value = 6}, + + AC=?match({_,key,_,_,_,_}, + 'CosEventChannelAdmin_EventChannel':for_consumers(Ch)), + AS=?match({_,key,_,_,_,_}, + 'CosEventChannelAdmin_EventChannel':for_suppliers(Ch)), + + PPushS=?match({_,key,_,_,_,_}, + 'CosEventChannelAdmin_ConsumerAdmin':obtain_push_supplier(AC)), + PPullS=?match({_,key,_,_,_,_}, + 'CosEventChannelAdmin_ConsumerAdmin':obtain_pull_supplier(AC)), + + PPushC=?match({_,key,_,_,_,_}, + 'CosEventChannelAdmin_SupplierAdmin':obtain_push_consumer(AS)), + PPullC=?match({_,key,_,_,_,_}, + 'CosEventChannelAdmin_SupplierAdmin':obtain_pull_consumer(AS)), + + PushC=?match({_,key,_,_,_,_}, 'event_test_PushC':oe_create([])), + PullC=?match({_,key,_,_,_,_}, 'event_test_PullC':oe_create(PPullS)), + + PushS=?match({_,key,_,_,_,_}, 'event_test_PushS':oe_create(PPushC)), + + PullS=?match({_,key,_,_,_,_}, 'event_test_PullS':oe_create([])), + + ?match(ok, 'CosEventChannelAdmin_ProxyPushSupplier':connect_push_consumer(PPushS, PushC)), + ?match(ok, 'CosEventChannelAdmin_ProxyPullSupplier':connect_pull_consumer(PPullS, PullC)), + ?match(ok, 'CosEventChannelAdmin_ProxyPushConsumer':connect_push_supplier(PPushC, PushS)), + ?match(ok, 'CosEventChannelAdmin_ProxyPullConsumer':connect_pull_supplier(PPullC, PullS)), + + %% No events should be available at the consumer side at this point. + ?match({_, false}, event_test_PullC:do_try_pull(PullC)), + ?match([], event_test_PushC:get_data(PushC)), + + %% Push an event and wait to be sure it have reached the destination. + ?match(ok, event_test_PushS:do_push(PushS, Event1)), + ?match(ok, event_test_PushS:do_push(PushS, Event2)), + ?match(ok, event_test_PushS:do_push(PushS, Event3)), + timer:sleep(2000), + ?match({Event1, true}, event_test_PullC:do_try_pull(PullC)), + ?match({Event2, true}, event_test_PullC:do_try_pull(PullC)), + ?match({Event3, true}, event_test_PullC:do_try_pull(PullC)), + ?match({_, false}, event_test_PullC:do_try_pull(PullC)), + ?match([Event1, Event2, Event3], event_test_PushC:get_data(PushC)), + + ?match(ok, event_test_PullS:add_event(PullS, Event4)), + ?match(ok, event_test_PullS:add_event(PullS, Event5)), + ?match(ok, event_test_PullS:add_event(PullS, Event6)), + + %% Since the pull operation is blocking we do not need to "sleep". + %% The ProxyPullConsumer will pull for events according to the pull_interval + %% parameter given when started the channel. + ?match(Event4, event_test_PullC:do_pull(PullC)), + ?match(Event5, event_test_PullC:do_pull(PullC)), + ?match(Event6, event_test_PullC:do_pull(PullC)), + + timer:sleep(2000), + ?match([Event4, Event5, Event6], event_test_PushC:get_data(PushC)), + + + catch corba:dispose(Ch), + %% The client should be notified; wait for a couple of seconds and check it. + timer:sleep(2000), + ?match(true, corba_object:non_existent(PushC)), + ?match(true, corba_object:non_existent(PullC)), + ?match(true, corba_object:non_existent(PushS)), + ?match(true, corba_object:non_existent(PullS)), + + ok. diff --git a/lib/cosEvent/test/event_test_PullC_impl.erl b/lib/cosEvent/test/event_test_PullC_impl.erl new file mode 100644 index 0000000000..186d1cbd51 --- /dev/null +++ b/lib/cosEvent/test/event_test_PullC_impl.erl @@ -0,0 +1,43 @@ +%%------------------------------------------------------------------------ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2001-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%------------------------------------------------------------------------ +%% Description: a very simple implementation of PullConsumer interface +%%------------------------------------------------------------------------ +-module(event_test_PullC_impl). + +-export([init/1, terminate/2, disconnect_pull_consumer/1, do_pull/1, do_try_pull/1]). + +init(Proxy) -> + {ok, Proxy}. + +terminate(_From, _Reason) -> + ok. + +disconnect_pull_consumer(Proxy) -> + io:format("event_test_PullC terminates~n",[]), + {stop, normal, ok, Proxy}. + +do_pull(Proxy) -> + {reply, 'CosEventComm_PullSupplier':pull(Proxy), Proxy}. + +do_try_pull(Proxy) -> + {reply, 'CosEventComm_PullSupplier':try_pull(Proxy), Proxy}. + diff --git a/lib/cosEvent/test/event_test_PullS_impl.erl b/lib/cosEvent/test/event_test_PullS_impl.erl new file mode 100644 index 0000000000..b7fa0c34f0 --- /dev/null +++ b/lib/cosEvent/test/event_test_PullS_impl.erl @@ -0,0 +1,57 @@ +%%------------------------------------------------------------------------ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2001-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%------------------------------------------------------------------------ +%% Description: a very simple implementation of Pull Supplier interface +%%------------------------------------------------------------------------ +-module(event_test_PullS_impl). + +-include_lib("orber/include/corba.hrl"). + +-export([init/1, terminate/2, pull/1, try_pull/1, disconnect_pull_supplier/1, + add_event/2]). + +init(_) -> + {ok, []}. + +terminate(_From, _Reason) -> + ok. + +pull([]) -> + corba:raise(#'INTERNAL'{completion_status = ?COMPLETED_NO}); +pull([Event|Events]) -> + {reply, Event, Events}. + +try_pull([]) -> + {reply, {#any{typecode=tk_null, value = null}, false}, []}; +try_pull([Event|Events]) -> + {reply, {Event, true}, Events}. + +disconnect_pull_supplier(Events) -> + io:format("event_test_PullS terminates ~p~n", [Events]), + {stop, normal, ok, Events}. + + +add_event(Events, Event) -> + %% Store in FIFO order; don't really care if we use '++' since + %% this operation is used in tests only. + {reply, ok, Events ++ [Event]}. + + diff --git a/lib/cosEvent/test/event_test_PushC_impl.erl b/lib/cosEvent/test/event_test_PushC_impl.erl new file mode 100644 index 0000000000..6eadf74a31 --- /dev/null +++ b/lib/cosEvent/test/event_test_PushC_impl.erl @@ -0,0 +1,46 @@ +%%------------------------------------------------------------------------ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2001-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%------------------------------------------------------------------------ +%% Description: a very simple implementation of Push Consumer interface +%%------------------------------------------------------------------------ + +-module(event_test_PushC_impl). + +-export([init/1, terminate/2, push/2, disconnect_push_consumer/1, get_data/1]). + +init(_) -> + {ok, []}. + +terminate(_From, _Reason) -> + ok. + +push(Events, Event) -> + {reply, ok, [Event|Events]}. + +disconnect_push_consumer(Events) -> + io:format("event_test_PushC terminates: ~p~n", [Events]), + {stop, normal, ok, Events}. + + +get_data(Events) -> + %% Returns Events in FIFO order and reset state. + {reply, lists:reverse(Events), []}. + diff --git a/lib/cosEvent/test/event_test_PushS_impl.erl b/lib/cosEvent/test/event_test_PushS_impl.erl new file mode 100644 index 0000000000..da82e97211 --- /dev/null +++ b/lib/cosEvent/test/event_test_PushS_impl.erl @@ -0,0 +1,41 @@ +%%------------------------------------------------------------------------ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2001-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%------------------------------------------------------------------------ +%% Description: a very simple implementation of Push Supplier interface +%%------------------------------------------------------------------------ + +-module(event_test_PushS_impl). + +-export([init/1, terminate/2, disconnect_push_supplier/1, do_push/2]). + +init(Proxy) -> + {ok, Proxy}. + +terminate(_From, _Reason) -> + ok. + +disconnect_push_supplier(Proxy) -> + io:format("event_test_PullC terminates~n",[]), + {stop, normal, ok, Proxy}. + +do_push(Proxy, Event) -> + {reply, 'CosEventComm_PushConsumer':push(Proxy, Event), Proxy}. + diff --git a/lib/cosEvent/test/event_test_server.idl b/lib/cosEvent/test/event_test_server.idl new file mode 100644 index 0000000000..1719401ccd --- /dev/null +++ b/lib/cosEvent/test/event_test_server.idl @@ -0,0 +1,47 @@ +// +// %CopyrightBegin% +// +// Copyright Ericsson AB 2001-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% +// + +#ifndef _EVENT_TEST_SERVER_IDL +#define _EVENT_TEST_SERVER_IDL + +#include <../src/CosEventComm.idl> + +module event_test { + + interface PushC : CosEventComm::PushConsumer { + typedef sequence<any> AnySeq; + AnySeq get_data(); + }; + interface PullC : CosEventComm::PullConsumer { + any do_pull(); + any do_try_pull(out boolean has_event); + }; + + interface PushS : CosEventComm::PushSupplier { + void do_push(in any Event); + }; + interface PullS : CosEventComm::PullSupplier { + void add_event(in any Event); + }; + +}; + +#endif + + diff --git a/lib/cosEvent/test/generated_SUITE.erl b/lib/cosEvent/test/generated_SUITE.erl new file mode 100644 index 0000000000..2d75b18451 --- /dev/null +++ b/lib/cosEvent/test/generated_SUITE.erl @@ -0,0 +1,487 @@ +%%----------------------------------------------------------------- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2004-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%----------------------------------------------------------------- +%% File : generated_SUITE.erl +%% Purpose : +%%----------------------------------------------------------------- + +-module(generated_SUITE). + +-include("test_server.hrl"). +-include_lib("orber/include/corba.hrl"). + +-define(default_timeout, ?t:minutes(3)). + +-define(match(ExpectedRes, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS) + end + end()). + +-define(nomatch(Not, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + Not -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS); + _ -> + AcTuAlReS + end + end()). + + +-define(checktc(_Op), + fun(TC) -> + case orber_tc:check_tc(TC) of + false -> + io:format("###### ERROR ERROR ######~n~p - ~p~n", [Op, TC]), + ?line exit(TC); + true -> + true + end + end). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1]). + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- +-export([]). +-compile(export_all). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["This suite is for testing IC generated files"]; +all(suite) -> + ['CosEventChannelAdmin_AlreadyConnected', 'CosEventChannelAdmin_TypeError', + 'CosEventComm_Disconnected', + 'CosEventChannelAdmin_ConsumerAdmin', 'CosEventChannelAdmin_EventChannel', + 'CosEventChannelAdmin_ProxyPullConsumer', 'CosEventChannelAdmin_ProxyPullSupplier', + 'CosEventChannelAdmin_ProxyPushConsumer', 'CosEventChannelAdmin_ProxyPushSupplier', + 'CosEventChannelAdmin_SupplierAdmin', oe_CosEventComm_CAdmin, + oe_CosEventComm_Channel, oe_CosEventComm_Event, oe_CosEventComm_PullerS, + oe_CosEventComm_PusherS, 'CosEventComm_PullConsumer', + 'CosEventComm_PullSupplier', 'CosEventComm_PushConsumer', + 'CosEventComm_PushSupplier']. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- +init_per_testcase(_Case, Config) -> + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventChannelAdmin_AlreadyConnected' +%% Description: +%%----------------------------------------------------------------- +'CosEventChannelAdmin_AlreadyConnected'(doc) -> [""]; +'CosEventChannelAdmin_AlreadyConnected'(suite) -> []; +'CosEventChannelAdmin_AlreadyConnected'(_) -> + ?match(true, orber_tc:check_tc('CosEventChannelAdmin_AlreadyConnected':tc())), + ?match("IDL:omg.org/CosEventChannelAdmin/AlreadyConnected:1.0", + 'CosEventChannelAdmin_AlreadyConnected':id()), + ?match("CosEventChannelAdmin_AlreadyConnected", + 'CosEventChannelAdmin_AlreadyConnected':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventChannelAdmin_TypeError' +%% Description: +%%----------------------------------------------------------------- +'CosEventChannelAdmin_TypeError'(doc) -> [""]; +'CosEventChannelAdmin_TypeError'(suite) -> []; +'CosEventChannelAdmin_TypeError'(_) -> + ?match(true, orber_tc:check_tc('CosEventChannelAdmin_TypeError':tc())), + ?match("IDL:omg.org/CosEventChannelAdmin/TypeError:1.0", + 'CosEventChannelAdmin_TypeError':id()), + ?match("CosEventChannelAdmin_TypeError", + 'CosEventChannelAdmin_TypeError':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventComm_Disconnected' +%% Description: +%%----------------------------------------------------------------- +'CosEventComm_Disconnected'(doc) -> [""]; +'CosEventComm_Disconnected'(suite) -> []; +'CosEventComm_Disconnected'(_) -> + ?match(true, orber_tc:check_tc('CosEventComm_Disconnected':tc())), + ?match("IDL:omg.org/CosEventComm/Disconnected:1.0", + 'CosEventComm_Disconnected':id()), + ?match("CosEventComm_Disconnected", 'CosEventComm_Disconnected':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventChannelAdmin_ConsumerAdmin' +%% Description: +%%----------------------------------------------------------------- +'CosEventChannelAdmin_ConsumerAdmin'(doc) -> [""]; +'CosEventChannelAdmin_ConsumerAdmin'(suite) -> []; +'CosEventChannelAdmin_ConsumerAdmin'(_) -> + ?nomatch(undefined, 'CosEventChannelAdmin_ConsumerAdmin':oe_tc(obtain_push_supplier)), + ?nomatch(undefined, 'CosEventChannelAdmin_ConsumerAdmin':oe_tc(obtain_pull_supplier)), + ?match(undefined, 'CosEventChannelAdmin_ConsumerAdmin':oe_tc(undefined)), + ?match([_|_], 'CosEventChannelAdmin_ConsumerAdmin':oe_get_interface()), + ?match("IDL:omg.org/CosEventChannelAdmin/ConsumerAdmin:1.0", + 'CosEventChannelAdmin_ConsumerAdmin':typeID()), + check_tc('CosEventChannelAdmin_ConsumerAdmin':oe_get_interface()), + ?match(true, 'CosEventChannelAdmin_ConsumerAdmin':oe_is_a('CosEventChannelAdmin_ConsumerAdmin':typeID())), + ?match(false, 'CosEventChannelAdmin_ConsumerAdmin':oe_is_a("wrong")), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventChannelAdmin_EventChannel' +%% Description: +%%----------------------------------------------------------------- +'CosEventChannelAdmin_EventChannel'(doc) -> [""]; +'CosEventChannelAdmin_EventChannel'(suite) -> []; +'CosEventChannelAdmin_EventChannel'(_) -> + ?nomatch(undefined, 'CosEventChannelAdmin_EventChannel':oe_tc(for_consumers)), + ?nomatch(undefined, 'CosEventChannelAdmin_EventChannel':oe_tc(for_suppliers)), + ?nomatch(undefined, 'CosEventChannelAdmin_EventChannel':oe_tc(destroy)), + ?match(undefined, 'CosEventChannelAdmin_EventChannel':oe_tc(undefined)), + ?match([_|_], 'CosEventChannelAdmin_EventChannel':oe_get_interface()), + ?match("IDL:omg.org/CosEventChannelAdmin/EventChannel:1.0", + 'CosEventChannelAdmin_EventChannel':typeID()), + check_tc('CosEventChannelAdmin_EventChannel':oe_get_interface()), + ?match(true, 'CosEventChannelAdmin_EventChannel':oe_is_a('CosEventChannelAdmin_EventChannel':typeID())), + ?match(false, 'CosEventChannelAdmin_EventChannel':oe_is_a("wrong")), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventChannelAdmin_ProxyPullConsumer' +%% Description: +%%----------------------------------------------------------------- +'CosEventChannelAdmin_ProxyPullConsumer'(doc) -> [""]; +'CosEventChannelAdmin_ProxyPullConsumer'(suite) -> []; +'CosEventChannelAdmin_ProxyPullConsumer'(_) -> + ?nomatch(undefined, 'CosEventChannelAdmin_ProxyPullConsumer':oe_tc(connect_pull_supplier)), + ?nomatch(undefined, 'CosEventChannelAdmin_ProxyPullConsumer':oe_tc(disconnect_pull_consumer)), + ?match(undefined, 'CosEventChannelAdmin_ProxyPullConsumer':oe_tc(undefined)), + ?match([_|_], 'CosEventChannelAdmin_ProxyPullConsumer':oe_get_interface()), + ?match("IDL:omg.org/CosEventChannelAdmin/ProxyPullConsumer:1.0", + 'CosEventChannelAdmin_ProxyPullConsumer':typeID()), + check_tc('CosEventChannelAdmin_ProxyPullConsumer':oe_get_interface()), + ?match(true, 'CosEventChannelAdmin_ProxyPullConsumer':oe_is_a('CosEventChannelAdmin_ProxyPullConsumer':typeID())), + ?match(true, 'CosEventChannelAdmin_ProxyPullConsumer':oe_is_a('CosEventComm_PullConsumer':typeID())), + ?match(false, 'CosEventChannelAdmin_ProxyPullConsumer':oe_is_a("wrong")), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventChannelAdmin_ProxyPullSupplier' +%% Description: +%%----------------------------------------------------------------- +'CosEventChannelAdmin_ProxyPullSupplier'(doc) -> [""]; +'CosEventChannelAdmin_ProxyPullSupplier'(suite) -> []; +'CosEventChannelAdmin_ProxyPullSupplier'(_) -> + ?nomatch(undefined, 'CosEventChannelAdmin_ProxyPullSupplier':oe_tc(connect_pull_consumer)), + ?nomatch(undefined, 'CosEventChannelAdmin_ProxyPullSupplier':oe_tc(pull)), + ?nomatch(undefined, 'CosEventChannelAdmin_ProxyPullSupplier':oe_tc(try_pull)), + ?nomatch(undefined, 'CosEventChannelAdmin_ProxyPullSupplier':oe_tc(disconnect_pull_supplier)), + ?match(undefined, 'CosEventChannelAdmin_ProxyPullSupplier':oe_tc(undefined)), + ?match([_|_], 'CosEventChannelAdmin_ProxyPullSupplier':oe_get_interface()), + ?match("IDL:omg.org/CosEventChannelAdmin/ProxyPullSupplier:1.0", + 'CosEventChannelAdmin_ProxyPullSupplier':typeID()), + check_tc('CosEventChannelAdmin_ProxyPullSupplier':oe_get_interface()), + ?match(true, 'CosEventChannelAdmin_ProxyPullSupplier':oe_is_a('CosEventChannelAdmin_ProxyPullSupplier':typeID())), + ?match(true, 'CosEventChannelAdmin_ProxyPullSupplier':oe_is_a('CosEventComm_PullSupplier':typeID())), + ?match(false, 'CosEventChannelAdmin_ProxyPullSupplier':oe_is_a("wrong")), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventChannelAdmin_ProxyPushConsumer' +%% Description: +%%----------------------------------------------------------------- +'CosEventChannelAdmin_ProxyPushConsumer'(doc) -> [""]; +'CosEventChannelAdmin_ProxyPushConsumer'(suite) -> []; +'CosEventChannelAdmin_ProxyPushConsumer'(_) -> + ?nomatch(undefined, 'CosEventChannelAdmin_ProxyPushConsumer':oe_tc(connect_push_supplier)), + ?nomatch(undefined, 'CosEventChannelAdmin_ProxyPushConsumer':oe_tc(push)), + ?nomatch(undefined, 'CosEventChannelAdmin_ProxyPushConsumer':oe_tc(disconnect_push_consumer)), + ?match(undefined, 'CosEventChannelAdmin_ProxyPushConsumer':oe_tc(undefined)), + ?match([_|_], 'CosEventChannelAdmin_ProxyPushConsumer':oe_get_interface()), + ?match("IDL:omg.org/CosEventChannelAdmin/ProxyPushConsumer:1.0", + 'CosEventChannelAdmin_ProxyPushConsumer':typeID()), + check_tc('CosEventChannelAdmin_ProxyPushConsumer':oe_get_interface()), + ?match(true, 'CosEventChannelAdmin_ProxyPushConsumer':oe_is_a('CosEventChannelAdmin_ProxyPushConsumer':typeID())), + ?match(true, 'CosEventChannelAdmin_ProxyPushConsumer':oe_is_a('CosEventComm_PushConsumer':typeID())), + ?match(false, 'CosEventChannelAdmin_ProxyPushConsumer':oe_is_a("wrong")), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventChannelAdmin_ProxyPushSupplier' +%% Description: +%%----------------------------------------------------------------- +'CosEventChannelAdmin_ProxyPushSupplier'(doc) -> [""]; +'CosEventChannelAdmin_ProxyPushSupplier'(suite) -> []; +'CosEventChannelAdmin_ProxyPushSupplier'(_) -> + ?nomatch(undefined, 'CosEventChannelAdmin_ProxyPushSupplier':oe_tc(connect_push_consumer)), + ?nomatch(undefined, 'CosEventChannelAdmin_ProxyPushSupplier':oe_tc(disconnect_push_supplier)), + ?match(undefined, 'CosEventChannelAdmin_ProxyPushSupplier':oe_tc(undefined)), + ?match([_|_], 'CosEventChannelAdmin_ProxyPushSupplier':oe_get_interface()), + ?match("IDL:omg.org/CosEventChannelAdmin/ProxyPushSupplier:1.0", + 'CosEventChannelAdmin_ProxyPushSupplier':typeID()), + check_tc('CosEventChannelAdmin_ProxyPushSupplier':oe_get_interface()), + ?match(true, 'CosEventChannelAdmin_ProxyPushSupplier':oe_is_a('CosEventChannelAdmin_ProxyPushSupplier':typeID())), + ?match(true, 'CosEventChannelAdmin_ProxyPushSupplier':oe_is_a('CosEventComm_PushSupplier':typeID())), + ?match(false, 'CosEventChannelAdmin_ProxyPushSupplier':oe_is_a("wrong")), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventChannelAdmin_SupplierAdmin' +%% Description: +%%----------------------------------------------------------------- +'CosEventChannelAdmin_SupplierAdmin'(doc) -> [""]; +'CosEventChannelAdmin_SupplierAdmin'(suite) -> []; +'CosEventChannelAdmin_SupplierAdmin'(_) -> + ?nomatch(undefined, 'CosEventChannelAdmin_SupplierAdmin':oe_tc(obtain_push_consumer)), + ?nomatch(undefined, 'CosEventChannelAdmin_SupplierAdmin':oe_tc(obtain_pull_consumer)), + ?match(undefined, 'CosEventChannelAdmin_SupplierAdmin':oe_tc(undefined)), + ?match([_|_], 'CosEventChannelAdmin_SupplierAdmin':oe_get_interface()), + ?match("IDL:omg.org/CosEventChannelAdmin/SupplierAdmin:1.0", + 'CosEventChannelAdmin_SupplierAdmin':typeID()), + check_tc('CosEventChannelAdmin_SupplierAdmin':oe_get_interface()), + ?match(true, 'CosEventChannelAdmin_SupplierAdmin':oe_is_a('CosEventChannelAdmin_SupplierAdmin':typeID())), + ?match(false, 'CosEventChannelAdmin_SupplierAdmin':oe_is_a("wrong")), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'oe_CosEventComm_CAdmin' +%% Description: +%%----------------------------------------------------------------- +'oe_CosEventComm_CAdmin'(doc) -> [""]; +'oe_CosEventComm_CAdmin'(suite) -> []; +'oe_CosEventComm_CAdmin'(_) -> + ?nomatch(undefined, 'oe_CosEventComm_CAdmin':oe_tc(obtain_push_supplier)), + ?nomatch(undefined, 'oe_CosEventComm_CAdmin':oe_tc(obtain_pull_supplier)), + ?nomatch(undefined, 'oe_CosEventComm_CAdmin':oe_tc(send)), + ?nomatch(undefined, 'oe_CosEventComm_CAdmin':oe_tc(send_sync)), + ?match(undefined, 'oe_CosEventComm_CAdmin':oe_tc(undefined)), + ?match([_|_], 'oe_CosEventComm_CAdmin':oe_get_interface()), + ?match("IDL:oe_CosEventComm/CAdmin:1.0", + 'oe_CosEventComm_CAdmin':typeID()), + check_tc('oe_CosEventComm_CAdmin':oe_get_interface()), + ?match(true, 'oe_CosEventComm_CAdmin':oe_is_a('oe_CosEventComm_CAdmin':typeID())), + ?match(true, 'oe_CosEventComm_CAdmin':oe_is_a('CosEventChannelAdmin_ConsumerAdmin':typeID())), + ?match(true, 'oe_CosEventComm_CAdmin':oe_is_a('oe_CosEventComm_Event':typeID())), + ?match(false, 'oe_CosEventComm_CAdmin':oe_is_a("wrong")), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'oe_CosEventComm_Channel' +%% Description: +%%----------------------------------------------------------------- +'oe_CosEventComm_Channel'(doc) -> [""]; +'oe_CosEventComm_Channel'(suite) -> []; +'oe_CosEventComm_Channel'(_) -> + ?nomatch(undefined, 'oe_CosEventComm_Channel':oe_tc(for_consumers)), + ?nomatch(undefined, 'oe_CosEventComm_Channel':oe_tc(for_suppliers)), + ?nomatch(undefined, 'oe_CosEventComm_Channel':oe_tc(destroy)), + ?nomatch(undefined, 'oe_CosEventComm_Channel':oe_tc(send)), + ?nomatch(undefined, 'oe_CosEventComm_Channel':oe_tc(send_sync)), + ?match(undefined, 'oe_CosEventComm_Channel':oe_tc(undefined)), + ?match([_|_], 'oe_CosEventComm_Channel':oe_get_interface()), + ?match("IDL:oe_CosEventComm/Channel:1.0", + 'oe_CosEventComm_Channel':typeID()), + check_tc('oe_CosEventComm_Channel':oe_get_interface()), + ?match(true, 'oe_CosEventComm_Channel':oe_is_a('oe_CosEventComm_Channel':typeID())), + ?match(true, 'oe_CosEventComm_Channel':oe_is_a('CosEventChannelAdmin_EventChannel':typeID())), + ?match(true, 'oe_CosEventComm_Channel':oe_is_a('oe_CosEventComm_Event':typeID())), + ?match(false, 'oe_CosEventComm_Channel':oe_is_a("wrong")), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'oe_CosEventComm_Event' +%% Description: +%%----------------------------------------------------------------- +'oe_CosEventComm_Event'(doc) -> [""]; +'oe_CosEventComm_Event'(suite) -> []; +'oe_CosEventComm_Event'(_) -> + ?nomatch(undefined, 'oe_CosEventComm_Event':oe_tc(send)), + ?nomatch(undefined, 'oe_CosEventComm_Event':oe_tc(send_sync)), + ?match(undefined, 'oe_CosEventComm_Event':oe_tc(undefined)), + ?match([_|_], 'oe_CosEventComm_Event':oe_get_interface()), + ?match("IDL:oe_CosEventComm/Event:1.0", + 'oe_CosEventComm_Event':typeID()), + check_tc('oe_CosEventComm_Event':oe_get_interface()), + ?match(true, 'oe_CosEventComm_Event':oe_is_a('oe_CosEventComm_Event':typeID())), + ?match(false, 'oe_CosEventComm_Event':oe_is_a("wrong")), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'oe_CosEventComm_PullerS' +%% Description: +%%----------------------------------------------------------------- +'oe_CosEventComm_PullerS'(doc) -> [""]; +'oe_CosEventComm_PullerS'(suite) -> []; +'oe_CosEventComm_PullerS'(_) -> + ?nomatch(undefined, 'oe_CosEventComm_PullerS':oe_tc(connect_pull_consumer)), + ?nomatch(undefined, 'oe_CosEventComm_PullerS':oe_tc(pull)), + ?nomatch(undefined, 'oe_CosEventComm_PullerS':oe_tc(try_pull)), + ?nomatch(undefined, 'oe_CosEventComm_PullerS':oe_tc(disconnect_pull_supplier)), + ?nomatch(undefined, 'oe_CosEventComm_PullerS':oe_tc(send)), + ?nomatch(undefined, 'oe_CosEventComm_PullerS':oe_tc(send_sync)), + ?match(undefined, 'oe_CosEventComm_PullerS':oe_tc(undefined)), + ?match([_|_], 'oe_CosEventComm_PullerS':oe_get_interface()), + ?match("IDL:oe_CosEventComm/PullerS:1.0", + 'oe_CosEventComm_PullerS':typeID()), + check_tc('oe_CosEventComm_PullerS':oe_get_interface()), + ?match(true, 'oe_CosEventComm_PullerS':oe_is_a('oe_CosEventComm_PullerS':typeID())), + ?match(true, 'oe_CosEventComm_PullerS':oe_is_a('CosEventChannelAdmin_ProxyPullSupplier':typeID())), + ?match(true, 'oe_CosEventComm_PullerS':oe_is_a('CosEventComm_PullSupplier':typeID())), + ?match(true, 'oe_CosEventComm_PullerS':oe_is_a('oe_CosEventComm_Event':typeID())), + ?match(false, 'oe_CosEventComm_PullerS':oe_is_a("wrong")), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'oe_CosEventComm_PusherS' +%% Description: +%%----------------------------------------------------------------- +'oe_CosEventComm_PusherS'(doc) -> [""]; +'oe_CosEventComm_PusherS'(suite) -> []; +'oe_CosEventComm_PusherS'(_) -> + ?nomatch(undefined, 'oe_CosEventComm_PusherS':oe_tc(connect_push_consumer)), + ?nomatch(undefined, 'oe_CosEventComm_PusherS':oe_tc(disconnect_push_supplier)), + ?nomatch(undefined, 'oe_CosEventComm_PusherS':oe_tc(send)), + ?nomatch(undefined, 'oe_CosEventComm_PusherS':oe_tc(send_sync)), + ?match(undefined, 'oe_CosEventComm_PusherS':oe_tc(undefined)), + ?match([_|_], 'oe_CosEventComm_PusherS':oe_get_interface()), + ?match("IDL:oe_CosEventComm/PusherS:1.0", + 'oe_CosEventComm_PusherS':typeID()), + check_tc('oe_CosEventComm_PusherS':oe_get_interface()), + ?match(true, 'oe_CosEventComm_PusherS':oe_is_a('oe_CosEventComm_PusherS':typeID())), + ?match(true, 'oe_CosEventComm_PusherS':oe_is_a('CosEventChannelAdmin_ProxyPushSupplier':typeID())), + ?match(true, 'oe_CosEventComm_PusherS':oe_is_a('CosEventComm_PushSupplier':typeID())), + ?match(true, 'oe_CosEventComm_PusherS':oe_is_a('oe_CosEventComm_Event':typeID())), + ?match(false, 'oe_CosEventComm_PusherS':oe_is_a("wrong")), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventComm_PullConsumer' +%% Description: +%%----------------------------------------------------------------- +'CosEventComm_PullConsumer'(doc) -> [""]; +'CosEventComm_PullConsumer'(suite) -> []; +'CosEventComm_PullConsumer'(_) -> + ?nomatch(undefined, 'CosEventComm_PullConsumer':oe_tc(disconnect_pull_consumer)), + ?match(undefined, 'CosEventComm_PullConsumer':oe_tc(undefined)), + ?match([_|_], 'CosEventComm_PullConsumer':oe_get_interface()), + ?match("IDL:omg.org/CosEventComm/PullConsumer:1.0", + 'CosEventComm_PullConsumer':typeID()), + check_tc('CosEventComm_PullConsumer':oe_get_interface()), + ?match(true, 'CosEventComm_PullConsumer':oe_is_a('CosEventComm_PullConsumer':typeID())), + ?match(false, 'CosEventComm_PullConsumer':oe_is_a("wrong")), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventComm_PullSupplier' +%% Description: +%%----------------------------------------------------------------- +'CosEventComm_PullSupplier'(doc) -> [""]; +'CosEventComm_PullSupplier'(suite) -> []; +'CosEventComm_PullSupplier'(_) -> + ?nomatch(undefined, 'CosEventComm_PullSupplier':oe_tc(pull)), + ?nomatch(undefined, 'CosEventComm_PullSupplier':oe_tc(try_pull)), + ?nomatch(undefined, 'CosEventComm_PullSupplier':oe_tc(disconnect_pull_supplier)), + ?match(undefined, 'CosEventComm_PullSupplier':oe_tc(undefined)), + ?match([_|_], 'CosEventComm_PullSupplier':oe_get_interface()), + ?match("IDL:omg.org/CosEventComm/PullSupplier:1.0", + 'CosEventComm_PullSupplier':typeID()), + check_tc('CosEventComm_PullSupplier':oe_get_interface()), + ?match(true, 'CosEventComm_PullSupplier':oe_is_a('CosEventComm_PullSupplier':typeID())), + ?match(false, 'CosEventComm_PullSupplier':oe_is_a("wrong")), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventComm_PushConsumer' +%% Description: +%%----------------------------------------------------------------- +'CosEventComm_PushConsumer'(doc) -> [""]; +'CosEventComm_PushConsumer'(suite) -> []; +'CosEventComm_PushConsumer'(_) -> + ?nomatch(undefined, 'CosEventComm_PushConsumer':oe_tc(push)), + ?nomatch(undefined, 'CosEventComm_PushConsumer':oe_tc(disconnect_push_consumer)), + ?match(undefined, 'CosEventComm_PushConsumer':oe_tc(undefined)), + ?match([_|_], 'CosEventComm_PushConsumer':oe_get_interface()), + ?match("IDL:omg.org/CosEventComm/PushConsumer:1.0", + 'CosEventComm_PushConsumer':typeID()), + check_tc('CosEventComm_PushConsumer':oe_get_interface()), + ?match(true, 'CosEventComm_PushConsumer':oe_is_a('CosEventComm_PushConsumer':typeID())), + ?match(false, 'CosEventComm_PushConsumer':oe_is_a("wrong")), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventComm_PushSupplier' +%% Description: +%%----------------------------------------------------------------- +'CosEventComm_PushSupplier'(doc) -> [""]; +'CosEventComm_PushSupplier'(suite) -> []; +'CosEventComm_PushSupplier'(_) -> + ?nomatch(undefined, 'CosEventComm_PushSupplier':oe_tc(disconnect_push_supplier)), + ?match(undefined, 'CosEventComm_PushSupplier':oe_tc(undefined)), + ?match([_|_], 'CosEventComm_PushSupplier':oe_get_interface()), + ?match("IDL:omg.org/CosEventComm/PushSupplier:1.0", + 'CosEventComm_PushSupplier':typeID()), + check_tc('CosEventComm_PushSupplier':oe_get_interface()), + ?match(true, 'CosEventComm_PushSupplier':oe_is_a('CosEventComm_PushSupplier':typeID())), + ?match(false, 'CosEventComm_PushSupplier':oe_is_a("wrong")), + ok. + + + +%%----------------------------------------------------------------- +%% MISC functions +%%----------------------------------------------------------------- +check_tc([]) -> + ok; +check_tc([{Op, {RetType, InParameters, OutParameters}}|T]) -> + io:format("checked - ~s~n", [Op]), + lists:all(?checktc(Op), [RetType|InParameters]), + lists:all(?checktc(Op), OutParameters), + check_tc(T). + + diff --git a/lib/cosEvent/test/idl_output/.gitignore b/lib/cosEvent/test/idl_output/.gitignore new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/lib/cosEvent/test/idl_output/.gitignore diff --git a/lib/cosEvent/vsn.mk b/lib/cosEvent/vsn.mk index 8915903bbe..9f326b39b6 100644 --- a/lib/cosEvent/vsn.mk +++ b/lib/cosEvent/vsn.mk @@ -1,7 +1,9 @@ -COSEVENT_VSN = 2.1.8 +COSEVENT_VSN = 2.1.9 -TICKETS = OTP-8355 \ +TICKETS = OTP-8543 + +TICKETS_2.1.8 = OTP-8355 \ OTP-8409 TICKETS_2.1.7 = OTP-8201 diff --git a/lib/cosEventDomain/doc/src/notes.xml b/lib/cosEventDomain/doc/src/notes.xml index 0ad42948af..deb1985c86 100644 --- a/lib/cosEventDomain/doc/src/notes.xml +++ b/lib/cosEventDomain/doc/src/notes.xml @@ -4,7 +4,7 @@ <chapter> <header> <copyright> - <year>2001</year><year>2009</year> + <year>2001</year><year>2010</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -13,12 +13,12 @@ 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. - + </legalnotice> <title>cosEventDomain Release Notes</title> @@ -32,6 +32,22 @@ </header> <section> + <title>cosEventDomain 1.1.9</title> + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p> + Test suites published.</p> + <p> + Own Id: OTP-8543 Aux Id:</p> + </item> + </list> + </section> + + </section> + + <section> <title>cosEventDomain 1.1.8</title> <section> diff --git a/lib/cosEventDomain/test/Makefile b/lib/cosEventDomain/test/Makefile new file mode 100644 index 0000000000..9893b05b8c --- /dev/null +++ b/lib/cosEventDomain/test/Makefile @@ -0,0 +1,104 @@ +# +# %CopyrightBegin% +# +# Copyright Ericsson AB 2001-2009. All Rights Reserved. +# +# The contents of this file are subject to the Erlang Public License, +# Version 1.1, (the "License"); you may not use this file except in +# compliance with the License. You should have received a copy of the +# Erlang Public License along with this software. If not, it can be +# retrieved online at http://www.erlang.org/. +# +# Software distributed under the License is distributed on an "AS IS" +# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +# the License for the specific language governing rights and limitations +# under the License. +# +# %CopyrightEnd% +# +# +include $(ERL_TOP)/make/target.mk +include $(ERL_TOP)/make/$(TARGET)/otp.mk + +# ---------------------------------------------------- +# Application version +# ---------------------------------------------------- +include ../vsn.mk +VSN=$(COSEVENTDOMAIN_VSN) +# ---------------------------------------------------- +# Release directory specification +# ---------------------------------------------------- +RELSYSDIR = $(RELEASE_PATH)/cosEventDomain_test + +# ---------------------------------------------------- +# Target Specs +# ---------------------------------------------------- +TEST_SPEC_FILE = cosEventDomain.spec + + +MODULES = \ + event_domain_SUITE \ + generated_SUITE + +ERL_FILES = $(MODULES:%=%.erl) + +HRL_FILES = + +SUITE_TARGET_FILES = $(MODULES:%=%.$(EMULATOR)) + +TARGET_FILES = \ + $(SUITE_TARGET_FILES) + +# ---------------------------------------------------- +# PROGRAMS +# ---------------------------------------------------- +# ---------------------------------------------------- +# FLAGS +# ---------------------------------------------------- +ERL_IDL_FLAGS += -pa $(ERL_TOP)/lib/orber/ebin -pa $(ERL_TOP)/lib/ic/ebin + +ERL_COMPILE_FLAGS += \ + $(ERL_IDL_FLAGS) \ + -pa $(ERL_TOP)/lib/test_server/ebin \ + -pa $(ERL_TOP)/lib/cosEventDomain/ebin \ + -pa $(ERL_TOP)/lib/cosEventDomain/include \ + -pa $(ERL_TOP)/lib/cosNotification/ebin \ + -pa $(ERL_TOP)/lib/cosNotification/include \ + -I$(ERL_TOP)/lib/cosEventDomain/include \ + -I$(ERL_TOP)/lib/cosNotification/include \ + -I$(ERL_TOP)/lib/cosNotification/ebin \ + -I$(ERL_TOP)/lib/test_server/include + +# ---------------------------------------------------- +# Targets +# ---------------------------------------------------- +tests debug opt: $(TARGET_FILES) + +clean: + rm -f $(TARGET_FILES) + rm -f errs core *~ + + +docs: + +# ---------------------------------------------------- +# Special Targets +# ---------------------------------------------------- + +# ---------------------------------------------------- +# Release Targets +# ---------------------------------------------------- +# We don't copy generated intermediate erlang and hrl files + +include $(ERL_TOP)/make/otp_release_targets.mk + +release_spec: + +release_docs_spec: + +release_tests_spec: tests + $(INSTALL_DIR) $(RELSYSDIR) + $(INSTALL_DATA) $(TEST_SPEC_FILE) \ + $(ERL_FILES) $(RELSYSDIR) + $(INSTALL_DATA) $(SUITE_TARGET_FILES) $(RELSYSDIR) + diff --git a/lib/cosEventDomain/test/cosEventDomain.spec b/lib/cosEventDomain/test/cosEventDomain.spec new file mode 100644 index 0000000000..0d3e307071 --- /dev/null +++ b/lib/cosEventDomain/test/cosEventDomain.spec @@ -0,0 +1,19 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2001-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% +%% +{topcase, {dir, "../cosEventDomain_test"}}. diff --git a/lib/cosEventDomain/test/event_domain_SUITE.erl b/lib/cosEventDomain/test/event_domain_SUITE.erl new file mode 100644 index 0000000000..ddf0af3489 --- /dev/null +++ b/lib/cosEventDomain/test/event_domain_SUITE.erl @@ -0,0 +1,456 @@ +%%----------------------------------------------------------------- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2001-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%----------------------------------------------------------------- + +-module(event_domain_SUITE). + +-include("test_server.hrl"). +-include_lib("orber/include/corba.hrl"). +-include_lib("cosNotification/include/CosNotifyChannelAdmin.hrl"). +-include_lib("cosNotification/include/CosNotification.hrl"). + +-include_lib("cosEventDomain/include/CosEventDomainAdmin.hrl"). +-include_lib("cosEventDomain/src/cosEventDomainApp.hrl"). + +%%----------------------------------------------------------------- +%% Macros +%%----------------------------------------------------------------- + +-define(default_timeout, ?t:minutes(5)). + + +-define(match(ExpectedRes, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + io:format("------ CORRECT RESULT ------~n~p~n", + [AcTuAlReS]), + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS) + end + end()). + + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1, event_domain_api/1, event_domain_factory_api/1, + cases/0, init_all/1, finish_all/1, + init_per_testcase/2, fin_per_testcase/2, app_test/1]). + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- + +all(doc) -> ["API tests for the cosEventDomain interfaces", ""]; +all(suite) -> {req, + [mnesia, orber, cosNotification], + {conf, init_all, cases(), finish_all}}. + +cases() -> + [event_domain_api, event_domain_factory_api, app_test]. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- + +init_per_testcase(_Case, Config) -> + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +init_all(Config) when is_list(Config) -> + mnesia:delete_schema([node()]), + mnesia:create_schema([node()]), + ok = corba:orb_init([{flags, 16#02}, + {orber_debug_level, 10}]), + orber:install([node()]), + application:start(mnesia), + application:start(orber), + cosEventApp:install(), + cosEventApp:start(), + cosNotificationApp:install(), + cosNotificationApp:start(), + cosEventDomainApp:install(), + cosEventDomainApp:start(), + Config. + +finish_all(Config) when is_list(Config) -> + cosEventDomainApp:stop(), + cosEventDomainApp:uninstall(), + cosNotificationApp:stop(), + cosNotificationApp:uninstall(), + cosEventApp:stop(), + cosEventApp:uninstall(), + application:stop(orber), + application:stop(mnesia), + mnesia:delete_schema([node()]), + Config. + +%%----------------------------------------------------------------- +%% Tests app file +%%----------------------------------------------------------------- +app_test(doc) -> []; +app_test(suite) -> []; +app_test(_Config) -> + ok=test_server:app_test(cosEventDomain), + ok. + + +event_domain_api(doc) -> ["Testing the CosEventDomain Domain API", ""]; +event_domain_api(suite) -> []; +event_domain_api(_Config) -> + + %% We will setup a cluster looking like: + %% 7-8---> + %% / + %% 2 - 4 6-> + %% \ / + %% 5---9-1-3 + + %% 2-4 + %% 4-1 + %% 1-3 + %% 3-6 + %% 5-9 + %% 9-1 + %% 4-7 + %% 7-8 + + + ChFac = ?match({_,key,_,_,_,_}, + cosNotificationApp:start_global_factory([{pullInterval,1}])), + {Ch0,_} = ?match({{_,key,_,_,_,_}, _}, + 'CosNotifyChannelAdmin_EventChannelFactory':create_channel(ChFac, [], [])), + Fac = ?match({_,key,_,_,_,_}, + cosEventDomainApp:start_factory()), + {ED, _} = ?match({{_,key,_,_,_,_}, _}, + 'CosEventDomainAdmin_EventDomainFactory':create_event_domain(Fac, [], [])), + ID0 = 'CosEventDomainAdmin_EventDomain':add_channel(ED, Ch0), + ?match(Ch0, 'CosEventDomainAdmin_EventDomain':get_channel(ED, ID0)), + ?match([0], 'CosEventDomainAdmin_EventDomain':get_all_channels(ED)), + ?match({'EXCEPTION',{'CosNotifyChannelAdmin_ChannelNotFound',_}}, + 'CosEventDomainAdmin_EventDomain':get_channel(ED, 100)), + ?match({'EXCEPTION',{'CosNotifyChannelAdmin_ChannelNotFound',_}}, + 'CosEventDomainAdmin_EventDomain':remove_channel(ED, 100)), + ?match(ok, 'CosEventDomainAdmin_EventDomain':remove_channel(ED, 0)), + ?match([], 'CosEventDomainAdmin_EventDomain':get_all_channels(ED)), + ?match({'EXCEPTION',{'CosNotifyChannelAdmin_ChannelNotFound',_}}, + 'CosEventDomainAdmin_EventDomain':remove_channel(ED, 0)), + + %% Create a new event channel. + {Ch1,_} = ?match({{_,key,_,_,_,_}, _}, + 'CosNotifyChannelAdmin_EventChannelFactory':create_channel(ChFac, [], [])), + {Ch2,_} = ?match({{_,key,_,_,_,_}, _}, + 'CosNotifyChannelAdmin_EventChannelFactory':create_channel(ChFac, [], [])), + {Ch3,_} = ?match({{_,key,_,_,_,_}, _}, + 'CosNotifyChannelAdmin_EventChannelFactory':create_channel(ChFac, [], [])), + {Ch4,_} = ?match({{_,key,_,_,_,_}, _}, + 'CosNotifyChannelAdmin_EventChannelFactory':create_channel(ChFac, [], [])), + {Ch5,_} = ?match({{_,key,_,_,_,_}, _}, + 'CosNotifyChannelAdmin_EventChannelFactory':create_channel(ChFac, [], [])), + {Ch6,_} = ?match({{_,key,_,_,_,_}, _}, + 'CosNotifyChannelAdmin_EventChannelFactory':create_channel(ChFac, [], [])), + {Ch7,_} = ?match({{_,key,_,_,_,_}, _}, + 'CosNotifyChannelAdmin_EventChannelFactory':create_channel(ChFac, [], [])), + {Ch8,_} = ?match({{_,key,_,_,_,_}, _}, + 'CosNotifyChannelAdmin_EventChannelFactory':create_channel(ChFac, [], [])), + {Ch9,_} = ?match({{_,key,_,_,_,_}, _}, + 'CosNotifyChannelAdmin_EventChannelFactory':create_channel(ChFac, [], [])), + + ID1 = 'CosEventDomainAdmin_EventDomain':add_channel(ED, Ch1), + ID2 = 'CosEventDomainAdmin_EventDomain':add_channel(ED, Ch2), + ID3 = 'CosEventDomainAdmin_EventDomain':add_channel(ED, Ch3), + ID4 = 'CosEventDomainAdmin_EventDomain':add_channel(ED, Ch4), + ID5 = 'CosEventDomainAdmin_EventDomain':add_channel(ED, Ch5), + ID6 = 'CosEventDomainAdmin_EventDomain':add_channel(ED, Ch6), + ID7 = 'CosEventDomainAdmin_EventDomain':add_channel(ED, Ch7), + ID8 = 'CosEventDomainAdmin_EventDomain':add_channel(ED, Ch8), + ID9 = 'CosEventDomainAdmin_EventDomain':add_channel(ED, Ch9), + ?match([_,_,_,_,_,_,_,_,_], + 'CosEventDomainAdmin_EventDomain':get_all_channels(ED)), + + ?match([], 'CosEventDomainAdmin_EventDomain':get_all_connections(ED)), + C1 = #'CosEventDomainAdmin_Connection'{supplier_id=ID2, + consumer_id=ID4, + ctype='STRUCTURED_EVENT', + notification_style='Pull'}, + C2 = #'CosEventDomainAdmin_Connection'{supplier_id=ID4, + consumer_id=ID1, + ctype='ANY_EVENT', + notification_style='Push'}, + C3 = #'CosEventDomainAdmin_Connection'{supplier_id=ID1, + consumer_id=ID3, + ctype='ANY_EVENT', + notification_style='Pull'}, + C4 = #'CosEventDomainAdmin_Connection'{supplier_id=ID3, + consumer_id=ID6, + ctype='STRUCTURED_EVENT', + notification_style='Push'}, + C5 = #'CosEventDomainAdmin_Connection'{supplier_id=ID5, + consumer_id=ID9, + ctype='ANY_EVENT', + notification_style='Pull'}, + C6 = #'CosEventDomainAdmin_Connection'{supplier_id=ID9, + consumer_id=ID1, + ctype='ANY_EVENT', + notification_style='Push'}, + C7 = #'CosEventDomainAdmin_Connection'{supplier_id=ID4, + consumer_id=ID7, + ctype='STRUCTURED_EVENT', + notification_style='Pull'}, + C8 = #'CosEventDomainAdmin_Connection'{supplier_id=ID7, + consumer_id=ID8, + ctype='ANY_EVENT', + notification_style='Push'}, + C9 = #'CosEventDomainAdmin_Connection'{supplier_id=ID8, + consumer_id=ID4, + ctype='ANY_EVENT', + notification_style='Pull'}, + C10 = #'CosEventDomainAdmin_Connection'{supplier_id=ID5, + consumer_id=ID4, + ctype='ANY_EVENT', + notification_style='Pull'}, + C11 = #'CosEventDomainAdmin_Connection'{supplier_id=ID4, + consumer_id=ID6, + ctype='ANY_EVENT', + notification_style='Pull'}, + C12 = #'CosEventDomainAdmin_Connection'{supplier_id=ID8, + consumer_id=ID6, + ctype='ANY_EVENT', + notification_style='Pull'}, + + CID1 = 'CosEventDomainAdmin_EventDomain':add_connection(ED, C1), + ?match([CID1], 'CosEventDomainAdmin_EventDomain':get_all_connections(ED)), + _CID2 = 'CosEventDomainAdmin_EventDomain':add_connection(ED, C2), + ?match([_,_], + 'CosEventDomainAdmin_EventDomain':get_all_connections(ED)), + _CID3 = 'CosEventDomainAdmin_EventDomain':add_connection(ED, C3), + ?match([_,_,_], + 'CosEventDomainAdmin_EventDomain':get_all_connections(ED)), + _CID4 = 'CosEventDomainAdmin_EventDomain':add_connection(ED, C4), + ?match([_,_,_,_], + 'CosEventDomainAdmin_EventDomain':get_all_connections(ED)), + _CID5 = 'CosEventDomainAdmin_EventDomain':add_connection(ED, C5), + ?match([_,_,_,_,_], + 'CosEventDomainAdmin_EventDomain':get_all_connections(ED)), + _CID6 = 'CosEventDomainAdmin_EventDomain':add_connection(ED, C6), + ?match([_,_,_,_,_,_], + 'CosEventDomainAdmin_EventDomain':get_all_connections(ED)), + CID7 = 'CosEventDomainAdmin_EventDomain':add_connection(ED, C7), + ?match([_,_,_,_,_,_,_], + 'CosEventDomainAdmin_EventDomain':get_all_connections(ED)), + _CID8 = 'CosEventDomainAdmin_EventDomain':add_connection(ED, C8), + ?match([_,_,_,_,_,_,_,_], + 'CosEventDomainAdmin_EventDomain':get_all_connections(ED)), + + ?match({'EXCEPTION',{'CosEventDomainAdmin_AlreadyExists', _}}, + 'CosEventDomainAdmin_EventDomain':add_connection(ED, C8)), + %% No cycles should exist. + ?match([], 'CosEventDomainAdmin_EventDomain':get_cycles(ED)), + + ?match([_, _], 'CosEventDomainAdmin_EventDomain':get_qos(ED)), + AllowCyclic = #'CosNotification_Property'{name=?CycleDetection, + value=any:create(orber_tc:short(), + ?AuthorizeCycles)}, + ?match({'EXCEPTION',{'CosNotification_UnsupportedQoS',_,_}}, + 'CosEventDomainAdmin_EventDomain':set_qos(ED, [AllowCyclic])), + ForbidCyclic = #'CosNotification_Property'{name=?CycleDetection, + value=any:create(orber_tc:short(), + ?ForbidCycles)}, + %% The same as before; must work. + ?match(ok, 'CosEventDomainAdmin_EventDomain':set_qos(ED, [ForbidCyclic])), + + AllowDiamonds = #'CosNotification_Property'{name=?DiamondDetection, + value=any:create(orber_tc:short(), + ?AuthorizeDiamonds)}, + %% Since no diamonds allowed before this is always ok. + ?match(ok, 'CosEventDomainAdmin_EventDomain':set_qos(ED, [AllowDiamonds])), + + ?match([_, _], 'CosEventDomainAdmin_EventDomain':get_qos(ED)), + + ForbidDiamonds = #'CosNotification_Property'{name=?DiamondDetection, + value=any:create(orber_tc:short(), + ?ForbidDiamonds)}, + %% No diamonds created before. Hence, will work. + ?match(ok, 'CosEventDomainAdmin_EventDomain':set_qos(ED, [ForbidDiamonds])), + + ?match([_, _], 'CosEventDomainAdmin_EventDomain':get_qos(ED)), + + ?match({ok, [_]}, 'CosEventDomainAdmin_EventDomain':validate_qos(ED, + [ForbidDiamonds, + ForbidCyclic])), + %% No diamonds exists, hence, this is ok. + ?match({ok, [_]}, 'CosEventDomainAdmin_EventDomain':validate_qos(ED, + [AllowDiamonds, + ForbidCyclic])), + ?match({'EXCEPTION',{'CosNotification_UnsupportedQoS',_,_}}, + 'CosEventDomainAdmin_EventDomain':validate_qos(ED, [ForbidDiamonds, + AllowCyclic])), + + %% Since the ED is started is asyclic we may not succeed with this invokation. + ?match({'EXCEPTION',{'CosEventDomainAdmin_CycleCreationForbidden',_,_}}, + 'CosEventDomainAdmin_EventDomain':add_connection(ED, C9)), + ?match([], 'CosEventDomainAdmin_EventDomain':get_offer_channels(ED, ID2)), + + ?match([2], 'CosEventDomainAdmin_EventDomain':get_offer_channels(ED, ID4)), + ?match([_,_,_], 'CosEventDomainAdmin_EventDomain':get_offer_channels(ED, ID8)), + ?match({'EXCEPTION',{'CosNotifyChannelAdmin_ChannelNotFound',_}}, + 'CosEventDomainAdmin_EventDomain':get_offer_channels(ED, 100)), + ?match([], 'CosEventDomainAdmin_EventDomain':get_subscription_channels(ED, ID8)), + ?match([_,_,_,_,_], + 'CosEventDomainAdmin_EventDomain':get_subscription_channels(ED, ID4)), + ?match([_,_,_,_,_,_], + 'CosEventDomainAdmin_EventDomain':get_subscription_channels(ED, ID2)), + ?match({'EXCEPTION',{'CosNotifyChannelAdmin_ChannelNotFound',_}}, + 'CosEventDomainAdmin_EventDomain':get_subscription_channels(ED, 100)), + Nil = corba:create_nil_objref(), + + P2=?match({_,key,_,_,_,_}, + 'CosEventDomainAdmin_EventDomain':connect_push_supplier_with_id(ED, Nil, ID2)), + P7=?match({_,key,_,_,_,_}, + 'CosEventDomainAdmin_EventDomain':connect_push_supplier_with_id(ED, Nil, ID7)), + P8=?match({_,key,_,_,_,_}, + 'CosEventDomainAdmin_EventDomain':connect_pull_consumer_with_id(ED, Nil, ID8)), + P6=?match({_,key,_,_,_,_}, + 'CosEventDomainAdmin_EventDomain':connect_pull_consumer_with_id(ED, Nil, ID6)), + E1 = #any{typecode=tk_long, value=1}, + E2 = #any{typecode=tk_long, value=2}, + + ?match(ok, 'CosNotifyChannelAdmin_ProxyPushConsumer':push(P2, E1)), + ?match(E1, 'CosNotifyChannelAdmin_ProxyPullSupplier':pull(P8)), + ?match(E1, 'CosNotifyChannelAdmin_ProxyPullSupplier':pull(P6)), + ?match(ok, 'CosNotifyChannelAdmin_ProxyPushConsumer':push(P7, E2)), + ?match(E2, 'CosNotifyChannelAdmin_ProxyPullSupplier':pull(P8)), + timer:sleep(10000), + ?match({_,false}, 'CosNotifyChannelAdmin_ProxyPullSupplier':try_pull(P6)), + + ?match(ok, 'CosEventDomainAdmin_EventDomain':remove_connection(ED, CID7)), + + ?match({'EXCEPTION',{'CosEventDomainAdmin_ConnectionNotFound',_}}, + 'CosEventDomainAdmin_EventDomain':remove_connection(ED, CID7)), + + ?match({'EXCEPTION',{'CosEventDomainAdmin_ConnectionNotFound',_}}, + 'CosEventDomainAdmin_EventDomain':remove_connection(ED, 100)), + + ?match([], 'CosEventDomainAdmin_EventDomain':get_offer_channels(ED, ID7)), + ?match([2], 'CosEventDomainAdmin_EventDomain':get_offer_channels(ED, ID4)), + + ?match([8], 'CosEventDomainAdmin_EventDomain':get_subscription_channels(ED, ID7)), + ?match([_,_,_], 'CosEventDomainAdmin_EventDomain':get_subscription_channels(ED, ID4)), + + CID10 = ?match(8, 'CosEventDomainAdmin_EventDomain':add_connection(ED, C7)), + + %% Now we'll check diamond management. + %% Currently it should not be possible to create a diamond (due to QoS-setting). + ?match({'EXCEPTION',{'CosEventDomainAdmin_DiamondCreationForbidden',_,_}}, + 'CosEventDomainAdmin_EventDomain':add_connection(ED, C11)), + ?match({'EXCEPTION',{'CosEventDomainAdmin_DiamondCreationForbidden',_,_}}, + 'CosEventDomainAdmin_EventDomain':add_connection(ED, C10)), + ?match({'EXCEPTION',{'CosEventDomainAdmin_DiamondCreationForbidden',_,_}}, + 'CosEventDomainAdmin_EventDomain':add_connection(ED, C12)), + ?match(ok, 'CosEventDomainAdmin_EventDomain':set_qos(ED, [AllowDiamonds])), + + CID11 = ?match(9, 'CosEventDomainAdmin_EventDomain':add_connection(ED, C10)), + ?match([_,_,_,_,_,_,_,_,_], + 'CosEventDomainAdmin_EventDomain':get_all_connections(ED)), + ?match([_], 'CosEventDomainAdmin_EventDomain':get_diamonds(ED)), + + CID12 = ?match(10, 'CosEventDomainAdmin_EventDomain':add_connection(ED, C11)), + ?match([_, _, _], 'CosEventDomainAdmin_EventDomain':get_diamonds(ED)), + + CID13 = ?match(11, 'CosEventDomainAdmin_EventDomain':add_connection(ED, C12)), + + ?match([_, _, _], 'CosEventDomainAdmin_EventDomain':get_diamonds(ED)), + + ?match({'EXCEPTION',{'CosNotification_UnsupportedQoS',_,_}}, + 'CosEventDomainAdmin_EventDomain':set_qos(ED, [ForbidDiamonds])), + + ?match(ok, 'CosEventDomainAdmin_EventDomain':remove_connection(ED, CID10)), + ?match(ok, 'CosEventDomainAdmin_EventDomain':remove_connection(ED, CID11)), + ?match(ok, 'CosEventDomainAdmin_EventDomain':remove_connection(ED, CID12)), + ?match(ok, 'CosEventDomainAdmin_EventDomain':remove_connection(ED, CID13)), + ?match(ok, 'CosEventDomainAdmin_EventDomain':set_qos(ED, [ForbidDiamonds])), + ?match([_, _], 'CosEventDomainAdmin_EventDomain':get_qos(ED)), + ?match({'EXCEPTION',{'CosEventDomainAdmin_DiamondCreationForbidden',_,_}}, + 'CosEventDomainAdmin_EventDomain':add_connection(ED, C10)), + + ?match(ok, 'CosEventDomainAdmin_EventDomain':destroy(ED)), + + ok. + +event_domain_factory_api(doc) -> ["Testing the CosEventDomain Factory API", ""]; +event_domain_factory_api(suite) -> []; +event_domain_factory_api(_Config) -> + + Cyclic = #'CosNotification_Property'{name=?CycleDetection, + value=any:create(orber_tc:short(), + ?ForbidCycles)}, + + BadProp = #'CosNotification_Property'{name="Wrong", + value=any:create(orber_tc:short(), + ?ForbidCycles)}, + + BadQoSVal = #'CosNotification_Property'{name=?CycleDetection, + value=any:create(orber_tc:short(), + 10)}, + + Fac = ?match({_,key,_,_,_,_}, + cosEventDomainApp:start_factory()), + ?match([], 'CosEventDomainAdmin_EventDomainFactory':get_all_domains(Fac)), + ?match({'EXCEPTION',{'CosEventDomainAdmin_DomainNotFound',_}}, + 'CosEventDomainAdmin_EventDomainFactory':get_event_domain(Fac, 0)), + {ED,_} = 'CosEventDomainAdmin_EventDomainFactory':create_event_domain(Fac, [Cyclic], []), + ?match([0], 'CosEventDomainAdmin_EventDomainFactory':get_all_domains(Fac)), + ED = 'CosEventDomainAdmin_EventDomainFactory':get_event_domain(Fac, 0), + ?match({'EXCEPTION',{'CosEventDomainAdmin_DomainNotFound',_}}, + 'CosEventDomainAdmin_EventDomainFactory':get_event_domain(Fac, 1)), + corba:dispose(ED), + timer:sleep(3000), + ?match([], 'CosEventDomainAdmin_EventDomainFactory':get_all_domains(Fac)), + ?match({'EXCEPTION',{'CosEventDomainAdmin_DomainNotFound',_}}, + 'CosEventDomainAdmin_EventDomainFactory':get_event_domain(Fac, 0)), + {ED2,_} = ?match({{_,key,_,_,_,_}, _}, + 'CosEventDomainAdmin_EventDomainFactory':create_event_domain(Fac, [], [])), + ?match([1], 'CosEventDomainAdmin_EventDomainFactory':get_all_domains(Fac)), + ?match(ED2, 'CosEventDomainAdmin_EventDomainFactory':get_event_domain(Fac, 1)), + corba:dispose(ED2), + + ?match({'EXCEPTION', {'CosNotification_UnsupportedQoS',_,_}}, + 'CosEventDomainAdmin_EventDomainFactory':create_event_domain(Fac, [BadProp], [])), + ?match({'EXCEPTION',{'CosNotification_UnsupportedAdmin',_,_}}, + 'CosEventDomainAdmin_EventDomainFactory':create_event_domain(Fac, [], [BadProp])), + ?match({'EXCEPTION',{'CosNotification_UnsupportedQoS',_,_}}, + 'CosEventDomainAdmin_EventDomainFactory':create_event_domain(Fac, [BadQoSVal], [])), + ?match({'EXCEPTION',{'CosNotification_UnsupportedAdmin',_,_}}, + 'CosEventDomainAdmin_EventDomainFactory':create_event_domain(Fac, [], [BadQoSVal])), + + corba:dispose(Fac), + ok. diff --git a/lib/cosEventDomain/test/generated_SUITE.erl b/lib/cosEventDomain/test/generated_SUITE.erl new file mode 100644 index 0000000000..6c6996ca79 --- /dev/null +++ b/lib/cosEventDomain/test/generated_SUITE.erl @@ -0,0 +1,390 @@ +%%----------------------------------------------------------------- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2004-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%----------------------------------------------------------------- +%% File : generated_SUITE.erl +%% Purpose : +%%----------------------------------------------------------------- + +-module(generated_SUITE). + +-include("test_server.hrl"). +-include_lib("orber/include/corba.hrl"). + +-define(default_timeout, ?t:minutes(3)). + +-define(match(ExpectedRes, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS) + end + end()). + +-define(nomatch(Not, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + Not -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS); + _ -> + AcTuAlReS + end + end()). + + +-define(checktc(_Op), + fun(TC) -> + case orber_tc:check_tc(TC) of + false -> + io:format("###### ERROR ERROR ######~n~p - ~p~n", [Op, TC]), + ?line exit(TC); + true -> + true + end + end). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1]). + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- +-export([]). +-compile(export_all). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["This suite is for testing IC generated files"]; +all(suite) -> + ['CosEventDomainAdmin', 'CosEventDomainAdmin_DiamondSeq', + 'CosEventDomainAdmin_AlreadyExists', 'CosEventDomainAdmin_DomainIDSeq', + 'CosEventDomainAdmin_Connection', 'CosEventDomainAdmin_ConnectionIDSeq', + 'CosEventDomainAdmin_ConnectionNotFound', 'CosEventDomainAdmin_CycleCreationForbidden', + 'CosEventDomainAdmin_CycleSeq', 'CosEventDomainAdmin_DiamondCreationForbidden', + 'CosEventDomainAdmin_DomainNotFound', 'CosEventDomainAdmin_MemberIDSeq', + 'CosEventDomainAdmin_RouteSeq', 'CosEventDomainAdmin_EventDomainFactory', + 'CosEventDomainAdmin_EventDomain']. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- +init_per_testcase(_Case, Config) -> + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventDomainAdmin' +%% Description: +%%----------------------------------------------------------------- +'CosEventDomainAdmin'(doc) -> ["CosEventDomainAdmin"]; +'CosEventDomainAdmin'(suite) -> []; +'CosEventDomainAdmin'(_) -> + ?match("CycleDetection", 'CosEventDomainAdmin':'CycleDetection'()), + ?match(0, 'CosEventDomainAdmin':'AuthorizeCycles'()), + ?match(1, 'CosEventDomainAdmin':'ForbidCycles'()), + ?match("DiamondDetection", 'CosEventDomainAdmin':'DiamondDetection'()), + ?match(0, 'CosEventDomainAdmin':'AuthorizeDiamonds'()), + ?match(1, 'CosEventDomainAdmin':'ForbidDiamonds'()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventDomainAdmin_DiamondSeq' +%% Description: +%%----------------------------------------------------------------- +'CosEventDomainAdmin_DiamondSeq'(doc) -> ["CosEventDomainAdmin_DiamondSeq"]; +'CosEventDomainAdmin_DiamondSeq'(suite) -> []; +'CosEventDomainAdmin_DiamondSeq'(_) -> + ?match(true, orber_tc:check_tc('CosEventDomainAdmin_DiamondSeq':tc())), + ?match("IDL:omg.org/CosEventDomainAdmin/DiamondSeq:1.0", + 'CosEventDomainAdmin_DiamondSeq':id()), + ?match("CosEventDomainAdmin_DiamondSeq", + 'CosEventDomainAdmin_DiamondSeq':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventDomainAdmin_AlreadyExists' +%% Description: +%%----------------------------------------------------------------- +'CosEventDomainAdmin_AlreadyExists'(doc) -> ["CosEventDomainAdmin_AlreadyExists"]; +'CosEventDomainAdmin_AlreadyExists'(suite) -> []; +'CosEventDomainAdmin_AlreadyExists'(_) -> + ?match(true, orber_tc:check_tc('CosEventDomainAdmin_AlreadyExists':tc())), + ?match("IDL:omg.org/CosEventDomainAdmin/AlreadyExists:1.0", + 'CosEventDomainAdmin_AlreadyExists':id()), + ?match("CosEventDomainAdmin_AlreadyExists", + 'CosEventDomainAdmin_AlreadyExists':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventDomainAdmin_DomainIDSeq' +%% Description: +%%----------------------------------------------------------------- +'CosEventDomainAdmin_DomainIDSeq'(doc) -> ["CosEventDomainAdmin_DomainIDSeq"]; +'CosEventDomainAdmin_DomainIDSeq'(suite) -> []; +'CosEventDomainAdmin_DomainIDSeq'(_) -> + ?match(true, orber_tc:check_tc('CosEventDomainAdmin_DomainIDSeq':tc())), + ?match("IDL:omg.org/CosEventDomainAdmin/DomainIDSeq:1.0", + 'CosEventDomainAdmin_DomainIDSeq':id()), + ?match("CosEventDomainAdmin_DomainIDSeq", + 'CosEventDomainAdmin_DomainIDSeq':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventDomainAdmin_Connection' +%% Description: +%%----------------------------------------------------------------- +'CosEventDomainAdmin_Connection'(doc) -> ["CosEventDomainAdmin_Connection"]; +'CosEventDomainAdmin_Connection'(suite) -> []; +'CosEventDomainAdmin_Connection'(_) -> + ?match(true, orber_tc:check_tc('CosEventDomainAdmin_Connection':tc())), + ?match("IDL:omg.org/CosEventDomainAdmin/Connection:1.0", + 'CosEventDomainAdmin_Connection':id()), + ?match("CosEventDomainAdmin_Connection", + 'CosEventDomainAdmin_Connection':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventDomainAdmin_ConnectionIDSeq' +%% Description: +%%----------------------------------------------------------------- +'CosEventDomainAdmin_ConnectionIDSeq'(doc) -> ["CosEventDomainAdmin_ConnectionIDSeq"]; +'CosEventDomainAdmin_ConnectionIDSeq'(suite) -> []; +'CosEventDomainAdmin_ConnectionIDSeq'(_) -> + ?match(true, orber_tc:check_tc('CosEventDomainAdmin_ConnectionIDSeq':tc())), + ?match("IDL:omg.org/CosEventDomainAdmin/ConnectionIDSeq:1.0", + 'CosEventDomainAdmin_ConnectionIDSeq':id()), + ?match("CosEventDomainAdmin_ConnectionIDSeq", + 'CosEventDomainAdmin_ConnectionIDSeq':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventDomainAdmin_ConnectionNotFound' +%% Description: +%%----------------------------------------------------------------- +'CosEventDomainAdmin_ConnectionNotFound'(doc) -> ["CosEventDomainAdmin_ConnectionNotFound"]; +'CosEventDomainAdmin_ConnectionNotFound'(suite) -> []; +'CosEventDomainAdmin_ConnectionNotFound'(_) -> + ?match(true, orber_tc:check_tc('CosEventDomainAdmin_ConnectionNotFound':tc())), + ?match("IDL:omg.org/CosEventDomainAdmin/ConnectionNotFound:1.0", + 'CosEventDomainAdmin_ConnectionNotFound':id()), + ?match("CosEventDomainAdmin_ConnectionNotFound", + 'CosEventDomainAdmin_ConnectionNotFound':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventDomainAdmin_CycleCreationForbidden' +%% Description: +%%----------------------------------------------------------------- +'CosEventDomainAdmin_CycleCreationForbidden'(doc) -> ["CosEventDomainAdmin_CycleCreationForbidden"]; +'CosEventDomainAdmin_CycleCreationForbidden'(suite) -> []; +'CosEventDomainAdmin_CycleCreationForbidden'(_) -> + ?match(true, orber_tc:check_tc('CosEventDomainAdmin_CycleCreationForbidden':tc())), + ?match("IDL:omg.org/CosEventDomainAdmin/CycleCreationForbidden:1.0", + 'CosEventDomainAdmin_CycleCreationForbidden':id()), + ?match("CosEventDomainAdmin_CycleCreationForbidden", + 'CosEventDomainAdmin_CycleCreationForbidden':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventDomainAdmin_CycleSeq' +%% Description: +%%----------------------------------------------------------------- +'CosEventDomainAdmin_CycleSeq'(doc) -> ["CosEventDomainAdmin_CycleSeq"]; +'CosEventDomainAdmin_CycleSeq'(suite) -> []; +'CosEventDomainAdmin_CycleSeq'(_) -> + ?match(true, orber_tc:check_tc('CosEventDomainAdmin_CycleSeq':tc())), + ?match("IDL:omg.org/CosEventDomainAdmin/CycleSeq:1.0", + 'CosEventDomainAdmin_CycleSeq':id()), + ?match("CosEventDomainAdmin_CycleSeq", + 'CosEventDomainAdmin_CycleSeq':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventDomainAdmin_DiamondCreationForbidden' +%% Description: +%%----------------------------------------------------------------- +'CosEventDomainAdmin_DiamondCreationForbidden'(doc) -> ["CosEventDomainAdmin_DiamondCreationForbidden"]; +'CosEventDomainAdmin_DiamondCreationForbidden'(suite) -> []; +'CosEventDomainAdmin_DiamondCreationForbidden'(_) -> + ?match(true, orber_tc:check_tc('CosEventDomainAdmin_DiamondCreationForbidden':tc())), + ?match("IDL:omg.org/CosEventDomainAdmin/DiamondCreationForbidden:1.0", + 'CosEventDomainAdmin_DiamondCreationForbidden':id()), + ?match("CosEventDomainAdmin_DiamondCreationForbidden", + 'CosEventDomainAdmin_DiamondCreationForbidden':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventDomainAdmin_DomainNotFound' +%% Description: +%%----------------------------------------------------------------- +'CosEventDomainAdmin_DomainNotFound'(doc) -> ["CosEventDomainAdmin_DomainNotFound"]; +'CosEventDomainAdmin_DomainNotFound'(suite) -> []; +'CosEventDomainAdmin_DomainNotFound'(_) -> + ?match(true, orber_tc:check_tc('CosEventDomainAdmin_DomainNotFound':tc())), + ?match("IDL:omg.org/CosEventDomainAdmin/DomainNotFound:1.0", + 'CosEventDomainAdmin_DomainNotFound':id()), + ?match("CosEventDomainAdmin_DomainNotFound", + 'CosEventDomainAdmin_DomainNotFound':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventDomainAdmin_MemberIDSeq' +%% Description: +%%----------------------------------------------------------------- +'CosEventDomainAdmin_MemberIDSeq'(doc) -> ["CosEventDomainAdmin_MemberIDSeq"]; +'CosEventDomainAdmin_MemberIDSeq'(suite) -> []; +'CosEventDomainAdmin_MemberIDSeq'(_) -> + ?match(true, orber_tc:check_tc('CosEventDomainAdmin_MemberIDSeq':tc())), + ?match("IDL:omg.org/CosEventDomainAdmin/MemberIDSeq:1.0", + 'CosEventDomainAdmin_MemberIDSeq':id()), + ?match("CosEventDomainAdmin_MemberIDSeq", + 'CosEventDomainAdmin_MemberIDSeq':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventDomainAdmin_RouteSeq' +%% Description: +%%----------------------------------------------------------------- +'CosEventDomainAdmin_RouteSeq'(doc) -> ["CosEventDomainAdmin_RouteSeq"]; +'CosEventDomainAdmin_RouteSeq'(suite) -> []; +'CosEventDomainAdmin_RouteSeq'(_) -> + ?match(true, orber_tc:check_tc('CosEventDomainAdmin_RouteSeq':tc())), + ?match("IDL:omg.org/CosEventDomainAdmin/RouteSeq:1.0", + 'CosEventDomainAdmin_RouteSeq':id()), + ?match("CosEventDomainAdmin_RouteSeq", + 'CosEventDomainAdmin_RouteSeq':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventDomainAdmin_EventDomainFactory' +%% Description: +%%----------------------------------------------------------------- +'CosEventDomainAdmin_EventDomainFactory'(doc) -> ["CosEventDomainAdmin_EventDomainFactory"]; +'CosEventDomainAdmin_EventDomainFactory'(suite) -> []; +'CosEventDomainAdmin_EventDomainFactory'(_) -> + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomainFactory':oe_tc(create_event_domain)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomainFactory':oe_tc(get_all_domains)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomainFactory':oe_tc(get_event_domain)), + ?match(undefined, 'CosEventDomainAdmin_EventDomainFactory':oe_tc(undefined)), + ?match([_|_], 'CosEventDomainAdmin_EventDomainFactory':oe_get_interface()), + ?match("IDL:omg.org/CosEventDomainAdmin/EventDomainFactory:1.0", + 'CosEventDomainAdmin_EventDomainFactory':typeID()), + check_tc('CosEventDomainAdmin_EventDomainFactory':oe_get_interface()), + ?match(true, 'CosEventDomainAdmin_EventDomainFactory':oe_is_a('CosEventDomainAdmin_EventDomainFactory':typeID())), + ?match(false, 'CosEventDomainAdmin_EventDomainFactory':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosEventDomainAdmin_EventDomain' +%% Description: +%%----------------------------------------------------------------- +'CosEventDomainAdmin_EventDomain'(doc) -> ["CosEventDomainAdmin_EventDomain"]; +'CosEventDomainAdmin_EventDomain'(suite) -> []; +'CosEventDomainAdmin_EventDomain'(_) -> + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(add_channel)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(get_all_channels)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(get_channel)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(remove_channel)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(add_connection)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(get_all_connections)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(get_connection)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(remove_connection)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(get_offer_channels)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(get_subscription_channels)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(destroy)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(get_cycles)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(get_diamonds)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(set_default_consumer_channel)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(set_default_supplier_channel)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(connect_push_consumer)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(connect_pull_consumer)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(connect_push_supplier)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(connect_pull_supplier)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(connect_structured_push_consumer)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(connect_structured_pull_consumer)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(connect_structured_push_supplier)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(connect_structured_pull_supplier)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(connect_sequence_push_consumer)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(connect_sequence_pull_consumer)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(connect_sequence_push_supplier)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(connect_sequence_pull_supplier)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(connect_push_consumer_with_id)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(connect_pull_consumer_with_id)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(connect_push_supplier_with_id)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(connect_pull_supplier_with_id)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(connect_structured_push_consumer_with_id)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(connect_structured_pull_consumer_with_id)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(connect_structured_push_supplier_with_id)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(connect_structured_pull_supplier_with_id)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(connect_sequence_push_consumer_with_id)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(connect_sequence_pull_consumer_with_id)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(connect_sequence_push_supplier_with_id)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(connect_sequence_pull_supplier_with_id)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(get_qos)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(set_qos)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(validate_qos)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(get_admin)), + ?nomatch(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(set_admin)), + ?match(undefined, 'CosEventDomainAdmin_EventDomain':oe_tc(undefined)), + ?match([_|_], 'CosEventDomainAdmin_EventDomain':oe_get_interface()), + ?match("IDL:omg.org/CosEventDomainAdmin/EventDomain:1.0", + 'CosEventDomainAdmin_EventDomain':typeID()), + check_tc('CosEventDomainAdmin_EventDomain':oe_get_interface()), + ?match(true, 'CosEventDomainAdmin_EventDomain':oe_is_a('CosEventDomainAdmin_EventDomain':typeID())), + ?match(true, 'CosEventDomainAdmin_EventDomain':oe_is_a('CosNotification_QoSAdmin':typeID())), + ?match(true, 'CosEventDomainAdmin_EventDomain':oe_is_a('CosNotification_AdminPropertiesAdmin':typeID())), + ?match(false, 'CosEventDomainAdmin_EventDomain':oe_is_a("wrong")), + ok. + + + +%%----------------------------------------------------------------- +%% MISC functions +%%----------------------------------------------------------------- +check_tc([]) -> + ok; +check_tc([{Op, {RetType, InParameters, OutParameters}}|T]) -> + io:format("checked - ~s~n", [Op]), + lists:all(?checktc(Op), [RetType|InParameters]), + lists:all(?checktc(Op), OutParameters), + check_tc(T). + + diff --git a/lib/cosEventDomain/vsn.mk b/lib/cosEventDomain/vsn.mk index 483b130819..dceee34181 100644 --- a/lib/cosEventDomain/vsn.mk +++ b/lib/cosEventDomain/vsn.mk @@ -1,7 +1,9 @@ -COSEVENTDOMAIN_VSN = 1.1.8 +COSEVENTDOMAIN_VSN = 1.1.9 -TICKETS = OTP-8353 \ +TICKETS = OTP-8543 + +TICKETS_1.1.8 = OTP-8353 \ OTP-8355 TICKETS_1.1.7 = OTP-8201 diff --git a/lib/cosNotification/doc/src/notes.xml b/lib/cosNotification/doc/src/notes.xml index 8062c883cf..de5a3e5f4c 100644 --- a/lib/cosNotification/doc/src/notes.xml +++ b/lib/cosNotification/doc/src/notes.xml @@ -33,6 +33,17 @@ <section> <title>cosNotification 1.1.14</title> + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p> + Test suites published.</p> + <p> + Own Id: OTP-8543 Aux Id:</p> + </item> + </list> + </section> <section> <title>Fixed Bugs and Malfunctions</title> diff --git a/lib/cosNotification/test/Makefile b/lib/cosNotification/test/Makefile new file mode 100644 index 0000000000..df8f9e919b --- /dev/null +++ b/lib/cosNotification/test/Makefile @@ -0,0 +1,190 @@ +# +# %CopyrightBegin% +# +# Copyright Ericsson AB 1999-2009. All Rights Reserved. +# +# The contents of this file are subject to the Erlang Public License, +# Version 1.1, (the "License"); you may not use this file except in +# compliance with the License. You should have received a copy of the +# Erlang Public License along with this software. If not, it can be +# retrieved online at http://www.erlang.org/. +# +# Software distributed under the License is distributed on an "AS IS" +# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +# the License for the specific language governing rights and limitations +# under the License. +# +# %CopyrightEnd% +# +# +include $(ERL_TOP)/make/target.mk +include $(ERL_TOP)/make/$(TARGET)/otp.mk + +# ---------------------------------------------------- +# Application version +# ---------------------------------------------------- +include ../vsn.mk +VSN=$(COSNOTIFICATION_VSN) +# ---------------------------------------------------- +# Release directory specification +# ---------------------------------------------------- +RELSYSDIR = $(RELEASE_PATH)/cosNotification_test + +# ---------------------------------------------------- +# Target Specs +# ---------------------------------------------------- +TEST_SPEC_FILE = cosNotification.spec + + +IDL_FILES = + +IDLOUTDIR = idl_output + +MODULES = \ + notification_SUITE \ + grammar_SUITE \ + eventDB_SUITE \ + generated_SUITE \ + notify_test_impl + +GEN_MODULES = \ + oe_notify_test_server \ + notify_test_data \ + notify_test_computer \ + notify_test_studies \ + notify_test_ShortArray \ + notify_test_uni1 \ + notify_test_uni2 \ + notify_test_X \ + notify_test_K \ + notify_test_SeqPushC \ + notify_test_StrPushC \ + notify_test_AnyPushC \ + notify_test_SeqPullC \ + notify_test_StrPullC \ + notify_test_AnyPullC \ + notify_test_SeqPushS \ + notify_test_StrPushS \ + notify_test_AnyPushS \ + notify_test_SeqPullS \ + notify_test_StrPullS \ + notify_test_AnyPullS \ + notify_test_funcs + +GEN_HRL_FILES = \ + oe_notify_test_server.hrl \ + notify_test_SeqPushC.hrl \ + notify_test_StrPushC.hrl \ + notify_test_AnyPushC.hrl \ + notify_test_SeqPullC.hrl \ + notify_test_StrPullC.hrl \ + notify_test_AnyPullC.hrl \ + notify_test_SeqPushS.hrl \ + notify_test_StrPushS.hrl \ + notify_test_AnyPushS.hrl \ + notify_test_SeqPullS.hrl \ + notify_test_StrPullS.hrl \ + notify_test_AnyPullS.hrl \ + notify_test.hrl \ + notify_test_funcs.hrl + +ERL_FILES = $(MODULES:%=%.erl) + +HRL_FILES = + +GEN_FILES = \ + $(GEN_HRL_FILES:%=$(IDLOUTDIR)/%) \ + $(GEN_MODULES:%=$(IDLOUTDIR)/%.erl) + +GEN_TARGET_FILES = $(GEN_MODULES:%=$(IDLOUTDIR)/%.$(EMULATOR)) + +SUITE_TARGET_FILES = $(MODULES:%=%.$(EMULATOR)) + +TARGET_FILES = \ + $(GEN_TARGET_FILES) \ + $(SUITE_TARGET_FILES) + + +# ---------------------------------------------------- +# PROGRAMS +# ---------------------------------------------------- +LOCAL_CLASSPATH = $(ERL_TOP)lib/cosNotification/priv:$(ERL_TOP)lib/cosNotification/test +# ---------------------------------------------------- +# FLAGS +# ---------------------------------------------------- +ERL_IDL_FLAGS += \ + -pa $(ERL_TOP)/lib/cosNotification/ebin \ + -pa $(ERL_TOP)/lib/cosNotification/src \ + -pa $(ERL_TOP)/lib/cosTime/ebin \ + -pa $(ERL_TOP)/lib/cosTime/include \ + -pa $(ERL_TOP)/lib/orber/ebin \ + -pa $(ERL_TOP)/lib/ic/ebin \ + -pa $(ERL_TOP)/lib/cosNotification/include \ + -I$(ERL_TOP)/lib/cosEvent/src \ + -I$(ERL_TOP)/lib/cosNotification/include \ + +ERL_COMPILE_FLAGS += \ + $(ERL_IDL_FLAGS) \ + -pa $(ERL_TOP)/lib/orber/include \ + -pa $(ERL_TOP)/internal_tools/test_server/ebin \ + -pa $(ERL_TOP)/lib/cosNotification/ebin \ + -pa $(ERL_TOP)/lib/cosNotification/test/idl_output \ + -pa $(ERL_TOP)/lib/cosTime/ebin \ + -pa $(ERL_TOP)/lib/cosTime/include \ + -pa $(ERL_TOP)/lib/cosNotification/include \ + -pa $(ERL_TOP)/lib/ic/ebin \ + -I$(ERL_TOP)/lib/cosTime/ebin \ + -I$(ERL_TOP)/lib/cosTime/include \ + -I$(ERL_TOP)/lib/orber/include \ + -I$(ERL_TOP)/lib/cosNotification/src \ + -I$(ERL_TOP)/lib/cosNotification/include \ + -I$(ERL_TOP)/lib/cosNotification \ + -I$(ERL_TOP)/lib/cosNotification/test/$(IDLOUTDIR) \ + -I$(ERL_TOP)/lib/test_server/include + +# ---------------------------------------------------- +# Targets +# ---------------------------------------------------- + + +tests debug opt: $(TARGET_FILES) + +clean: + rm -f idl_output/* + rm -f $(TARGET_FILES) + rm -f errs core *~ + +docs: + +# ---------------------------------------------------- +# Special Targets +# ---------------------------------------------------- + +TGT_TEST = \ + $(GEN_HRL_FILES:%=$(IDLOUTDIR)/%) \ + $(GEN_MODULES:%=$(IDLOUTDIR)/%.erl) + +$(TGT_TEST): notify_test_server.idl + erlc $(ERL_COMPILE_FLAGS) -o$(IDLOUTDIR) \ + +'{cfgfile,"notify_test_server.cfg"}' notify_test_server.idl + +# ---------------------------------------------------- +# Release Targets +# ---------------------------------------------------- +# We don't copy generated intermediate erlang and hrl files + +include $(ERL_TOP)/make/otp_release_targets.mk + +release_spec: + +release_docs_spec: + +release_tests_spec: tests + $(INSTALL_DIR) $(RELSYSDIR) + $(INSTALL_DATA) $(IDL_FILES) $(TEST_SPEC_FILE) \ + $(ERL_FILES) $(RELSYSDIR) + $(INSTALL_DIR) $(RELSYSDIR)/$(IDLOUTDIR) + $(INSTALL_DATA) $(GEN_TARGET_FILES) $(GEN_FILES) \ + $(RELSYSDIR)/$(IDLOUTDIR) + $(INSTALL_DATA) $(SUITE_TARGET_FILES) $(RELSYSDIR) + diff --git a/lib/cosNotification/test/cosNotification.spec b/lib/cosNotification/test/cosNotification.spec new file mode 100644 index 0000000000..8df89e7908 --- /dev/null +++ b/lib/cosNotification/test/cosNotification.spec @@ -0,0 +1,19 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1999-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% +%% +{topcase, {dir, "../cosNotification_test"}}. diff --git a/lib/cosNotification/test/eventDB_SUITE.erl b/lib/cosNotification/test/eventDB_SUITE.erl new file mode 100644 index 0000000000..9ddfb3d902 --- /dev/null +++ b/lib/cosNotification/test/eventDB_SUITE.erl @@ -0,0 +1,902 @@ +%%-------------------------------------------------------------------- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2000-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%-------------------------------------------------------------------- +%% File : eventDB_SUITE.erl +%% Purpose : +%%-------------------------------------------------------------------- + +-module(eventDB_SUITE). +%%--------------- INCLUDES ----------------------------------- +-include_lib("orber/include/corba.hrl"). +-include_lib("orber/include/ifr_types.hrl"). +%% cosEvent files. +-include_lib("cosEvent/include/CosEventChannelAdmin.hrl"). +%% cosTime files. +-include_lib("cosTime/include/TimeBase.hrl"). +%% Application files +-include_lib("cosNotification/include/CosNotification.hrl"). +-include_lib("cosNotification/include/CosNotifyChannelAdmin.hrl"). +-include_lib("cosNotification/include/CosNotifyComm.hrl"). +-include_lib("cosNotification/include/CosNotifyFilter.hrl"). + +-include_lib("cosNotification/src/CosNotification_Definitions.hrl"). + +-include("idl_output/notify_test.hrl"). + +-include("test_server.hrl"). + +%%--------------- DEFINES ------------------------------------ +-define(default_timeout, ?t:minutes(20)). +-define(match(ExpectedRes, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + io:format("------ CORRECT RESULT ------~n~p~n", + [AcTuAlReS]), + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS) + end + end()). + + +-define(EVENT1, ?not_CreateSE("","event1","", + [#'CosNotification_Property' + {name="Priority", + value=any:create(orber_tc:short(), 0)}, + #'CosNotification_Property' + {name="StartTime", + value=any:create('TimeBase_UtcT':tc(), + #'TimeBase_UtcT' + {time=900000000, + inacclo=0, inacchi=0, tdf=2})}, + #'CosNotification_Property' + {name="StopTime", + value=any:create('TimeBase_UtcT':tc(), + #'TimeBase_UtcT' + {time=900000000, + inacclo=0, inacchi=0, tdf=2})}, + #'CosNotification_Property' + {name="Timeout", + value=any:create(orber_tc:unsigned_long_long(), 900000000)}], + [], any:create(orber_tc:null(), null))). +-define(EVENT2, ?not_CreateSE("","event2","", + [#'CosNotification_Property' + {name="Priority", + value=any:create(orber_tc:short(), 0)}, + #'CosNotification_Property' + {name="StartTime", + value=any:create('TimeBase_UtcT':tc(), + #'TimeBase_UtcT' + {time=800000000, + inacclo=0, inacchi=0, tdf=2})}, + #'CosNotification_Property' + {name="StopTime", + value=any:create('TimeBase_UtcT':tc(), + #'TimeBase_UtcT' + {time=800000000, + inacclo=0, inacchi=0, tdf=2})}, + #'CosNotification_Property' + {name="Timeout", + value=any:create(orber_tc:unsigned_long_long(), 800000000)}], + [], any:create(orber_tc:null(), null))). +-define(EVENT3, ?not_CreateSE("","event3","", + [#'CosNotification_Property' + {name="Priority", + value=any:create(orber_tc:short(), 0)}, + #'CosNotification_Property' + {name="StartTime", + value=any:create('TimeBase_UtcT':tc(), + #'TimeBase_UtcT' + {time=700000000, + inacclo=0, inacchi=0, tdf=2})}, + #'CosNotification_Property' + {name="StopTime", + value=any:create('TimeBase_UtcT':tc(), + #'TimeBase_UtcT' + {time=700000000, + inacclo=0, inacchi=0, tdf=2})}, + #'CosNotification_Property' + {name="Timeout", + value=any:create(orber_tc:unsigned_long_long(), 700000000)}], + [], any:create(orber_tc:null(), null))). +-define(EVENT4, ?not_CreateSE("","event4","", + [#'CosNotification_Property' + {name="Priority", + value=any:create(orber_tc:short(), 2)}, + #'CosNotification_Property' + {name="StartTime", + value=any:create('TimeBase_UtcT':tc(), + #'TimeBase_UtcT' + {time=300000000, + inacclo=0, inacchi=0, tdf=2})}, + #'CosNotification_Property' + {name="StopTime", + value=any:create('TimeBase_UtcT':tc(), + #'TimeBase_UtcT' + {time=300000000, + inacclo=0, inacchi=0, tdf=2})}, + #'CosNotification_Property' + {name="Timeout", + value=any:create(orber_tc:unsigned_long_long(), 300000000)}], + [], any:create(orber_tc:null(), null))). +-define(EVENT5, ?not_CreateSE("","event5","", + [#'CosNotification_Property' + {name="Priority", + value=any:create(orber_tc:short(), 2)}, + #'CosNotification_Property' + {name="StartTime", + value=any:create('TimeBase_UtcT':tc(), + #'TimeBase_UtcT' + {time=200000000, + inacclo=0, inacchi=0, tdf=2})}, + #'CosNotification_Property' + {name="StopTime", + value=any:create('TimeBase_UtcT':tc(), + #'TimeBase_UtcT' + {time=200000000, + inacclo=0, inacchi=0, tdf=2})}, + #'CosNotification_Property' + {name="Timeout", + value=any:create(orber_tc:unsigned_long_long(), 200000000)}], + [], any:create(orber_tc:null(), null))). +-define(EVENT6, ?not_CreateSE("","event6","", + [#'CosNotification_Property' + {name="Priority", + value=any:create(orber_tc:short(), 0)}, + #'CosNotification_Property' + {name="StartTime", + value=any:create('TimeBase_UtcT':tc(), + #'TimeBase_UtcT' + {time=500000000, + inacclo=0, inacchi=0, tdf=2})}, + #'CosNotification_Property' + {name="StopTime", + value=any:create('TimeBase_UtcT':tc(), + #'TimeBase_UtcT' + {time=500000000, + inacclo=0, inacchi=0, tdf=2})}, + #'CosNotification_Property' + {name="Timeout", + value=any:create(orber_tc:unsigned_long_long(), 500000000)}], + [], any:create(orber_tc:null(), null))). +-define(EVENT7, ?not_CreateSE("","event7","", + [#'CosNotification_Property' + {name="Priority", + value=any:create(orber_tc:short(), -1)}, + #'CosNotification_Property' + {name="StartTime", + value=any:create('TimeBase_UtcT':tc(), + #'TimeBase_UtcT' + {time=400000000, + inacclo=0, inacchi=0, tdf=2})}, + #'CosNotification_Property' + {name="StopTime", + value=any:create('TimeBase_UtcT':tc(), + #'TimeBase_UtcT' + {time=400000000, + inacclo=0, inacchi=0, tdf=2})}, + #'CosNotification_Property' + {name="Timeout", + value=any:create(orber_tc:unsigned_long_long(), 400000000)}], + [], any:create(orber_tc:null(), null))). +-define(EVENT8, ?not_CreateSE("","event8","", + [#'CosNotification_Property' + {name="Priority", + value=any:create(orber_tc:short(), -1)}, + #'CosNotification_Property' + {name="StartTime", + value=any:create('TimeBase_UtcT':tc(), + #'TimeBase_UtcT' + {time=600000000, + inacclo=0, inacchi=0, tdf=2})}, + #'CosNotification_Property' + {name="StopTime", + value=any:create('TimeBase_UtcT':tc(), + #'TimeBase_UtcT' + {time=600000000, + inacclo=0, inacchi=0, tdf=2})}, + #'CosNotification_Property' + {name="Timeout", + value=any:create(orber_tc:unsigned_long_long(), 600000000)}], + [], any:create(orber_tc:null(), null))). +-define(EVENT9, ?not_CreateSE("","event9","", + [#'CosNotification_Property' + {name="Priority", + value=any:create(orber_tc:short(), 0)}, + #'CosNotification_Property' + {name="StartTime", + value=any:create('TimeBase_UtcT':tc(), + #'TimeBase_UtcT' + {time=100000000, + inacclo=0, inacchi=0, tdf=2})}, + #'CosNotification_Property' + {name="StopTime", + value=any:create('TimeBase_UtcT':tc(), + #'TimeBase_UtcT' + {time=100000000, + inacclo=0, inacchi=0, tdf=2})}, + #'CosNotification_Property' + {name="Timeout", + value=any:create(orber_tc:unsigned_long_long(), 100000000)}], + [], any:create(orber_tc:null(), null))). + +-define(EVENTS, [?EVENT1, ?EVENT2, ?EVENT3, ?EVENT4, ?EVENT5, ?EVENT6, ?EVENT7, + ?EVENT8, ?EVENT9]). + + +-define(PRIOORDER, [?EVENT4, ?EVENT5, ?EVENT1, ?EVENT2, ?EVENT3, ?EVENT6, ?EVENT9, + ?EVENT7, ?EVENT8]). + +-define(FIFOORDER, ?EVENTS). + +-define(DEADLINEORDER, [?EVENT9, ?EVENT5, ?EVENT4, ?EVENT7, ?EVENT6, ?EVENT8, ?EVENT3, + ?EVENT2, ?EVENT1]). + +-define(NO_OF_EVENTS, 9). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1, cases/0, init_all/1, finish_all/1, reorder_api/1, lookup_api/1, + discard_api/1, max_events_api/1, gc_api/1, auto_gc_api/1, + start_stop_time_api/1, mapping_filter_api/1, persisten_event_api/1, + init_per_testcase/2, fin_per_testcase/2]). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["API tests for the cosNotification interfaces", ""]; +all(suite) -> {req, + [mnesia, orber], + {conf, init_all, cases(), finish_all}}. + +cases() -> + [persisten_event_api, start_stop_time_api, mapping_filter_api, + max_events_api, discard_api, reorder_api, lookup_api, gc_api, + auto_gc_api]. + + + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- + +init_per_testcase(_Case, Config) -> + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +init_all(Config) -> + Path = code:which(?MODULE), + code:add_pathz(filename:join(filename:dirname(Path), "idl_output")), + orber:jump_start(), + cosTime:install_time(), + cosTime:start(), + if + is_list(Config) -> + Config; + true -> + exit("Config not a list") + end. + +finish_all(Config) -> + Path = code:which(?MODULE), + code:del_path(filename:join(filename:dirname(Path), "idl_output")), + cosTime:stop(), + cosTime:uninstall_time(), + orber:jump_stop(), + Config. + + +%%----------------------------------------------------------------- +%% cosNotification_eventDB lookup API tests +%%----------------------------------------------------------------- +mapping_filter_api(doc) -> ["The event DB is used to store events which cannot be", + "delivered at once. This case is supposed to test", + "that the events are delivered in the correct order", + "if a MappingFilter have benn associated.", + ""]; +mapping_filter_api(suite) -> []; +mapping_filter_api(_Config) -> + InitQoS = ?not_CreateInitQoS(), + InitQoS2 = ?not_SetMaxEventsPerConsumer(InitQoS,100), + InitQoS3 = ?not_SetStartTimeSupported(InitQoS2, false), + InitQoS4 = ?not_SetStopTimeSupported(InitQoS3, true), + QoS = ?not_SetDiscardPolicy(InitQoS4, ?not_AnyOrder), + + PriorityQoS = ?not_SetOrderPolicy(QoS, ?not_PriorityOrder), + DeadlineQoS = ?not_SetOrderPolicy(QoS, ?not_DeadlineOrder), + + %% "Calculate" data once: + %% NOTE! Even though the an Event do not match any of the constarints the + %% default value will be used. Hence, the events will not be stored in the + %% way described in the definitions above. For example, when using deadline order + %% all the events will be stored in FIFO order since the usag of a MappingFilter + %% all evnts will have the same deadline (except event6). + Events = ?EVENTS, + PrioOrder = [?EVENT6, ?EVENT1, ?EVENT2, ?EVENT3, ?EVENT4, ?EVENT5, ?EVENT7, + ?EVENT8, ?EVENT9], + DeadlineOrder = [?EVENT1, ?EVENT2, ?EVENT3, ?EVENT4, ?EVENT5, ?EVENT7, ?EVENT8, + ?EVENT9], + + + FiFac = 'CosNotifyFilter_FilterFactory':oe_create(), + ?match({_,key,_,_,_,_}, FiFac), + + PrioFilter = 'CosNotifyFilter_FilterFactory': + create_mapping_filter(FiFac, "EXTENDED_TCL", any:create(orber_tc:short(), 0)), + DLFilter = 'CosNotifyFilter_FilterFactory': + create_mapping_filter(FiFac, "EXTENDED_TCL", any:create(orber_tc:unsigned_long_long(), 1000000000)), + + ?match([_], + 'CosNotifyFilter_MappingFilter':add_mapping_constraints(PrioFilter, + [#'CosNotifyFilter_MappingConstraintPair' + {constraint_expression = #'CosNotifyFilter_ConstraintExp' + {event_types = [#'CosNotification_EventType' + {domain_name = "", + type_name = "event6"}], + constraint_expr = "2==2"}, + result_to_set = any:create(orber_tc:short(), 10)}])), + ?match([_], + 'CosNotifyFilter_MappingFilter':add_mapping_constraints(DLFilter, + [#'CosNotifyFilter_MappingConstraintPair' + {constraint_expression = #'CosNotifyFilter_ConstraintExp' + {event_types = [#'CosNotification_EventType' + {domain_name = "", + type_name = "event6"}], + constraint_expr = "2==2"}, + result_to_set = any:create(orber_tc:unsigned_long_long(), 200000000)}])), + + + do_lookup(PriorityQoS, Events, PrioOrder, "Priority Order", undefined, PrioFilter, 0), + do_lookup(DeadlineQoS, Events, DeadlineOrder, "Deadline Order", DLFilter, undefined, 23000), + ok. + +do_lookup(QoS, Events, Return, Txt, DLFilter, PrioFilter, Timeout) -> + io:format("#################### ~s ###################~n", [Txt]), + Ref = cosNotification_eventDB:create_db(QoS, 60, 50, undefined), + create_loop(Events, Ref, DLFilter, PrioFilter), + timer:sleep(Timeout), + ?match({Return,_}, cosNotification_eventDB:get_events(Ref, ?NO_OF_EVENTS)), + cosNotification_eventDB:destroy_db(Ref). + +%%----------------------------------------------------------------- +%% cosNotification_eventDB discard API tests +%%----------------------------------------------------------------- +discard_api(doc) -> ["The event DB is used to store events which cannot be", + "delivered at once. If MaxEvents limit is reached there", + "different ways we can discard the. This case will test", + "all permutations of order and discard policies.", + ""]; +discard_api(suite) -> []; +discard_api(_Config) -> + InitQoS1 = ?not_CreateInitQoS(), + InitQoS2 = ?not_SetPriority(InitQoS1, 10), + InitQoS3 = ?not_SetStartTimeSupported(InitQoS2, false), + QoS = ?not_SetMaxEventsPerConsumer(InitQoS3, 5), + %% The different order policies. To each order we must apply every possible + %% discard policy to each order policy setting. We also have to test and + %% change the policies for each setting. + AnyQoS = ?not_SetOrderPolicy(QoS, ?not_AnyOrder), + PriorityQoS = ?not_SetOrderPolicy(QoS, ?not_PriorityOrder), + FifoQoS = ?not_SetOrderPolicy(QoS, ?not_FifoOrder), + DeadlineQoS = ?not_SetOrderPolicy(QoS, ?not_DeadlineOrder), + + Events = ?EVENTS, + + %% Test using Any discard policy + do_discard(Events, ?not_SetDiscardPolicy(AnyQoS, ?not_AnyOrder), + [?EVENT4, ?EVENT5, ?EVENT1, ?EVENT2, ?EVENT3], + "Discard and Order eq. Any"), + do_discard(Events, ?not_SetDiscardPolicy(PriorityQoS, ?not_AnyOrder), + [?EVENT4, ?EVENT5, ?EVENT1, ?EVENT2, ?EVENT3], + "Discard Any and Order Priority"), + do_discard(Events, ?not_SetDiscardPolicy(FifoQoS, ?not_AnyOrder), + [?EVENT1, ?EVENT2, ?EVENT3, ?EVENT4, ?EVENT5], + "Discard Any and Order Fifo"), + do_discard(Events, ?not_SetDiscardPolicy(DeadlineQoS, ?not_AnyOrder), + [?EVENT5, ?EVENT4, ?EVENT3, ?EVENT2, ?EVENT1], + "Discard Any and Order Deadline"), + + %% Test using RejectNewEvents discard policy + do_discard(Events, ?not_SetDiscardPolicy(AnyQoS, ?not_RejectNewEvents), + [?EVENT4, ?EVENT5, ?EVENT1, ?EVENT2, ?EVENT3], + "Discard RejectNewEvents and Order Any"), + do_discard(Events, ?not_SetDiscardPolicy(PriorityQoS, ?not_RejectNewEvents), + [?EVENT4, ?EVENT5, ?EVENT1, ?EVENT2, ?EVENT3], + "Discard RejectNewEvents and Order Priority"), + do_discard(Events, ?not_SetDiscardPolicy(FifoQoS, ?not_RejectNewEvents), + [?EVENT1, ?EVENT2, ?EVENT3, ?EVENT4, ?EVENT5], + "Discard RejectNewEvents and Order Fifo"), + do_discard(Events, ?not_SetDiscardPolicy(DeadlineQoS, ?not_RejectNewEvents), + [?EVENT5, ?EVENT4, ?EVENT3, ?EVENT2, ?EVENT1], + "Discard RejectNewEvents and Order Deadline"), + + %% Test using Lifo discard policy + do_discard(Events, ?not_SetDiscardPolicy(AnyQoS, ?not_LifoOrder), + [?EVENT4, ?EVENT5, ?EVENT1, ?EVENT2, ?EVENT3], + "Discard Lifo and Order Any"), + do_discard(Events, ?not_SetDiscardPolicy(PriorityQoS, ?not_LifoOrder), + [?EVENT4, ?EVENT5, ?EVENT1, ?EVENT2, ?EVENT3], + "Discard Lifo and Order Priority"), + do_discard(Events, ?not_SetDiscardPolicy(FifoQoS, ?not_LifoOrder), + [?EVENT1, ?EVENT2, ?EVENT3, ?EVENT4, ?EVENT5], + "Discard Lifo and Order Fifo"), + do_discard(Events, ?not_SetDiscardPolicy(DeadlineQoS, ?not_LifoOrder), + [?EVENT5, ?EVENT4, ?EVENT3, ?EVENT2, ?EVENT1], + "Discard Lifo and Order Deadline"), + + %% Test using Fifo discard policy + do_discard(Events, ?not_SetDiscardPolicy(AnyQoS, ?not_FifoOrder), + [?EVENT5, ?EVENT6, ?EVENT9, ?EVENT7, ?EVENT8], + "Discard Fifo and Order Any"), + do_discard(Events, ?not_SetDiscardPolicy(PriorityQoS, ?not_FifoOrder), + [?EVENT5, ?EVENT6, ?EVENT9, ?EVENT7, ?EVENT8], + "Discard Fifo and Order Priority"), + do_discard(Events, ?not_SetDiscardPolicy(FifoQoS, ?not_FifoOrder), + [?EVENT5, ?EVENT6, ?EVENT7, ?EVENT8, ?EVENT9], + "Discard Fifo and Order Fifo"), + do_discard(Events, ?not_SetDiscardPolicy(DeadlineQoS, ?not_FifoOrder), + [?EVENT9, ?EVENT5, ?EVENT7, ?EVENT6, ?EVENT8], + "Discard Fifo and Order Deadline"), + + %% Test using Priority discard policy + do_discard(Events, ?not_SetDiscardPolicy(AnyQoS, ?not_PriorityOrder), + [?EVENT4, ?EVENT5, ?EVENT1, ?EVENT2, ?EVENT3], + "Discard Priority and Order Any"), + do_discard(Events, ?not_SetDiscardPolicy(PriorityQoS, ?not_PriorityOrder), + [?EVENT4, ?EVENT5, ?EVENT1, ?EVENT2, ?EVENT3], + "Discard Priority and Order Priority"), + do_discard(Events, ?not_SetDiscardPolicy(FifoQoS, ?not_PriorityOrder), + [?EVENT1, ?EVENT2, ?EVENT3, ?EVENT4, ?EVENT5], + "Discard Priority and Order Fifo"), + do_discard(Events, ?not_SetDiscardPolicy(DeadlineQoS, ?not_PriorityOrder), + [?EVENT5, ?EVENT4, ?EVENT3, ?EVENT2, ?EVENT1], + "Discard Priority and Order Deadline"), + + %% Test using Deadline discard policy + do_discard(Events, ?not_SetDiscardPolicy(AnyQoS, ?not_DeadlineOrder), + [?EVENT1, ?EVENT2, ?EVENT3, ?EVENT6, ?EVENT8], + "Discard Deadline and Order Any"), + do_discard(Events, ?not_SetDiscardPolicy(PriorityQoS, ?not_DeadlineOrder), + [?EVENT1, ?EVENT2, ?EVENT3, ?EVENT6, ?EVENT8], + "Discard Deadline and Order Priority"), + do_discard(Events, ?not_SetDiscardPolicy(FifoQoS, ?not_DeadlineOrder), + [?EVENT1, ?EVENT2, ?EVENT3, ?EVENT6, ?EVENT8], + "Discard Deadline and Order Fifo"), + do_discard(Events, ?not_SetDiscardPolicy(DeadlineQoS, ?not_DeadlineOrder), + [?EVENT6, ?EVENT8, ?EVENT3, ?EVENT2, ?EVENT1], + "Discard Deadline and Order Deadline"), + + ok. + +do_discard(Events, QoS, Reply, Txt) -> + io:format("################# ~s #################~n", [Txt]), + Ref = cosNotification_eventDB:create_db(QoS, 60, 50, undefined), + create_loop(Events, Ref), + ?match({Reply,_}, cosNotification_eventDB:get_events(Ref, ?NO_OF_EVENTS)), + cosNotification_eventDB:destroy_db(Ref). + + +%%----------------------------------------------------------------- +%% cosNotification_eventDB lookup API tests +%%----------------------------------------------------------------- +lookup_api(doc) -> ["The event DB is used to store events which cannot be", + "delivered at once. This case is supposed to test", + "that the events are delivered in the correct order.", + ""]; +lookup_api(suite) -> []; +lookup_api(_Config) -> + InitQoS = ?not_CreateInitQoS(), + InitQoS2 = ?not_SetMaxEventsPerConsumer(InitQoS,100), + InitQoS3 = ?not_SetStartTimeSupported(InitQoS2, false), + QoS = ?not_SetDiscardPolicy(InitQoS3, ?not_AnyOrder), + + AnyQoS = ?not_SetOrderPolicy(QoS, ?not_AnyOrder), + PriorityQoS = ?not_SetOrderPolicy(QoS, ?not_PriorityOrder), + FifoQoS = ?not_SetOrderPolicy(QoS, ?not_FifoOrder), + DeadlineQoS = ?not_SetOrderPolicy(QoS, ?not_DeadlineOrder), + + %% "Calculate" data once: + Events = ?EVENTS, + PrioOrder = ?PRIOORDER, + FifoOrder = ?FIFOORDER, + DeadlineOrder = ?DEADLINEORDER, + + do_lookup(PriorityQoS, Events, PrioOrder, "Priority Order"), + do_lookup(FifoQoS, Events, FifoOrder, "Fifo Order"), + do_lookup(DeadlineQoS, Events, DeadlineOrder, "Deadline Order"), + do_lookup(AnyQoS, Events, PrioOrder, "Any Order"), + ok. + +do_lookup(QoS, Events, Return, Txt) -> + io:format("#################### ~s ###################~n", [Txt]), + Ref = cosNotification_eventDB:create_db(QoS, 60, 50, undefined), + create_loop(Events, Ref), + ?match({Return,_}, cosNotification_eventDB:get_events(Ref, ?NO_OF_EVENTS)), + cosNotification_eventDB:destroy_db(Ref). + + +%%----------------------------------------------------------------- +%% cosNotification_eventDB max events API tests +%%----------------------------------------------------------------- +max_events_api(doc) -> ["The event DB is used to store events which cannot be", + "delivered at once. If the MaxEvents QoS is updated we must be", + "able to reduce the amount of stored events.", + ""]; +max_events_api(suite) -> []; +max_events_api(_Config) -> + + QoS1 = ?not_CreateInitQoS(), + QoS2 = ?not_SetOrderPolicy(QoS1, ?not_FifoOrder), + QoS3 = ?not_SetDiscardPolicy(QoS2, ?not_RejectNewEvents), + QoS4 = ?not_SetStartTimeSupported(QoS3, false), + QoS_NO_OF_EVENTS = ?not_SetMaxEventsPerConsumer(QoS4, ?NO_OF_EVENTS), + QoS_5_EVENTS = ?not_SetMaxEventsPerConsumer(QoS4, 5), + + Events = ?EVENTS, + Events5 = [?EVENT1, ?EVENT2, ?EVENT3, ?EVENT4, ?EVENT5], + + %% Initiate DB and 'NO_OF_EVENTS' events. + Ref1 = cosNotification_eventDB:create_db(QoS_NO_OF_EVENTS, 60, 50, undefined), + create_loop(Events, Ref1), + + %% Reduce the limit to 5 and extract all and see if it's ok. + Ref2 = cosNotification_eventDB:update(Ref1, QoS_5_EVENTS), + ?match({Events5, true}, cosNotification_eventDB:get_events(Ref2, ?NO_OF_EVENTS)), + + %% Add 'NO_OF_EVENTS' events. Since the only allow 5 events the DB will only + %% contain 5 events. + create_loop(Events, Ref2), + Ref3 = cosNotification_eventDB:update(Ref2, QoS_NO_OF_EVENTS), + + ?match({Events5, true}, cosNotification_eventDB:get_events(Ref3, ?NO_OF_EVENTS)), + create_loop(Events, Ref3), + ?match({Events, true}, cosNotification_eventDB:get_events(Ref3, ?NO_OF_EVENTS)), + cosNotification_eventDB:destroy_db(Ref3), + ok. + + +%%----------------------------------------------------------------- +%% cosNotification_eventDB persisten events API tests +%%----------------------------------------------------------------- +persisten_event_api(doc) -> ["The event DB is used to store events which cannot be", + "delivered at once.", + ""]; +persisten_event_api(suite) -> []; +persisten_event_api(_Config) -> + + QoS1 = ?not_CreateInitQoS(), + QoS2 = ?not_SetOrderPolicy(QoS1, ?not_FifoOrder), + QoS3 = ?not_SetDiscardPolicy(QoS2, ?not_RejectNewEvents), + QoS4 = ?not_SetStartTimeSupported(QoS3, false), + QoS = ?not_SetMaxEventsPerConsumer(QoS4, ?NO_OF_EVENTS), + + Event1 = ?EVENT1, + + Ref = cosNotification_eventDB:create_db(QoS, 60, 50, undefined), + %% Clean DB, should be empty + ?match(0, cosNotification_eventDB:status(Ref, eventCounter)), + cosNotification_eventDB:add_event(Ref, Event1), + ?match(1, cosNotification_eventDB:status(Ref, eventCounter)), + %% Get event without removing it. Should still be one event stored + ?match({[Event1], _, _}, cosNotification_eventDB:get_events(Ref, 2, false)), + ?match(1, cosNotification_eventDB:status(Ref, eventCounter)), + {_, _, Keys} = + ?match({Event1, _, _}, cosNotification_eventDB:get_event(Ref, false)), + ?match(1, cosNotification_eventDB:status(Ref, eventCounter)), + %% Clear the events and check that the DB is empty. + cosNotification_eventDB:delete_events(Keys), + ?match(0, cosNotification_eventDB:status(Ref, eventCounter)), + ?match({[], _, []}, cosNotification_eventDB:get_event(Ref, false)), + ?match({[], _, []}, cosNotification_eventDB:get_events(Ref, 2, false)), + + cosNotification_eventDB:destroy_db(Ref), + ok. + +%%----------------------------------------------------------------- +%% cosNotification_eventDB gc API tests +%%----------------------------------------------------------------- +gc_api(doc) -> ["The event DB is used to store events which cannot be", + "delivered at once. If Deadline defined the events that", + "are older must be discarded.", + ""]; +gc_api(suite) -> []; +gc_api(_Config) -> + + QoS1 = ?not_CreateInitQoS(), + QoS2 = ?not_SetOrderPolicy(QoS1, ?not_FifoOrder), + QoS3 = ?not_SetDiscardPolicy(QoS2, ?not_RejectNewEvents), + QoS4 = ?not_SetStartTimeSupported(QoS3, false), + QoS_NO_OF_EVENTS = ?not_SetMaxEventsPerConsumer(QoS4, ?NO_OF_EVENTS), + + Events = ?EVENTS, + Events6 = [?EVENT1, ?EVENT2, ?EVENT3, ?EVENT4, ?EVENT6, ?EVENT7, ?EVENT8], + %% Initiate DB and 'NO_OF_EVENTS' events. + Ref = cosNotification_eventDB:create_db(QoS_NO_OF_EVENTS, 60, 50, undefined), + create_loop(Events, Ref), + + %% Sleep so some events will get 'old'. + timer:sleep(23000), + + %% Reduce the limit to 5 and extract all and see if it's ok. + cosNotification_eventDB:gc_events(Ref, high), + + %% Since gc is done by another process we must wait so it will have a chance + %% to complete the job. + timer:sleep(2000), + + ?match({Events6, true}, cosNotification_eventDB:get_events(Ref, ?NO_OF_EVENTS)), + + create_loop(Events, Ref), + timer:sleep(23000), + ?match({Events6, true}, cosNotification_eventDB:get_events(Ref, ?NO_OF_EVENTS)), + cosNotification_eventDB:destroy_db(Ref), + ok. + + +%%----------------------------------------------------------------- +%% cosNotification_eventDB gc API tests +%%----------------------------------------------------------------- +auto_gc_api(doc) -> ["The event DB is used to store events which cannot be", + "delivered at once. If Deadline defined the events that", + "are older must be discarded.", + ""]; +auto_gc_api(suite) -> []; +auto_gc_api(_Config) -> + + QoS1 = ?not_CreateInitQoS(), + QoS2 = ?not_SetOrderPolicy(QoS1, ?not_FifoOrder), + QoS3 = ?not_SetDiscardPolicy(QoS2, ?not_RejectNewEvents), + QoS4 = ?not_SetStopTimeSupported(QoS3, true), + QoS5 = ?not_SetStartTimeSupported(QoS4, false), + QoS_NO_OF_EVENTS = ?not_SetMaxEventsPerConsumer(QoS5, ?NO_OF_EVENTS), + + Events6 = [?EVENT1, ?EVENT2, ?EVENT3, ?EVENT7, ?EVENT8, ?EVENT9], + %% Initiate DB + Ref = cosNotification_eventDB:create_db(QoS_NO_OF_EVENTS, 50, 50, undefined), + create_loop([?EVENT1, ?EVENT2, ?EVENT3, ?EVENT4, ?EVENT6], Ref), + + %% Sleep so some events will get 'old'. + timer:sleep(60000), + create_loop([?EVENT7, ?EVENT8, ?EVENT9], Ref), + + %% Since gc is done by another process we must wait so it will have a chance + %% to complete the job. + timer:sleep(2000), + + ?match({Events6, true}, cosNotification_eventDB:get_events(Ref, ?NO_OF_EVENTS)), + + cosNotification_eventDB:destroy_db(Ref), + + ok. + + +%%----------------------------------------------------------------- +%% cosNotification_eventDB start- and stop-time API tests +%%----------------------------------------------------------------- +start_stop_time_api(doc) -> ["The event DB is used to store events which cannot be", + "delivered at once. If Deadline defined the events that", + "are older must be discarded.", + ""]; +start_stop_time_api(suite) -> []; +start_stop_time_api(_Config) -> + + QoS1 = ?not_CreateInitQoS(), + QoS2 = ?not_SetOrderPolicy(QoS1, ?not_FifoOrder), + QoS3 = ?not_SetDiscardPolicy(QoS2, ?not_RejectNewEvents), + QoS4 = ?not_SetStopTimeSupported(QoS3, true), + QoS5 = ?not_SetStartTimeSupported(QoS4, true), + QoS_NO_OF_EVENTS = ?not_SetMaxEventsPerConsumer(QoS5, ?NO_OF_EVENTS), + + %% Initiate DB + TimeService = cosTime:start_time_service(2, 0), + Ref = cosNotification_eventDB:create_db(QoS_NO_OF_EVENTS, 50, 50, TimeService), + + T1 = 'CosTime_UTO':'_get_utc_time'('CosTime_UTO': + absolute_time('CosTime_TimeService': + new_universal_time(TimeService, + 100000000, 0, 2))), + T2 = 'CosTime_UTO':'_get_utc_time'('CosTime_UTO': + absolute_time('CosTime_TimeService': + new_universal_time(TimeService, + 200000000, 0, 2))), + T3 = 'CosTime_UTO':'_get_utc_time'('CosTime_UTO': + absolute_time('CosTime_TimeService': + new_universal_time(TimeService, + 300000000, 0, 2))), + T4 = 'CosTime_UTO':'_get_utc_time'('CosTime_UTO': + absolute_time('CosTime_TimeService': + new_universal_time(TimeService, + 400000000, 0, 2))), + %% Delivered after 10 seconds discarded after 20. + EVENT1 = ?not_CreateSE("","event1","", + [#'CosNotification_Property' + {name="Priority", + value=any:create(orber_tc:short(), 1)}, + #'CosNotification_Property' + {name="StartTime", + value=any:create('TimeBase_UtcT':tc(), T1)}, + #'CosNotification_Property' + {name="StopTime", + value=any:create('TimeBase_UtcT':tc(), T2)}], + [], any:create(orber_tc:null(), null)), + + %% Delivered after 30 seconds discarded after 10, i.e., always discarded. + EVENT2 = ?not_CreateSE("","event2","", + [#'CosNotification_Property' + {name="Priority", + value=any:create(orber_tc:short(), 3)}, + #'CosNotification_Property' + {name="StartTime", + value=any:create('TimeBase_UtcT':tc(), T3)}, + #'CosNotification_Property' + {name="StopTime", + value=any:create('TimeBase_UtcT':tc(), T1)}], + [], any:create(orber_tc:null(), null)), + + %% Delivered after 20 seconds discarded after 40 + EVENT3 = ?not_CreateSE("","event3","", + [#'CosNotification_Property' + {name="Priority", + value=any:create(orber_tc:short(), 2)}, + #'CosNotification_Property' + {name="StartTime", + value=any:create('TimeBase_UtcT':tc(), T2)}, + #'CosNotification_Property' + {name="StopTime", + value=any:create('TimeBase_UtcT':tc(), T4)}], + [], any:create(orber_tc:null(), null)), + + + + + create_loop([EVENT1, EVENT2, EVENT3], Ref), + + ?match({[], false}, cosNotification_eventDB:get_events(Ref, ?NO_OF_EVENTS)), + + %% Sleep so some events will get 'old'. + timer:sleep(12000), + + ?match({[EVENT1], true}, cosNotification_eventDB:get_events(Ref, ?NO_OF_EVENTS)), + + ?match({[], false}, cosNotification_eventDB:get_events(Ref, ?NO_OF_EVENTS)), + + timer:sleep(10000), + + ?match({[EVENT3], true}, cosNotification_eventDB:get_events(Ref, ?NO_OF_EVENTS)), + + timer:sleep(20000), + + %% See if EVENT2 really have been discarded. + ?match({[], false}, cosNotification_eventDB:get_events(Ref, ?NO_OF_EVENTS)), + + cosNotification_eventDB:destroy_db(Ref), + + cosTime:stop_time_service(TimeService), + + ok. + + +%%----------------------------------------------------------------- +%% cosNotification_eventDB order API tests +%%----------------------------------------------------------------- +reorder_api(doc) -> ["The event DB is used to store events which cannot be", + "delivered at once. If the QoS is updated we must be", + "able to change the ordering of events as the discard", + "and order policies tells us.", + ""]; +reorder_api(suite) -> []; +reorder_api(_Config) -> + %% We need to test switching between: + %% * Priority -> Fifo + %% * Priority -> Deadline + %% * Fifo -> Priority + %% * Fifo -> Deadline + %% * Deadline -> Priority + %% * Deadline -> Fifo + QoS = ?not_CreateInitQoS(), + QoS2 = ?not_SetMaxEventsPerConsumer(QoS,100), + QoS3 = ?not_SetPriority(QoS2, 10), + QoS4 = ?not_SetStartTimeSupported(QoS3, false), + QoS5 = ?not_SetOrderPolicy(QoS4, ?not_AnyOrder), + + + %% Test all order policies using Any order discard policy. + reorder_helper(?not_SetDiscardPolicy(QoS5, ?not_AnyOrder), "Discard Any"), + reorder_helper(?not_SetDiscardPolicy(QoS5, ?not_PriorityOrder), "Discard Priority"), + reorder_helper(?not_SetDiscardPolicy(QoS5, ?not_DeadlineOrder), "Discard Deadline"), + reorder_helper(?not_SetDiscardPolicy(QoS5, ?not_FifoOrder), "Discard Fifo"), + reorder_helper(?not_SetDiscardPolicy(QoS5, ?not_LifoOrder), "Discard Lifo"), + reorder_helper(?not_SetDiscardPolicy(QoS5, ?not_RejectNewEvents), "Reject New Events"), + + ok. + + +reorder_helper(QoS, Txt) -> + io:format("$$$$$$$$$$$$$$$$$$$$ ~s $$$$$$$$$$$$$$$$$$$~n", [Txt]), + %% Create a DB with the above settings. + Ref = cosNotification_eventDB:create_db(QoS, 60, 50, undefined), + + Events = ?EVENTS, + PrioOrder = ?PRIOORDER, + FifoOrder = ?FIFOORDER, + DeadlineOrder = ?DEADLINEORDER, + + %% Test all order policies using Any order discard policy. + Ref2 = do_reorder(Ref, Events, ?not_SetOrderPolicy(QoS, ?not_FifoOrder), + FifoOrder, "Priority -> Fifo"), + Ref3 = do_reorder(Ref2, Events, ?not_SetOrderPolicy(QoS, ?not_PriorityOrder), + PrioOrder, "Fifo -> Priority"), + Ref4 = do_reorder(Ref3, Events, ?not_SetOrderPolicy(QoS, ?not_DeadlineOrder), + DeadlineOrder, "Priority -> Deadline"), + + Ref5 = do_reorder(Ref4, Events, ?not_SetOrderPolicy(QoS, ?not_PriorityOrder), + PrioOrder, "Deadline -> Priority"), + + Ref6 = do_reorder(Ref5, Events, ?not_SetOrderPolicy(QoS, ?not_FifoOrder), + FifoOrder, "Priority -> Fifo"), + + Ref7 = do_reorder(Ref6, Events, ?not_SetOrderPolicy(QoS, ?not_DeadlineOrder), + DeadlineOrder, "Fifo -> Deadline"), + + Ref8 = do_reorder(Ref7, Events, ?not_SetOrderPolicy(QoS, ?not_FifoOrder), + FifoOrder, "Deadline -> Fifo"), + cosNotification_eventDB:destroy_db(Ref8), + ok. + + + +do_reorder(Ref, Events, QoS, Reply, Txt) -> + create_loop(Events, Ref), + io:format("################# ~s #################~n", [Txt]), + NewRef = cosNotification_eventDB:update(Ref, QoS), + ?match({Reply,_}, cosNotification_eventDB:get_events(NewRef, ?NO_OF_EVENTS)), + NewRef. + +%%----------------------------------------------------------------- +%% Internal functions +%%----------------------------------------------------------------- +%% This functions takes as argument a list of structured events. +create_loop([], _Ref) -> + ok; +create_loop([H|T], Ref) -> + catch cosNotification_eventDB:add_event(Ref, H), + create_loop(T, Ref). + +create_loop([], _Ref, _Life, _Prio) -> + ok; +create_loop([H|T], Ref, Life, Prio) -> + catch cosNotification_eventDB:add_event(Ref, H, Life, Prio), + create_loop(T, Ref, Life, Prio). + +%%-------------------- End of Module ------------------------------ diff --git a/lib/cosNotification/test/generated_SUITE.erl b/lib/cosNotification/test/generated_SUITE.erl new file mode 100644 index 0000000000..34b84041f0 --- /dev/null +++ b/lib/cosNotification/test/generated_SUITE.erl @@ -0,0 +1,2042 @@ +%%----------------------------------------------------------------- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2004-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%----------------------------------------------------------------- +%% File : generated_SUITE.erl +%% Purpose : +%%----------------------------------------------------------------- + +-module(generated_SUITE). + +-include("test_server.hrl"). +-include_lib("orber/include/corba.hrl"). + +-define(default_timeout, ?t:minutes(3)). + +-define(match(ExpectedRes, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS) + end + end()). + +-define(nomatch(Not, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + Not -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS); + _ -> + AcTuAlReS + end + end()). + + +-define(checktc(_Op), + fun(TC) -> + case orber_tc:check_tc(TC) of + false -> + io:format("###### ERROR ERROR ######~n~p - ~p~n", [Op, TC]), + ?line exit(TC); + true -> + true + end + end). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1]). + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- +-export([]). +-compile(export_all). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["This suite is for testing IC generated files"]; +all(suite) -> + ['CosNotification', 'CosNotification_AdminPropertiesAdmin', + 'CosNotification_EventHeader', 'CosNotification_EventType', + 'CosNotification_FixedEventHeader', 'CosNotification_NamedPropertyRange', + 'CosNotification_Property', 'CosNotification_PropertyError', + 'CosNotification_PropertyRange', 'CosNotification_QoSAdmin', + 'CosNotification_StructuredEvent', 'CosNotification_UnsupportedAdmin', + 'CosNotification_UnsupportedQoS', 'CosNotification_EventBatch', + 'CosNotification_EventTypeSeq', 'CosNotification_NamedPropertyRangeSeq', + 'CosNotification_PropertyErrorSeq', 'CosNotifyChannelAdmin_AdminLimit', + 'CosNotifyChannelAdmin_AdminNotFound', 'CosNotifyChannelAdmin_ChannelNotFound', + 'CosNotifyChannelAdmin_ConnectionAlreadyActive', 'CosNotifyChannelAdmin_ConnectionAlreadyInactive', + 'CosNotifyChannelAdmin_NotConnected', 'CosNotifyChannelAdmin_AdminIDSeq', + 'CosNotifyChannelAdmin_ChannelIDSeq', 'CosNotifyChannelAdmin_ProxyIDSeq', + 'CosNotifyFilter_CallbackNotFound', 'CosNotifyFilter_ConstraintExp', + 'CosNotifyFilter_ConstraintInfo', 'CosNotifyFilter_ConstraintNotFound', + 'CosNotifyFilter_DuplicateConstraintID', 'CosNotifyFilter_FilterNotFound', + 'CosNotifyFilter_InvalidConstraint', 'CosNotifyFilter_InvalidGrammar', + 'CosNotifyFilter_InvalidValue', 'CosNotifyFilter_MappingConstraintInfo', + 'CosNotifyFilter_MappingConstraintPair', 'CosNotifyFilter_UnsupportedFilterableData', + 'CosNotifyFilter_CallbackIDSeq', 'CosNotifyFilter_ConstraintExpSeq', + 'CosNotifyFilter_ConstraintIDSeq', 'CosNotifyFilter_ConstraintInfoSeq', + 'CosNotifyFilter_FilterIDSeq', 'CosNotifyFilter_MappingConstraintInfoSeq', + 'CosNotifyFilter_MappingConstraintPairSeq', 'CosNotifyComm_InvalidEventType', + 'CosNotifyChannelAdmin_ConsumerAdmin', 'CosNotifyChannelAdmin_EventChannel', + 'CosNotifyChannelAdmin_EventChannelFactory', 'CosNotifyChannelAdmin_ProxyConsumer', + 'CosNotifyChannelAdmin_ProxyNotFound', 'CosNotifyChannelAdmin_ProxyPullConsumer', + 'CosNotifyChannelAdmin_ProxyPullSupplier', 'CosNotifyChannelAdmin_ProxyPushConsumer', + 'CosNotifyChannelAdmin_ProxyPushSupplier', 'CosNotifyChannelAdmin_ProxySupplier', + 'CosNotifyChannelAdmin_SequenceProxyPullConsumer', 'CosNotifyChannelAdmin_SequenceProxyPullSupplier', + 'CosNotifyChannelAdmin_SequenceProxyPushConsumer', 'CosNotifyChannelAdmin_SequenceProxyPushSupplier', + 'CosNotifyChannelAdmin_StructuredProxyPullConsumer', 'CosNotifyChannelAdmin_StructuredProxyPullSupplier', + 'CosNotifyChannelAdmin_StructuredProxyPushConsumer', 'CosNotifyChannelAdmin_StructuredProxyPushSupplier', + 'CosNotifyChannelAdmin_SupplierAdmin', 'CosNotifyFilter_Filter', + 'CosNotifyFilter_FilterAdmin', 'CosNotifyFilter_FilterFactory', + 'CosNotifyFilter_MappingFilter', 'CosNotifyComm_NotifyPublish', + 'CosNotifyComm_NotifySubscribe', 'CosNotifyComm_PullConsumer', + 'CosNotifyComm_PullSupplier', 'CosNotifyComm_PushConsumer', + 'CosNotifyComm_PushSupplier', 'CosNotifyComm_SequencePullConsumer', + 'CosNotifyComm_SequencePullSupplier', 'CosNotifyComm_SequencePushConsumer', + 'CosNotifyComm_SequencePushSupplier', 'CosNotifyComm_StructuredPullConsumer', + 'CosNotifyComm_StructuredPullSupplier', 'CosNotifyComm_StructuredPushConsumer', + 'CosNotifyComm_StructuredPushSupplier', 'oe_CosNotificationComm_Event', + 'CosNotification_PropertySeq']. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- +init_per_testcase(_Case, Config) -> + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotification' +%% Description: +%%----------------------------------------------------------------- +'CosNotification'(doc) -> ["CosNotification"]; +'CosNotification'(suite) -> []; +'CosNotification'(_) -> + ?match("EventReliability", 'CosNotification':'EventReliability'()), + ?match(0, 'CosNotification':'BestEffort'()), + ?match(1, 'CosNotification':'Persistent'()), + ?match("ConnectionReliability", 'CosNotification':'ConnectionReliability'()), + ?match("Priority", 'CosNotification':'Priority'()), + ?match(-32767, 'CosNotification':'LowestPriority'()), + ?match(32767, 'CosNotification':'HighestPriority'()), + ?match(0, 'CosNotification':'DefaultPriority'()), + ?match("StartTime", 'CosNotification':'StartTime'()), + ?match("StopTime", 'CosNotification':'StopTime'()), + ?match("Timeout", 'CosNotification':'Timeout'()), + ?match("OrderPolicy", 'CosNotification':'OrderPolicy'()), + ?match(0, 'CosNotification':'AnyOrder'()), + ?match(1, 'CosNotification':'FifoOrder'()), + ?match(2, 'CosNotification':'PriorityOrder'()), + ?match(3, 'CosNotification':'DeadlineOrder'()), + ?match("DiscardPolicy", 'CosNotification':'DiscardPolicy'()), + ?match(4, 'CosNotification':'LifoOrder'()), + ?match(5, 'CosNotification':'RejectNewEvents'()), + ?match("MaximumBatchSize", 'CosNotification':'MaximumBatchSize'()), + ?match("PacingInterval", 'CosNotification':'PacingInterval'()), + ?match("StartTimeSupported", 'CosNotification':'StartTimeSupported'()), + ?match("StopTimeSupported", 'CosNotification':'StopTimeSupported'()), + ?match("MaxEventsPerConsumer", 'CosNotification':'MaxEventsPerConsumer'()), + ?match("MaxQueueLength", 'CosNotification':'MaxQueueLength'()), + ?match("MaxConsumers", 'CosNotification':'MaxConsumers'()), + ?match("MaxSuppliers", 'CosNotification':'MaxSuppliers'()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotification_EventHeader' +%% Description: +%%----------------------------------------------------------------- +'CosNotification_EventHeader'(doc) -> ["CosNotification_EventHeader"]; +'CosNotification_EventHeader'(suite) -> []; +'CosNotification_EventHeader'(_) -> + ?match(true, orber_tc:check_tc('CosNotification_EventHeader':tc())), + ?match("IDL:omg.org/CosNotification/EventHeader:1.0", + 'CosNotification_EventHeader':id()), + ?match("CosNotification_EventHeader", + 'CosNotification_EventHeader':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotification_EventType' +%% Description: +%%----------------------------------------------------------------- +'CosNotification_EventType'(doc) -> ["CosNotification_EventType"]; +'CosNotification_EventType'(suite) -> []; +'CosNotification_EventType'(_) -> + ?match(true, orber_tc:check_tc('CosNotification_EventType':tc())), + ?match("IDL:omg.org/CosNotification/EventType:1.0", + 'CosNotification_EventType':id()), + ?match("CosNotification_EventType", + 'CosNotification_EventType':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotification_FixedEventHeader' +%% Description: +%%----------------------------------------------------------------- +'CosNotification_FixedEventHeader'(doc) -> ["CosNotification_FixedEventHeader"]; +'CosNotification_FixedEventHeader'(suite) -> []; +'CosNotification_FixedEventHeader'(_) -> + ?match(true, orber_tc:check_tc('CosNotification_FixedEventHeader':tc())), + ?match("IDL:omg.org/CosNotification/FixedEventHeader:1.0", + 'CosNotification_FixedEventHeader':id()), + ?match("CosNotification_FixedEventHeader", + 'CosNotification_FixedEventHeader':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotification_NamedPropertyRange' +%% Description: +%%----------------------------------------------------------------- +'CosNotification_NamedPropertyRange'(doc) -> ["CosNotification_NamedPropertyRange"]; +'CosNotification_NamedPropertyRange'(suite) -> []; +'CosNotification_NamedPropertyRange'(_) -> + ?match(true, orber_tc:check_tc('CosNotification_NamedPropertyRange':tc())), + ?match("IDL:omg.org/CosNotification/NamedPropertyRange:1.0", + 'CosNotification_NamedPropertyRange':id()), + ?match("CosNotification_NamedPropertyRange", + 'CosNotification_NamedPropertyRange':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotification_Property' +%% Description: +%%----------------------------------------------------------------- +'CosNotification_Property'(doc) -> ["CosNotification_Property"]; +'CosNotification_Property'(suite) -> []; +'CosNotification_Property'(_) -> + ?match(true, orber_tc:check_tc('CosNotification_Property':tc())), + ?match("IDL:omg.org/CosNotification/Property:1.0", + 'CosNotification_Property':id()), + ?match("CosNotification_Property", + 'CosNotification_Property':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotification_PropertyError' +%% Description: +%%----------------------------------------------------------------- +'CosNotification_PropertyError'(doc) -> ["CosNotification_PropertyError"]; +'CosNotification_PropertyError'(suite) -> []; +'CosNotification_PropertyError'(_) -> + ?match(true, orber_tc:check_tc('CosNotification_PropertyError':tc())), + ?match("IDL:omg.org/CosNotification/PropertyError:1.0", + 'CosNotification_PropertyError':id()), + ?match("CosNotification_PropertyError", + 'CosNotification_PropertyError':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotification_PropertyRange' +%% Description: +%%----------------------------------------------------------------- +'CosNotification_PropertyRange'(doc) -> [""]; +'CosNotification_PropertyRange'(suite) -> []; +'CosNotification_PropertyRange'(_) -> + ?match(true, orber_tc:check_tc('CosNotification_PropertyRange':tc())), + ?match("IDL:omg.org/CosNotification/PropertyRange:1.0", + 'CosNotification_PropertyRange':id()), + ?match("CosNotification_PropertyRange", + 'CosNotification_PropertyRange':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotification_StructuredEvent' +%% Description: +%%----------------------------------------------------------------- +'CosNotification_StructuredEvent'(doc) -> ["CosNotification_StructuredEvent"]; +'CosNotification_StructuredEvent'(suite) -> []; +'CosNotification_StructuredEvent'(_) -> + ?match(true, orber_tc:check_tc('CosNotification_StructuredEvent':tc())), + ?match("IDL:omg.org/CosNotification/StructuredEvent:1.0", + 'CosNotification_StructuredEvent':id()), + ?match("CosNotification_StructuredEvent", + 'CosNotification_StructuredEvent':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotification_UnsupportedAdmin' +%% Description: +%%----------------------------------------------------------------- +'CosNotification_UnsupportedAdmin'(doc) -> ["CosNotification_UnsupportedAdmin"]; +'CosNotification_UnsupportedAdmin'(suite) -> []; +'CosNotification_UnsupportedAdmin'(_) -> + ?match(true, orber_tc:check_tc('CosNotification_UnsupportedAdmin':tc())), + ?match("IDL:omg.org/CosNotification/UnsupportedAdmin:1.0", + 'CosNotification_UnsupportedAdmin':id()), + ?match("CosNotification_UnsupportedAdmin", + 'CosNotification_UnsupportedAdmin':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotification_UnsupportedQoS' +%% Description: +%%----------------------------------------------------------------- +'CosNotification_UnsupportedQoS'(doc) -> ["CosNotification_UnsupportedQoS"]; +'CosNotification_UnsupportedQoS'(suite) -> []; +'CosNotification_UnsupportedQoS'(_) -> + ?match(true, orber_tc:check_tc('CosNotification_UnsupportedQoS':tc())), + ?match("IDL:omg.org/CosNotification/UnsupportedQoS:1.0", + 'CosNotification_UnsupportedQoS':id()), + ?match("CosNotification_UnsupportedQoS", + 'CosNotification_UnsupportedQoS':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotification_EventBatch' +%% Description: +%%----------------------------------------------------------------- +'CosNotification_EventBatch'(doc) -> ["CosNotification_EventBatch"]; +'CosNotification_EventBatch'(suite) -> []; +'CosNotification_EventBatch'(_) -> + ?match(true, orber_tc:check_tc('CosNotification_EventBatch':tc())), + ?match("IDL:omg.org/CosNotification/EventBatch:1.0", + 'CosNotification_EventBatch':id()), + ?match("CosNotification_EventBatch", + 'CosNotification_EventBatch':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotification_EventTypeSeq' +%% Description: +%%----------------------------------------------------------------- +'CosNotification_EventTypeSeq'(doc) -> ["CosNotification_EventTypeSeq"]; +'CosNotification_EventTypeSeq'(suite) -> []; +'CosNotification_EventTypeSeq'(_) -> + ?match(true, orber_tc:check_tc('CosNotification_EventTypeSeq':tc())), + ?match("IDL:omg.org/CosNotification/EventTypeSeq:1.0", + 'CosNotification_EventTypeSeq':id()), + ?match("CosNotification_EventTypeSeq", + 'CosNotification_EventTypeSeq':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotification_NamedPropertyRangeSeq' +%% Description: +%%----------------------------------------------------------------- +'CosNotification_NamedPropertyRangeSeq'(doc) -> ["CosNotification_NamedPropertyRangeSeq"]; +'CosNotification_NamedPropertyRangeSeq'(suite) -> []; +'CosNotification_NamedPropertyRangeSeq'(_) -> + ?match(true, orber_tc:check_tc('CosNotification_NamedPropertyRangeSeq':tc())), + ?match("IDL:omg.org/CosNotification/NamedPropertyRangeSeq:1.0", + 'CosNotification_NamedPropertyRangeSeq':id()), + ?match("CosNotification_NamedPropertyRangeSeq", + 'CosNotification_NamedPropertyRangeSeq':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotification_PropertyErrorSeq' +%% Description: +%%----------------------------------------------------------------- +'CosNotification_PropertyErrorSeq'(doc) -> ["CosNotification_PropertyErrorSeq"]; +'CosNotification_PropertyErrorSeq'(suite) -> []; +'CosNotification_PropertyErrorSeq'(_) -> + ?match(true, orber_tc:check_tc('CosNotification_PropertyErrorSeq':tc())), + ?match("IDL:omg.org/CosNotification/PropertyErrorSeq:1.0", + 'CosNotification_PropertyErrorSeq':id()), + ?match("CosNotification_PropertyErrorSeq", + 'CosNotification_PropertyErrorSeq':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotification_PropertySeq' +%% Description: +%%----------------------------------------------------------------- +'CosNotification_PropertySeq'(doc) -> ["CosNotification_PropertySeq"]; +'CosNotification_PropertySeq'(suite) -> []; +'CosNotification_PropertySeq'(_) -> + ?match(true, orber_tc:check_tc('CosNotification_PropertySeq':tc())), + ?match("IDL:omg.org/CosNotification/PropertySeq:1.0", + 'CosNotification_PropertySeq':id()), + ?match("CosNotification_PropertySeq", + 'CosNotification_PropertySeq':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_AdminLimit' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_AdminLimit'(doc) -> ["CosNotifyChannelAdmin_AdminLimit"]; +'CosNotifyChannelAdmin_AdminLimit'(suite) -> []; +'CosNotifyChannelAdmin_AdminLimit'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyChannelAdmin_AdminLimit':tc())), + ?match("IDL:omg.org/CosNotifyChannelAdmin/AdminLimit:1.0", + 'CosNotifyChannelAdmin_AdminLimit':id()), + ?match("CosNotifyChannelAdmin_AdminLimit", + 'CosNotifyChannelAdmin_AdminLimit':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_AdminLimitExceeded' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_AdminLimitExceeded'(doc) -> ["CosNotifyChannelAdmin_AdminLimitExceeded"]; +'CosNotifyChannelAdmin_AdminLimitExceeded'(suite) -> []; +'CosNotifyChannelAdmin_AdminLimitExceeded'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyChannelAdmin_AdminLimitExceeded':tc())), + ?match("IDL:omg.org/CosNotifyChannelAdmin/AdminLimitExceeded:1.0", + 'CosNotifyChannelAdmin_AdminLimitExceeded':id()), + ?match("CosNotifyChannelAdmin_AdminLimitExceeded", + 'CosNotifyChannelAdmin_AdminLimitExceeded':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_AdminNotFound' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_AdminNotFound'(doc) -> ["CosNotifyChannelAdmin_AdminNotFound"]; +'CosNotifyChannelAdmin_AdminNotFound'(suite) -> []; +'CosNotifyChannelAdmin_AdminNotFound'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyChannelAdmin_AdminNotFound':tc())), + ?match("IDL:omg.org/CosNotifyChannelAdmin/AdminNotFound:1.0", + 'CosNotifyChannelAdmin_AdminNotFound':id()), + ?match("CosNotifyChannelAdmin_AdminNotFound", + 'CosNotifyChannelAdmin_AdminNotFound':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_ChannelNotFound' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_ChannelNotFound'(doc) -> ["CosNotifyChannelAdmin_ChannelNotFound"]; +'CosNotifyChannelAdmin_ChannelNotFound'(suite) -> []; +'CosNotifyChannelAdmin_ChannelNotFound'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyChannelAdmin_ChannelNotFound':tc())), + ?match("IDL:omg.org/CosNotifyChannelAdmin/ChannelNotFound:1.0", + 'CosNotifyChannelAdmin_ChannelNotFound':id()), + ?match("CosNotifyChannelAdmin_ChannelNotFound", + 'CosNotifyChannelAdmin_ChannelNotFound':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_ConnectionAlreadyActive' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_ConnectionAlreadyActive'(doc) -> ["CosNotifyChannelAdmin_ConnectionAlreadyActive"]; +'CosNotifyChannelAdmin_ConnectionAlreadyActive'(suite) -> []; +'CosNotifyChannelAdmin_ConnectionAlreadyActive'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyChannelAdmin_ConnectionAlreadyActive':tc())), + ?match("IDL:omg.org/CosNotifyChannelAdmin/ConnectionAlreadyActive:1.0", + 'CosNotifyChannelAdmin_ConnectionAlreadyActive':id()), + ?match("CosNotifyChannelAdmin_ConnectionAlreadyActive", + 'CosNotifyChannelAdmin_ConnectionAlreadyActive':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_ConnectionAlreadyInactive' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_ConnectionAlreadyInactive'(doc) -> ["CosNotifyChannelAdmin_ConnectionAlreadyInactive"]; +'CosNotifyChannelAdmin_ConnectionAlreadyInactive'(suite) -> []; +'CosNotifyChannelAdmin_ConnectionAlreadyInactive'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyChannelAdmin_ConnectionAlreadyInactive':tc())), + ?match("IDL:omg.org/CosNotifyChannelAdmin/ConnectionAlreadyInactive:1.0", + 'CosNotifyChannelAdmin_ConnectionAlreadyInactive':id()), + ?match("CosNotifyChannelAdmin_ConnectionAlreadyInactive", + 'CosNotifyChannelAdmin_ConnectionAlreadyInactive':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_NotConnected' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_NotConnected'(doc) -> ["CosNotifyChannelAdmin_NotConnected"]; +'CosNotifyChannelAdmin_NotConnected'(suite) -> []; +'CosNotifyChannelAdmin_NotConnected'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyChannelAdmin_NotConnected':tc())), + ?match("IDL:omg.org/CosNotifyChannelAdmin/NotConnected:1.0", + 'CosNotifyChannelAdmin_NotConnected':id()), + ?match("CosNotifyChannelAdmin_NotConnected", + 'CosNotifyChannelAdmin_NotConnected':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_AdminIDSeq' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_AdminIDSeq'(doc) -> ["CosNotifyChannelAdmin_AdminIDSeq"]; +'CosNotifyChannelAdmin_AdminIDSeq'(suite) -> []; +'CosNotifyChannelAdmin_AdminIDSeq'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyChannelAdmin_AdminIDSeq':tc())), + ?match("IDL:omg.org/CosNotifyChannelAdmin/AdminIDSeq:1.0", + 'CosNotifyChannelAdmin_AdminIDSeq':id()), + ?match("CosNotifyChannelAdmin_AdminIDSeq", + 'CosNotifyChannelAdmin_AdminIDSeq':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_ChannelIDSeq' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_ChannelIDSeq'(doc) -> ["CosNotifyChannelAdmin_ChannelIDSeq"]; +'CosNotifyChannelAdmin_ChannelIDSeq'(suite) -> []; +'CosNotifyChannelAdmin_ChannelIDSeq'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyChannelAdmin_ChannelIDSeq':tc())), + ?match("IDL:omg.org/CosNotifyChannelAdmin/ChannelIDSeq:1.0", + 'CosNotifyChannelAdmin_ChannelIDSeq':id()), + ?match("CosNotifyChannelAdmin_ChannelIDSeq", + 'CosNotifyChannelAdmin_ChannelIDSeq':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_ProxyIDSeq' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_ProxyIDSeq'(doc) -> ["CosNotifyChannelAdmin_ProxyIDSeq"]; +'CosNotifyChannelAdmin_ProxyIDSeq'(suite) -> []; +'CosNotifyChannelAdmin_ProxyIDSeq'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyChannelAdmin_ProxyIDSeq':tc())), + ?match("IDL:omg.org/CosNotifyChannelAdmin/ProxyIDSeq:1.0", + 'CosNotifyChannelAdmin_ProxyIDSeq':id()), + ?match("CosNotifyChannelAdmin_ProxyIDSeq", + 'CosNotifyChannelAdmin_ProxyIDSeq':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyFilter_CallbackNotFound' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyFilter_CallbackNotFound'(doc) -> ["CosNotifyFilter_CallbackNotFound"]; +'CosNotifyFilter_CallbackNotFound'(suite) -> []; +'CosNotifyFilter_CallbackNotFound'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyFilter_CallbackNotFound':tc())), + ?match("IDL:omg.org/CosNotifyFilter/CallbackNotFound:1.0", + 'CosNotifyFilter_CallbackNotFound':id()), + ?match("CosNotifyFilter_CallbackNotFound", + 'CosNotifyFilter_CallbackNotFound':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyFilter_ConstraintExp' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyFilter_ConstraintExp'(doc) -> ["CosNotifyFilter_ConstraintExp"]; +'CosNotifyFilter_ConstraintExp'(suite) -> []; +'CosNotifyFilter_ConstraintExp'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyFilter_ConstraintExp':tc())), + ?match("IDL:omg.org/CosNotifyFilter/ConstraintExp:1.0", + 'CosNotifyFilter_ConstraintExp':id()), + ?match("CosNotifyFilter_ConstraintExp", + 'CosNotifyFilter_ConstraintExp':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyFilter_ConstraintInfo' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyFilter_ConstraintInfo'(doc) -> ["CosNotifyFilter_ConstraintInfo"]; +'CosNotifyFilter_ConstraintInfo'(suite) -> []; +'CosNotifyFilter_ConstraintInfo'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyFilter_ConstraintInfo':tc())), + ?match("IDL:omg.org/CosNotifyFilter/ConstraintInfo:1.0", + 'CosNotifyFilter_ConstraintInfo':id()), + ?match("CosNotifyFilter_ConstraintInfo", + 'CosNotifyFilter_ConstraintInfo':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyFilter_ConstraintNotFound' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyFilter_ConstraintNotFound'(doc) -> ["CosNotifyFilter_ConstraintNotFound"]; +'CosNotifyFilter_ConstraintNotFound'(suite) -> []; +'CosNotifyFilter_ConstraintNotFound'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyFilter_ConstraintNotFound':tc())), + ?match("IDL:omg.org/CosNotifyFilter/ConstraintNotFound:1.0", + 'CosNotifyFilter_ConstraintNotFound':id()), + ?match("CosNotifyFilter_ConstraintNotFound", + 'CosNotifyFilter_ConstraintNotFound':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyFilter_DuplicateConstraintID' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyFilter_DuplicateConstraintID'(doc) -> ["CosNotifyFilter_DuplicateConstraintID"]; +'CosNotifyFilter_DuplicateConstraintID'(suite) -> []; +'CosNotifyFilter_DuplicateConstraintID'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyFilter_DuplicateConstraintID':tc())), + ?match("IDL:omg.org/CosNotifyFilter/DuplicateConstraintID:1.0", + 'CosNotifyFilter_DuplicateConstraintID':id()), + ?match("CosNotifyFilter_DuplicateConstraintID", + 'CosNotifyFilter_DuplicateConstraintID':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyFilter_FilterNotFound' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyFilter_FilterNotFound'(doc) -> ["CosNotifyFilter_FilterNotFound"]; +'CosNotifyFilter_FilterNotFound'(suite) -> []; +'CosNotifyFilter_FilterNotFound'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyFilter_FilterNotFound':tc())), + ?match("IDL:omg.org/CosNotifyFilter/FilterNotFound:1.0", + 'CosNotifyFilter_FilterNotFound':id()), + ?match("CosNotifyFilter_FilterNotFound", + 'CosNotifyFilter_FilterNotFound':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyFilter_InvalidConstraint' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyFilter_InvalidConstraint'(doc) -> ["CosNotifyFilter_InvalidConstraint"]; +'CosNotifyFilter_InvalidConstraint'(suite) -> []; +'CosNotifyFilter_InvalidConstraint'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyFilter_InvalidConstraint':tc())), + ?match("IDL:omg.org/CosNotifyFilter/InvalidConstraint:1.0", + 'CosNotifyFilter_InvalidConstraint':id()), + ?match("CosNotifyFilter_InvalidConstraint", + 'CosNotifyFilter_InvalidConstraint':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyFilter_InvalidGrammar' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyFilter_InvalidGrammar'(doc) -> ["CosNotifyFilter_InvalidGrammar"]; +'CosNotifyFilter_InvalidGrammar'(suite) -> []; +'CosNotifyFilter_InvalidGrammar'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyFilter_InvalidGrammar':tc())), + ?match("IDL:omg.org/CosNotifyFilter/InvalidGrammar:1.0", + 'CosNotifyFilter_InvalidGrammar':id()), + ?match("CosNotifyFilter_InvalidGrammar", + 'CosNotifyFilter_InvalidGrammar':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyFilter_InvalidValue' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyFilter_InvalidValue'(doc) -> ["CosNotifyFilter_InvalidValue"]; +'CosNotifyFilter_InvalidValue'(suite) -> []; +'CosNotifyFilter_InvalidValue'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyFilter_InvalidValue':tc())), + ?match("IDL:omg.org/CosNotifyFilter/InvalidValue:1.0", + 'CosNotifyFilter_InvalidValue':id()), + ?match("CosNotifyFilter_InvalidValue", + 'CosNotifyFilter_InvalidValue':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyFilter_MappingConstraintInfo' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyFilter_MappingConstraintInfo'(doc) -> ["CosNotifyFilter_MappingConstraintInfo"]; +'CosNotifyFilter_MappingConstraintInfo'(suite) -> []; +'CosNotifyFilter_MappingConstraintInfo'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyFilter_MappingConstraintInfo':tc())), + ?match("IDL:omg.org/CosNotifyFilter/MappingConstraintInfo:1.0", + 'CosNotifyFilter_MappingConstraintInfo':id()), + ?match("CosNotifyFilter_MappingConstraintInfo", + 'CosNotifyFilter_MappingConstraintInfo':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyFilter_MappingConstraintPair' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyFilter_MappingConstraintPair'(doc) -> ["CosNotifyFilter_MappingConstraintPair"]; +'CosNotifyFilter_MappingConstraintPair'(suite) -> []; +'CosNotifyFilter_MappingConstraintPair'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyFilter_MappingConstraintPair':tc())), + ?match("IDL:omg.org/CosNotifyFilter/MappingConstraintPair:1.0", + 'CosNotifyFilter_MappingConstraintPair':id()), + ?match("CosNotifyFilter_MappingConstraintPair", + 'CosNotifyFilter_MappingConstraintPair':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyFilter_UnsupportedFilterableData' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyFilter_UnsupportedFilterableData'(doc) -> ["CosNotifyFilter_UnsupportedFilterableData"]; +'CosNotifyFilter_UnsupportedFilterableData'(suite) -> []; +'CosNotifyFilter_UnsupportedFilterableData'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyFilter_UnsupportedFilterableData':tc())), + ?match("IDL:omg.org/CosNotifyFilter/UnsupportedFilterableData:1.0", + 'CosNotifyFilter_UnsupportedFilterableData':id()), + ?match("CosNotifyFilter_UnsupportedFilterableData", + 'CosNotifyFilter_UnsupportedFilterableData':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyFilter_CallbackIDSeq' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyFilter_CallbackIDSeq'(doc) -> ["CosNotifyFilter_CallbackIDSeq"]; +'CosNotifyFilter_CallbackIDSeq'(suite) -> []; +'CosNotifyFilter_CallbackIDSeq'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyFilter_CallbackIDSeq':tc())), + ?match("IDL:omg.org/CosNotifyFilter/CallbackIDSeq:1.0", + 'CosNotifyFilter_CallbackIDSeq':id()), + ?match("CosNotifyFilter_CallbackIDSeq", + 'CosNotifyFilter_CallbackIDSeq':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyFilter_ConstraintExpSeq' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyFilter_ConstraintExpSeq'(doc) -> ["CosNotifyFilter_ConstraintExpSeq"]; +'CosNotifyFilter_ConstraintExpSeq'(suite) -> []; +'CosNotifyFilter_ConstraintExpSeq'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyFilter_ConstraintExpSeq':tc())), + ?match("IDL:omg.org/CosNotifyFilter/ConstraintExpSeq:1.0", + 'CosNotifyFilter_ConstraintExpSeq':id()), + ?match("CosNotifyFilter_ConstraintExpSeq", + 'CosNotifyFilter_ConstraintExpSeq':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyFilter_ConstraintIDSeq' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyFilter_ConstraintIDSeq'(doc) -> ["CosNotifyFilter_ConstraintIDSeq"]; +'CosNotifyFilter_ConstraintIDSeq'(suite) -> []; +'CosNotifyFilter_ConstraintIDSeq'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyFilter_ConstraintIDSeq':tc())), + ?match("IDL:omg.org/CosNotifyFilter/ConstraintIDSeq:1.0", + 'CosNotifyFilter_ConstraintIDSeq':id()), + ?match("CosNotifyFilter_ConstraintIDSeq", + 'CosNotifyFilter_ConstraintIDSeq':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyFilter_ConstraintInfoSeq' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyFilter_ConstraintInfoSeq'(doc) -> ["CosNotifyFilter_ConstraintInfoSeq"]; +'CosNotifyFilter_ConstraintInfoSeq'(suite) -> []; +'CosNotifyFilter_ConstraintInfoSeq'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyFilter_ConstraintInfoSeq':tc())), + ?match("IDL:omg.org/CosNotifyFilter/ConstraintInfoSeq:1.0", + 'CosNotifyFilter_ConstraintInfoSeq':id()), + ?match("CosNotifyFilter_ConstraintInfoSeq", + 'CosNotifyFilter_ConstraintInfoSeq':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyFilter_FilterIDSeq' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyFilter_FilterIDSeq'(doc) -> ["CosNotifyFilter_FilterIDSeq"]; +'CosNotifyFilter_FilterIDSeq'(suite) -> []; +'CosNotifyFilter_FilterIDSeq'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyFilter_FilterIDSeq':tc())), + ?match("IDL:omg.org/CosNotifyFilter/FilterIDSeq:1.0", + 'CosNotifyFilter_FilterIDSeq':id()), + ?match("CosNotifyFilter_FilterIDSeq", + 'CosNotifyFilter_FilterIDSeq':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyFilter_MappingConstraintInfoSeq' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyFilter_MappingConstraintInfoSeq'(doc) -> ["CosNotifyFilter_MappingConstraintInfoSeq"]; +'CosNotifyFilter_MappingConstraintInfoSeq'(suite) -> []; +'CosNotifyFilter_MappingConstraintInfoSeq'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyFilter_MappingConstraintInfoSeq':tc())), + ?match("IDL:omg.org/CosNotifyFilter/MappingConstraintInfoSeq:1.0", + 'CosNotifyFilter_MappingConstraintInfoSeq':id()), + ?match("CosNotifyFilter_MappingConstraintInfoSeq", + 'CosNotifyFilter_MappingConstraintInfoSeq':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyFilter_MappingConstraintPairSeq' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyFilter_MappingConstraintPairSeq'(doc) -> ["CosNotifyFilter_MappingConstraintPairSeq"]; +'CosNotifyFilter_MappingConstraintPairSeq'(suite) -> []; +'CosNotifyFilter_MappingConstraintPairSeq'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyFilter_MappingConstraintPairSeq':tc())), + ?match("IDL:omg.org/CosNotifyFilter/MappingConstraintPairSeq:1.0", + 'CosNotifyFilter_MappingConstraintPairSeq':id()), + ?match("CosNotifyFilter_MappingConstraintPairSeq", + 'CosNotifyFilter_MappingConstraintPairSeq':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyComm_InvalidEventType' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyComm_InvalidEventType'(doc) -> ["CosNotifyComm_InvalidEventType"]; +'CosNotifyComm_InvalidEventType'(suite) -> []; +'CosNotifyComm_InvalidEventType'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyComm_InvalidEventType':tc())), + ?match("IDL:omg.org/CosNotifyComm/InvalidEventType:1.0", + 'CosNotifyComm_InvalidEventType':id()), + ?match("CosNotifyComm_InvalidEventType", + 'CosNotifyComm_InvalidEventType':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_ProxyNotFound' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_ProxyNotFound'(doc) -> ["CosNotifyChannelAdmin_ProxyNotFound"]; +'CosNotifyChannelAdmin_ProxyNotFound'(suite) -> []; +'CosNotifyChannelAdmin_ProxyNotFound'(_) -> + ?match(true, orber_tc:check_tc('CosNotifyChannelAdmin_ProxyNotFound':tc())), + ?match("IDL:omg.org/CosNotifyChannelAdmin/ProxyNotFound:1.0", + 'CosNotifyChannelAdmin_ProxyNotFound':id()), + ?match("CosNotifyChannelAdmin_ProxyNotFound", + 'CosNotifyChannelAdmin_ProxyNotFound':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotification_AdminPropertiesAdmin' +%% Description: +%%----------------------------------------------------------------- +'CosNotification_AdminPropertiesAdmin'(doc) -> ["CosNotification_AdminPropertiesAdmin"]; +'CosNotification_AdminPropertiesAdmin'(suite) -> []; +'CosNotification_AdminPropertiesAdmin'(_) -> + ?nomatch(undefined, 'CosNotification_AdminPropertiesAdmin':oe_tc(get_admin)), + ?nomatch(undefined, 'CosNotification_AdminPropertiesAdmin':oe_tc(set_admin)), + ?match(undefined, 'CosNotification_AdminPropertiesAdmin':oe_tc(undefined)), + ?match([_|_], 'CosNotification_AdminPropertiesAdmin':oe_get_interface()), + ?match("IDL:omg.org/CosNotification/AdminPropertiesAdmin:1.0", + 'CosNotification_AdminPropertiesAdmin':typeID()), + check_tc('CosNotification_AdminPropertiesAdmin':oe_get_interface()), + ?match(true, 'CosNotification_AdminPropertiesAdmin':oe_is_a('CosNotification_AdminPropertiesAdmin':typeID())), + ?match(false, 'CosNotification_AdminPropertiesAdmin':oe_is_a("wrong")), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotification_QoSAdmin' +%% Description: +%%----------------------------------------------------------------- +'CosNotification_QoSAdmin'(doc) -> ["CosNotification_QoSAdmin"]; +'CosNotification_QoSAdmin'(suite) -> []; +'CosNotification_QoSAdmin'(_) -> + ?nomatch(undefined, 'CosNotification_QoSAdmin':oe_tc(get_qos)), + ?nomatch(undefined, 'CosNotification_QoSAdmin':oe_tc(set_qos)), + ?nomatch(undefined, 'CosNotification_QoSAdmin':oe_tc(validate_qos)), + ?match(undefined, 'CosNotification_QoSAdmin':oe_tc(undefined)), + ?match([_|_], 'CosNotification_QoSAdmin':oe_get_interface()), + ?match("IDL:omg.org/CosNotification/QoSAdmin:1.0", + 'CosNotification_QoSAdmin':typeID()), + check_tc('CosNotification_QoSAdmin':oe_get_interface()), + ?match(true, 'CosNotification_QoSAdmin':oe_is_a('CosNotification_QoSAdmin':typeID())), + ?match(false, 'CosNotification_QoSAdmin':oe_is_a("wrong")), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_ConsumerAdmin' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_ConsumerAdmin'(doc) -> ["CosNotifyChannelAdmin_ConsumerAdmin"]; +'CosNotifyChannelAdmin_ConsumerAdmin'(suite) -> []; +'CosNotifyChannelAdmin_ConsumerAdmin'(_) -> + ?nomatch(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc('_get_MyID')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc('_get_MyChannel')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc('_get_MyOperator')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc('_get_priority_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc('_set_priority_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc('_get_lifetime_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc('_set_lifetime_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc('_get_pull_suppliers')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc('_get_push_suppliers')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc(get_proxy_supplier)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc(obtain_notification_pull_supplier)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc(obtain_notification_push_supplier)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc(destroy)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc(get_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc(set_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc(validate_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc(subscription_change)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc(add_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc(remove_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc(get_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc(get_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc(remove_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc(obtain_push_supplier)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc(obtain_pull_supplier)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc(callSeq)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc(callAny)), + ?match(undefined, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_tc(undefined)), + ?match([_|_], 'CosNotifyChannelAdmin_ConsumerAdmin':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyChannelAdmin/ConsumerAdmin:1.0", + 'CosNotifyChannelAdmin_ConsumerAdmin':typeID()), + check_tc('CosNotifyChannelAdmin_ConsumerAdmin':oe_get_interface()), + ?match(true, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_is_a('CosNotifyChannelAdmin_ConsumerAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_is_a('CosNotification_QoSAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_is_a('CosNotifyComm_NotifySubscribe':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_is_a('CosNotifyFilter_FilterAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_is_a('CosEventChannelAdmin_ConsumerAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_is_a('oe_CosNotificationComm_Event':typeID())), + ?match(false, 'CosNotifyChannelAdmin_ConsumerAdmin':oe_is_a("wrong")), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_EventChannel' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_EventChannel'(doc) -> ["CosNotifyChannelAdmin_EventChannel"]; +'CosNotifyChannelAdmin_EventChannel'(suite) -> []; +'CosNotifyChannelAdmin_EventChannel'(_) -> + ?nomatch(undefined, 'CosNotifyChannelAdmin_EventChannel':oe_tc('_get_MyFactory')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_EventChannel':oe_tc('_get_default_consumer_admin')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_EventChannel':oe_tc('_get_default_supplier_admin')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_EventChannel':oe_tc('_get_default_filter_factory')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_EventChannel':oe_tc(new_for_consumers)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_EventChannel':oe_tc(new_for_suppliers)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_EventChannel':oe_tc(get_consumeradmin)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_EventChannel':oe_tc(get_supplieradmin)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_EventChannel':oe_tc(get_all_consumeradmins)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_EventChannel':oe_tc(get_all_supplieradmins)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_EventChannel':oe_tc(get_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_EventChannel':oe_tc(set_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_EventChannel':oe_tc(validate_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_EventChannel':oe_tc(get_admin)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_EventChannel':oe_tc(set_admin)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_EventChannel':oe_tc(for_consumers)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_EventChannel':oe_tc(for_suppliers)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_EventChannel':oe_tc(destroy)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_EventChannel':oe_tc(callSeq)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_EventChannel':oe_tc(callAny)), + ?match(undefined, 'CosNotifyChannelAdmin_EventChannel':oe_tc(undefined)), + ?match([_|_], 'CosNotifyChannelAdmin_EventChannel':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyChannelAdmin/EventChannel:1.0", + 'CosNotifyChannelAdmin_EventChannel':typeID()), + check_tc('CosNotifyChannelAdmin_EventChannel':oe_get_interface()), + ?match(true, 'CosNotifyChannelAdmin_EventChannel':oe_is_a('CosNotifyChannelAdmin_EventChannel':typeID())), + ?match(true, 'CosNotifyChannelAdmin_EventChannel':oe_is_a('CosNotification_QoSAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_EventChannel':oe_is_a('CosNotification_AdminPropertiesAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_EventChannel':oe_is_a('CosEventChannelAdmin_EventChannel':typeID())), + ?match(true, 'CosNotifyChannelAdmin_EventChannel':oe_is_a('oe_CosNotificationComm_Event':typeID())), + ?match(false, 'CosNotifyChannelAdmin_EventChannel':oe_is_a("wrong")), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_EventChannelFactory' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_EventChannelFactory'(doc) -> ["CosNotifyChannelAdmin_EventChannelFactory"]; +'CosNotifyChannelAdmin_EventChannelFactory'(suite) -> []; +'CosNotifyChannelAdmin_EventChannelFactory'(_) -> + ?nomatch(undefined, 'CosNotifyChannelAdmin_EventChannelFactory':oe_tc(create_channel)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_EventChannelFactory':oe_tc(get_all_channels)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_EventChannelFactory':oe_tc(get_event_channel)), + ?match(undefined, 'CosNotifyChannelAdmin_EventChannelFactory':oe_tc(undefined)), + ?match([_|_], 'CosNotifyChannelAdmin_EventChannelFactory':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyChannelAdmin/EventChannelFactory:1.0", + 'CosNotifyChannelAdmin_EventChannelFactory':typeID()), + check_tc('CosNotifyChannelAdmin_EventChannelFactory':oe_get_interface()), + ?match(true, 'CosNotifyChannelAdmin_EventChannelFactory':oe_is_a('CosNotifyChannelAdmin_EventChannelFactory':typeID())), + ?match(false, 'CosNotifyChannelAdmin_EventChannelFactory':oe_is_a("wrong")), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_ProxyConsumer' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_ProxyConsumer'(doc) -> ["CosNotifyChannelAdmin_ProxyConsumer"]; +'CosNotifyChannelAdmin_ProxyConsumer'(suite) -> []; +'CosNotifyChannelAdmin_ProxyConsumer'(_) -> + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyConsumer':oe_tc('_get_MyType')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyConsumer':oe_tc('_get_MyAdmin')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyConsumer':oe_tc(obtain_subscription_types)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyConsumer':oe_tc(validate_event_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyConsumer':oe_tc(get_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyConsumer':oe_tc(set_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyConsumer':oe_tc(validate_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyConsumer':oe_tc(add_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyConsumer':oe_tc(remove_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyConsumer':oe_tc(get_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyConsumer':oe_tc(get_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyConsumer':oe_tc(remove_all_filters)), + ?match(undefined, 'CosNotifyChannelAdmin_ProxyConsumer':oe_tc(undefined)), + ?match([_|_], 'CosNotifyChannelAdmin_ProxyConsumer':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyChannelAdmin/ProxyConsumer:1.0", + 'CosNotifyChannelAdmin_ProxyConsumer':typeID()), + check_tc('CosNotifyChannelAdmin_ProxyConsumer':oe_get_interface()), + ?match(true, 'CosNotifyChannelAdmin_ProxyConsumer':oe_is_a('CosNotifyChannelAdmin_ProxyConsumer':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyConsumer':oe_is_a('CosNotification_QoSAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyConsumer':oe_is_a('CosNotifyFilter_FilterAdmin':typeID())), + ?match(false, 'CosNotifyChannelAdmin_ProxyConsumer':oe_is_a("wrong")), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_ProxyPullConsumer' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_ProxyPullConsumer'(doc) -> ["CosNotifyChannelAdmin_ProxyPullConsumer"]; +'CosNotifyChannelAdmin_ProxyPullConsumer'(suite) -> []; +'CosNotifyChannelAdmin_ProxyPullConsumer'(_) -> + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_tc(connect_any_pull_supplier)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_tc(suspend_connection)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_tc(resume_connection)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_tc('_get_MyType')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_tc('_get_MyAdmin')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_tc(obtain_subscription_types)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_tc(validate_event_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_tc(get_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_tc(set_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_tc(validate_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_tc(add_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_tc(remove_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_tc(get_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_tc(get_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_tc(remove_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_tc(offer_change)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_tc(disconnect_pull_consumer)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_tc(connect_pull_supplier)), + ?match(undefined, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_tc(undefined)), + ?match([_|_], 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyChannelAdmin/ProxyPullConsumer:1.0", + 'CosNotifyChannelAdmin_ProxyPullConsumer':typeID()), + check_tc('CosNotifyChannelAdmin_ProxyPullConsumer':oe_get_interface()), + ?match(true, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_is_a('CosNotifyChannelAdmin_ProxyPullConsumer':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_is_a('CosNotifyChannelAdmin_ProxyConsumer':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_is_a('CosNotification_QoSAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_is_a('CosNotifyFilter_FilterAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_is_a('CosNotifyComm_PullConsumer':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_is_a('CosNotifyComm_NotifyPublish':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_is_a('CosEventComm_PullConsumer':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_is_a('CosEventChannelAdmin_ProxyPullConsumer':typeID())), + ?match(false, 'CosNotifyChannelAdmin_ProxyPullConsumer':oe_is_a("wrong")), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_ProxyPullSupplier' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_ProxyPullSupplier'(doc) -> ["CosNotifyChannelAdmin_ProxyPullSupplier"]; +'CosNotifyChannelAdmin_ProxyPullSupplier'(suite) -> []; +'CosNotifyChannelAdmin_ProxyPullSupplier'(_) -> + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_tc('_get_MyType')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_tc('_get_MyAdmin')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_tc('_get_priority_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_tc('_set_priority_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_tc('_get_lifetime_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_tc('_set_lifetime_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_tc(obtain_offered_types)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_tc(validate_event_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_tc(get_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_tc(set_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_tc(validate_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_tc(add_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_tc(remove_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_tc(get_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_tc(get_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_tc(remove_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_tc(subscription_change)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_tc(pull)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_tc(try_pull)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_tc(disconnect_pull_supplier)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_tc(connect_pull_consumer)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_tc(callSeq)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_tc(callAny)), + ?match(undefined, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_tc(undefined)), + ?match([_|_], 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyChannelAdmin/ProxyPullSupplier:1.0", + 'CosNotifyChannelAdmin_ProxyPullSupplier':typeID()), + check_tc('CosNotifyChannelAdmin_ProxyPullSupplier':oe_get_interface()), + ?match(true, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_is_a('CosNotifyChannelAdmin_ProxyPullSupplier':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_is_a('CosNotifyChannelAdmin_ProxySupplier':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_is_a('CosNotification_QoSAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_is_a('CosNotifyFilter_FilterAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_is_a('CosNotifyComm_PullSupplier':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_is_a('CosNotifyComm_NotifySubscribe':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_is_a('CosEventComm_PullSupplier':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_is_a('CosEventChannelAdmin_ProxyPullSupplier':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_is_a('oe_CosNotificationComm_Event':typeID())), + ?match(false, 'CosNotifyChannelAdmin_ProxyPullSupplier':oe_is_a("wrong")), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_ProxyPushConsumer' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_ProxyPushConsumer'(doc) -> ["CosNotifyChannelAdmin_ProxyPushConsumer"]; +'CosNotifyChannelAdmin_ProxyPushConsumer'(suite) -> []; +'CosNotifyChannelAdmin_ProxyPushConsumer'(_) -> + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_tc(connect_any_push_supplier)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_tc('_get_MyType')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_tc('_get_MyAdmin')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_tc(obtain_subscription_types)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_tc(validate_event_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_tc(get_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_tc(set_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_tc(validate_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_tc(add_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_tc(remove_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_tc(get_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_tc(get_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_tc(remove_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_tc(offer_change)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_tc(push)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_tc(disconnect_push_consumer)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_tc(connect_push_supplier)), + ?match(undefined, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_tc(undefined)), + ?match([_|_], 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyChannelAdmin/ProxyPushConsumer:1.0", + 'CosNotifyChannelAdmin_ProxyPushConsumer':typeID()), + check_tc('CosNotifyChannelAdmin_ProxyPushConsumer':oe_get_interface()), + ?match(true, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_is_a('CosNotifyChannelAdmin_ProxyPushConsumer':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_is_a('CosNotifyChannelAdmin_ProxyConsumer':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_is_a('CosNotification_QoSAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_is_a('CosNotifyFilter_FilterAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_is_a('CosNotifyComm_PushConsumer':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_is_a('CosNotifyComm_NotifyPublish':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_is_a('CosEventComm_PushConsumer':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_is_a('CosEventChannelAdmin_ProxyPushConsumer':typeID())), + ?match(false, 'CosNotifyChannelAdmin_ProxyPushConsumer':oe_is_a("wrong")), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_ProxyPushSupplier' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_ProxyPushSupplier'(doc) -> ["CosNotifyChannelAdmin_ProxyPushSupplier"]; +'CosNotifyChannelAdmin_ProxyPushSupplier'(suite) -> []; +'CosNotifyChannelAdmin_ProxyPushSupplier'(_) -> + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_tc(connect_any_push_consumer)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_tc(suspend_connection)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_tc(resume_connection)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_tc('_get_MyType')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_tc('_get_MyAdmin')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_tc('_get_priority_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_tc('_set_priority_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_tc('_get_lifetime_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_tc('_set_lifetime_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_tc(obtain_offered_types)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_tc(validate_event_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_tc(get_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_tc(set_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_tc(validate_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_tc(add_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_tc(remove_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_tc(get_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_tc(get_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_tc(remove_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_tc(subscription_change)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_tc(disconnect_push_supplier)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_tc(connect_push_consumer)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_tc(callSeq)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_tc(callAny)), + ?match(undefined, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_tc(undefined)), + ?match([_|_], 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyChannelAdmin/ProxyPushSupplier:1.0", + 'CosNotifyChannelAdmin_ProxyPushSupplier':typeID()), + check_tc('CosNotifyChannelAdmin_ProxyPushSupplier':oe_get_interface()), + ?match(true, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_is_a('CosNotifyChannelAdmin_ProxyPushSupplier':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_is_a('CosNotifyChannelAdmin_ProxySupplier':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_is_a('CosNotification_QoSAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_is_a('CosNotifyFilter_FilterAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_is_a('CosNotifyComm_PushSupplier':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_is_a('CosNotifyComm_NotifySubscribe':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_is_a('CosEventComm_PushSupplier':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_is_a('CosEventChannelAdmin_ProxyPushSupplier':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_is_a('oe_CosNotificationComm_Event':typeID())), + ?match(false, 'CosNotifyChannelAdmin_ProxyPushSupplier':oe_is_a("wrong")), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_ProxySupplier' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_ProxySupplier'(doc) -> ["CosNotifyChannelAdmin_ProxySupplier"]; +'CosNotifyChannelAdmin_ProxySupplier'(suite) -> []; +'CosNotifyChannelAdmin_ProxySupplier'(_) -> + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxySupplier':oe_tc('_get_MyType')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxySupplier':oe_tc('_get_MyAdmin')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxySupplier':oe_tc('_get_priority_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxySupplier':oe_tc('_set_priority_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxySupplier':oe_tc('_get_lifetime_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxySupplier':oe_tc('_set_lifetime_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxySupplier':oe_tc(obtain_offered_types)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxySupplier':oe_tc(validate_event_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxySupplier':oe_tc(get_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxySupplier':oe_tc(set_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxySupplier':oe_tc(validate_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxySupplier':oe_tc(add_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxySupplier':oe_tc(remove_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxySupplier':oe_tc(get_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxySupplier':oe_tc(get_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_ProxySupplier':oe_tc(remove_all_filters)), + ?match(undefined, 'CosNotifyChannelAdmin_ProxySupplier':oe_tc(undefined)), + ?match([_|_], 'CosNotifyChannelAdmin_ProxySupplier':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyChannelAdmin/ProxySupplier:1.0", + 'CosNotifyChannelAdmin_ProxySupplier':typeID()), + check_tc('CosNotifyChannelAdmin_ProxySupplier':oe_get_interface()), + ?match(true, 'CosNotifyChannelAdmin_ProxySupplier':oe_is_a('CosNotifyChannelAdmin_ProxySupplier':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxySupplier':oe_is_a('CosNotification_QoSAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_ProxySupplier':oe_is_a('CosNotifyFilter_FilterAdmin':typeID())), + ?match(false, 'CosNotifyChannelAdmin_ProxySupplier':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_SequenceProxyPullConsumer' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_SequenceProxyPullConsumer'(doc) -> ["CosNotifyChannelAdmin_SequenceProxyPullConsumer"]; +'CosNotifyChannelAdmin_SequenceProxyPullConsumer'(suite) -> []; +'CosNotifyChannelAdmin_SequenceProxyPullConsumer'(_) -> + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_tc(connect_sequence_pull_supplier)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_tc(suspend_connection)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_tc(resume_connection)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_tc('_get_MyType')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_tc('_get_MyAdmin')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_tc(obtain_subscription_types)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_tc(validate_event_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_tc(get_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_tc(set_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_tc(validate_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_tc(add_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_tc(remove_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_tc(get_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_tc(get_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_tc(remove_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_tc(disconnect_sequence_pull_consumer)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_tc(offer_change)), + ?match(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_tc(undefined)), + ?match([_|_], 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyChannelAdmin/SequenceProxyPullConsumer:1.0", + 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':typeID()), + check_tc('CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_get_interface()), + ?match(true, 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_is_a('CosNotifyChannelAdmin_SequenceProxyPullConsumer':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_is_a('CosNotifyChannelAdmin_ProxyConsumer':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_is_a('CosNotification_QoSAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_is_a('CosNotifyFilter_FilterAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_is_a('CosNotifyComm_SequencePullConsumer':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_is_a('CosNotifyComm_NotifyPublish':typeID())), + ?match(false, 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_SequenceProxyPullSupplier' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_SequenceProxyPullSupplier'(doc) -> ["CosNotifyChannelAdmin_SequenceProxyPullSupplier"]; +'CosNotifyChannelAdmin_SequenceProxyPullSupplier'(suite) -> []; +'CosNotifyChannelAdmin_SequenceProxyPullSupplier'(_) -> + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_tc(connect_sequence_pull_consumer)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_tc('_get_MyType')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_tc('_get_MyAdmin')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_tc('_get_priority_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_tc('_set_priority_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_tc('_get_lifetime_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_tc('_set_lifetime_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_tc(obtain_offered_types)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_tc(validate_event_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_tc(get_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_tc(set_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_tc(validate_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_tc(add_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_tc(remove_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_tc(get_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_tc(get_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_tc(remove_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_tc(pull_structured_events)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_tc(try_pull_structured_events)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_tc(disconnect_sequence_pull_supplier)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_tc(subscription_change)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_tc(callSeq)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_tc(callAny)), + ?match(undefined, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_tc(undefined)), + ?match([_|_], 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyChannelAdmin/SequenceProxyPullSupplier:1.0", + 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':typeID()), + check_tc('CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_get_interface()), + ?match(true, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_is_a('CosNotifyChannelAdmin_SequenceProxyPullSupplier':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_is_a('CosNotifyChannelAdmin_ProxySupplier':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_is_a('CosNotification_QoSAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_is_a('CosNotifyFilter_FilterAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_is_a('CosNotifyComm_SequencePullSupplier':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_is_a('CosNotifyComm_NotifySubscribe':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_is_a('oe_CosNotificationComm_Event':typeID())), + ?match(false, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_SequenceProxyPushConsumer' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_SequenceProxyPushConsumer'(doc) -> ["CosNotifyChannelAdmin_SequenceProxyPushConsumer"]; +'CosNotifyChannelAdmin_SequenceProxyPushConsumer'(suite) -> []; +'CosNotifyChannelAdmin_SequenceProxyPushConsumer'(_) -> + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':oe_tc(connect_sequence_push_supplier)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':oe_tc('_get_MyType')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':oe_tc('_get_MyAdmin')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':oe_tc(obtain_subscription_types)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':oe_tc(validate_event_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':oe_tc(get_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':oe_tc(set_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':oe_tc(validate_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':oe_tc(add_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':oe_tc(remove_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':oe_tc(get_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':oe_tc(get_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':oe_tc(remove_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':oe_tc(push_structured_events)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':oe_tc(disconnect_sequence_push_consumer)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':oe_tc(offer_change)), + ?match(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':oe_tc(undefined)), + ?match([_|_], 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyChannelAdmin/SequenceProxyPushConsumer:1.0", + 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':typeID()), + check_tc('CosNotifyChannelAdmin_SequenceProxyPushConsumer':oe_get_interface()), + ?match(true, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':oe_is_a('CosNotifyChannelAdmin_SequenceProxyPushConsumer':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':oe_is_a('CosNotifyChannelAdmin_ProxyConsumer':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':oe_is_a('CosNotification_QoSAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':oe_is_a('CosNotifyFilter_FilterAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':oe_is_a('CosNotifyComm_SequencePushConsumer':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':oe_is_a('CosNotifyComm_NotifyPublish':typeID())), + ?match(false, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_SequenceProxyPushSupplier' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_SequenceProxyPushSupplier'(doc) -> ["CosNotifyChannelAdmin_SequenceProxyPushSupplier"]; +'CosNotifyChannelAdmin_SequenceProxyPushSupplier'(suite) -> []; +'CosNotifyChannelAdmin_SequenceProxyPushSupplier'(_) -> + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_tc(connect_sequence_push_consumer)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_tc(suspend_connection)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_tc(resume_connection)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_tc('_get_MyType')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_tc('_get_MyAdmin')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_tc('_get_priority_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_tc('_set_priority_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_tc('_get_lifetime_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_tc('_set_lifetime_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_tc(obtain_offered_types)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_tc(validate_event_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_tc(get_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_tc(set_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_tc(validate_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_tc(add_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_tc(remove_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_tc(get_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_tc(get_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_tc(remove_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_tc(disconnect_sequence_push_supplier)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_tc(subscription_change)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_tc(callSeq)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_tc(callAny)), + ?match(undefined, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_tc(undefined)), + ?match([_|_], 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyChannelAdmin/SequenceProxyPushSupplier:1.0", + 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':typeID()), + check_tc('CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_get_interface()), + ?match(true, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_is_a('CosNotifyChannelAdmin_SequenceProxyPushSupplier':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_is_a('CosNotifyChannelAdmin_ProxySupplier':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_is_a('CosNotification_QoSAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_is_a('CosNotifyFilter_FilterAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_is_a('CosNotifyComm_SequencePushSupplier':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_is_a('CosNotifyComm_NotifySubscribe':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_is_a('oe_CosNotificationComm_Event':typeID())), + ?match(false, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_StructuredProxyPullConsumer' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_StructuredProxyPullConsumer'(doc) -> ["CosNotifyChannelAdmin_StructuredProxyPullConsumer"]; +'CosNotifyChannelAdmin_StructuredProxyPullConsumer'(suite) -> []; +'CosNotifyChannelAdmin_StructuredProxyPullConsumer'(_) -> + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_tc(connect_structured_pull_supplier)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_tc(suspend_connection)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_tc(resume_connection)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_tc('_get_MyType')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_tc('_get_MyAdmin')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_tc(obtain_subscription_types)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_tc(validate_event_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_tc(get_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_tc(set_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_tc(validate_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_tc(add_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_tc(remove_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_tc(get_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_tc(get_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_tc(remove_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_tc(disconnect_structured_pull_consumer)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_tc(offer_change)), + ?match(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_tc(undefined)), + ?match([_|_], 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyChannelAdmin/StructuredProxyPullConsumer:1.0", + 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':typeID()), + check_tc('CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_get_interface()), + ?match(true, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_is_a('CosNotifyChannelAdmin_StructuredProxyPullConsumer':typeID())), + ?match(true, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_is_a('CosNotifyChannelAdmin_ProxyConsumer':typeID())), + ?match(true, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_is_a('CosNotification_QoSAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_is_a('CosNotifyFilter_FilterAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_is_a('CosNotifyComm_StructuredPullConsumer':typeID())), + ?match(true, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_is_a('CosNotifyComm_NotifyPublish':typeID())), + ?match(false, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_StructuredProxyPullSupplier' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_StructuredProxyPullSupplier'(doc) -> ["CosNotifyChannelAdmin_StructuredProxyPullSupplier"]; +'CosNotifyChannelAdmin_StructuredProxyPullSupplier'(suite) -> []; +'CosNotifyChannelAdmin_StructuredProxyPullSupplier'(_) -> + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_tc(connect_structured_pull_consumer)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_tc('_get_MyType')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_tc('_get_MyAdmin')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_tc('_get_priority_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_tc('_set_priority_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_tc('_get_lifetime_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_tc('_set_lifetime_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_tc(obtain_offered_types)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_tc(validate_event_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_tc(get_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_tc(set_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_tc(validate_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_tc(add_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_tc(remove_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_tc(get_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_tc(get_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_tc(remove_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_tc(pull_structured_event)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_tc(try_pull_structured_event)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_tc(disconnect_structured_pull_supplier)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_tc(subscription_change)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_tc(callSeq)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_tc(callAny)), + ?match(undefined, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_tc(undefined)), + ?match([_|_], 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyChannelAdmin/StructuredProxyPullSupplier:1.0", + 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':typeID()), + check_tc('CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_get_interface()), + ?match(true, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_is_a('CosNotifyChannelAdmin_StructuredProxyPullSupplier':typeID())), + ?match(true, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_is_a('CosNotifyChannelAdmin_ProxySupplier':typeID())), + ?match(true, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_is_a('CosNotification_QoSAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_is_a('CosNotifyFilter_FilterAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_is_a('CosNotifyComm_StructuredPullSupplier':typeID())), + ?match(true, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_is_a('CosNotifyComm_NotifySubscribe':typeID())), + ?match(true, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_is_a('oe_CosNotificationComm_Event':typeID())), + ?match(false, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_StructuredProxyPushConsumer' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_StructuredProxyPushConsumer'(doc) -> ["CosNotifyChannelAdmin_StructuredProxyPushConsumer"]; +'CosNotifyChannelAdmin_StructuredProxyPushConsumer'(suite) -> []; +'CosNotifyChannelAdmin_StructuredProxyPushConsumer'(_) -> + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':oe_tc(connect_structured_push_supplier)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':oe_tc('_get_MyType')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':oe_tc('_get_MyAdmin')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':oe_tc(obtain_subscription_types)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':oe_tc(validate_event_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':oe_tc(get_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':oe_tc(set_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':oe_tc(validate_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':oe_tc(add_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':oe_tc(remove_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':oe_tc(get_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':oe_tc(get_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':oe_tc(remove_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':oe_tc(push_structured_event)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':oe_tc(disconnect_structured_push_consumer)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':oe_tc(offer_change)), + ?match(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':oe_tc(undefined)), + ?match([_|_], 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyChannelAdmin/StructuredProxyPushConsumer:1.0", + 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':typeID()), + check_tc('CosNotifyChannelAdmin_StructuredProxyPushConsumer':oe_get_interface()), + ?match(true, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':oe_is_a('CosNotifyChannelAdmin_StructuredProxyPushConsumer':typeID())), + ?match(true, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':oe_is_a('CosNotifyChannelAdmin_ProxyConsumer':typeID())), + ?match(true, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':oe_is_a('CosNotification_QoSAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':oe_is_a('CosNotifyFilter_FilterAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':oe_is_a('CosNotifyComm_StructuredPushConsumer':typeID())), + ?match(true, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':oe_is_a('CosNotifyComm_NotifyPublish':typeID())), + ?match(false, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_StructuredProxyPushSupplier' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_StructuredProxyPushSupplier'(doc) -> ["CosNotifyChannelAdmin_StructuredProxyPushSupplier"]; +'CosNotifyChannelAdmin_StructuredProxyPushSupplier'(suite) -> []; +'CosNotifyChannelAdmin_StructuredProxyPushSupplier'(_) -> + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_tc(connect_structured_push_consumer)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_tc(suspend_connection)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_tc(resume_connection)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_tc('_get_MyType')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_tc('_get_MyAdmin')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_tc('_get_priority_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_tc('_set_priority_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_tc('_get_lifetime_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_tc('_set_lifetime_filter')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_tc(obtain_offered_types)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_tc(validate_event_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_tc(get_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_tc(set_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_tc(validate_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_tc(add_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_tc(remove_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_tc(get_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_tc(get_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_tc(remove_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_tc(disconnect_structured_push_supplier)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_tc(subscription_change)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_tc(callSeq)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_tc(callAny)), + ?match(undefined, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_tc(undefined)), + ?match([_|_], 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyChannelAdmin/StructuredProxyPushSupplier:1.0", + 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':typeID()), + check_tc('CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_get_interface()), + ?match(true, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_is_a('CosNotifyChannelAdmin_StructuredProxyPushSupplier':typeID())), + ?match(true, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_is_a('CosNotifyChannelAdmin_ProxySupplier':typeID())), + ?match(true, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_is_a('CosNotification_QoSAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_is_a('CosNotifyFilter_FilterAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_is_a('CosNotifyComm_StructuredPushSupplier':typeID())), + ?match(true, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_is_a('CosNotifyComm_NotifySubscribe':typeID())), + ?match(true, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_is_a('oe_CosNotificationComm_Event':typeID())), + ?match(false, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyChannelAdmin_SupplierAdmin' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyChannelAdmin_SupplierAdmin'(doc) -> ["CosNotifyChannelAdmin_SupplierAdmin"]; +'CosNotifyChannelAdmin_SupplierAdmin'(suite) -> []; +'CosNotifyChannelAdmin_SupplierAdmin'(_) -> + ?nomatch(undefined, 'CosNotifyChannelAdmin_SupplierAdmin':oe_tc('_get_MyID')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SupplierAdmin':oe_tc('_get_MyChannel')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SupplierAdmin':oe_tc('_get_MyOperator')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SupplierAdmin':oe_tc('_get_pull_consumers')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SupplierAdmin':oe_tc('_get_push_consumers')), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SupplierAdmin':oe_tc(get_proxy_consumer)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SupplierAdmin':oe_tc(obtain_notification_pull_consumer)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SupplierAdmin':oe_tc(obtain_notification_push_consumer)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SupplierAdmin':oe_tc(destroy)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SupplierAdmin':oe_tc(get_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SupplierAdmin':oe_tc(set_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SupplierAdmin':oe_tc(validate_qos)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SupplierAdmin':oe_tc(offer_change)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SupplierAdmin':oe_tc(add_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SupplierAdmin':oe_tc(remove_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SupplierAdmin':oe_tc(get_filter)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SupplierAdmin':oe_tc(get_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SupplierAdmin':oe_tc(remove_all_filters)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SupplierAdmin':oe_tc(obtain_push_consumer)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SupplierAdmin':oe_tc(obtain_pull_consumer)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SupplierAdmin':oe_tc(callSeq)), + ?nomatch(undefined, 'CosNotifyChannelAdmin_SupplierAdmin':oe_tc(callAny)), + ?match(undefined, 'CosNotifyChannelAdmin_SupplierAdmin':oe_tc(undefined)), + ?match([_|_], 'CosNotifyChannelAdmin_SupplierAdmin':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyChannelAdmin/SupplierAdmin:1.0", + 'CosNotifyChannelAdmin_SupplierAdmin':typeID()), + check_tc('CosNotifyChannelAdmin_SupplierAdmin':oe_get_interface()), + ?match(true, 'CosNotifyChannelAdmin_SupplierAdmin':oe_is_a('CosNotifyChannelAdmin_SupplierAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SupplierAdmin':oe_is_a('CosNotification_QoSAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SupplierAdmin':oe_is_a('CosNotifyComm_NotifyPublish':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SupplierAdmin':oe_is_a('CosNotifyFilter_FilterAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SupplierAdmin':oe_is_a('CosEventChannelAdmin_SupplierAdmin':typeID())), + ?match(true, 'CosNotifyChannelAdmin_SupplierAdmin':oe_is_a('oe_CosNotificationComm_Event':typeID())), + ?match(false, 'CosNotifyChannelAdmin_SupplierAdmin':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyFilter_Filter' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyFilter_Filter'(doc) -> ["CosNotifyFilter_Filter"]; +'CosNotifyFilter_Filter'(suite) -> []; +'CosNotifyFilter_Filter'(_) -> + ?nomatch(undefined, 'CosNotifyFilter_Filter':oe_tc('_get_constraint_grammar')), + ?nomatch(undefined, 'CosNotifyFilter_Filter':oe_tc(add_constraints)), + ?nomatch(undefined, 'CosNotifyFilter_Filter':oe_tc(modify_constraints)), + ?nomatch(undefined, 'CosNotifyFilter_Filter':oe_tc(get_constraints)), + ?nomatch(undefined, 'CosNotifyFilter_Filter':oe_tc(get_all_constraints)), + ?nomatch(undefined, 'CosNotifyFilter_Filter':oe_tc(remove_all_constraints)), + ?nomatch(undefined, 'CosNotifyFilter_Filter':oe_tc(destroy)), + ?nomatch(undefined, 'CosNotifyFilter_Filter':oe_tc(match)), + ?nomatch(undefined, 'CosNotifyFilter_Filter':oe_tc(match_structured)), + ?nomatch(undefined, 'CosNotifyFilter_Filter':oe_tc(match_typed)), + ?nomatch(undefined, 'CosNotifyFilter_Filter':oe_tc(attach_callback)), + ?nomatch(undefined, 'CosNotifyFilter_Filter':oe_tc(detach_callback)), + ?nomatch(undefined, 'CosNotifyFilter_Filter':oe_tc(get_callbacks)), + ?match(undefined, 'CosNotifyFilter_Filter':oe_tc(undefined)), + ?match([_|_], 'CosNotifyFilter_Filter':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyFilter/Filter:1.0", + 'CosNotifyFilter_Filter':typeID()), + check_tc('CosNotifyFilter_Filter':oe_get_interface()), + ?match(true, 'CosNotifyFilter_Filter':oe_is_a('CosNotifyFilter_Filter':typeID())), + ?match(false, 'CosNotifyFilter_Filter':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyFilter_FilterAdmin' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyFilter_FilterAdmin'(doc) -> ["CosNotifyFilter_FilterAdmin"]; +'CosNotifyFilter_FilterAdmin'(suite) -> []; +'CosNotifyFilter_FilterAdmin'(_) -> + ?nomatch(undefined, 'CosNotifyFilter_FilterAdmin':oe_tc(add_filter)), + ?nomatch(undefined, 'CosNotifyFilter_FilterAdmin':oe_tc(remove_filter)), + ?nomatch(undefined, 'CosNotifyFilter_FilterAdmin':oe_tc(get_filter)), + ?nomatch(undefined, 'CosNotifyFilter_FilterAdmin':oe_tc(get_all_filters)), + ?nomatch(undefined, 'CosNotifyFilter_FilterAdmin':oe_tc(remove_all_filters)), + ?match(undefined, 'CosNotifyFilter_FilterAdmin':oe_tc(undefined)), + ?match([_|_], 'CosNotifyFilter_FilterAdmin':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyFilter/FilterAdmin:1.0", + 'CosNotifyFilter_FilterAdmin':typeID()), + check_tc('CosNotifyFilter_FilterAdmin':oe_get_interface()), + ?match(true, 'CosNotifyFilter_FilterAdmin':oe_is_a('CosNotifyFilter_FilterAdmin':typeID())), + ?match(false, 'CosNotifyFilter_FilterAdmin':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyFilter_FilterFactory' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyFilter_FilterFactory'(doc) -> ["CosNotifyFilter_FilterFactory"]; +'CosNotifyFilter_FilterFactory'(suite) -> []; +'CosNotifyFilter_FilterFactory'(_) -> + ?nomatch(undefined, 'CosNotifyFilter_FilterFactory':oe_tc(create_filter)), + ?nomatch(undefined, 'CosNotifyFilter_FilterFactory':oe_tc(create_mapping_filter)), + ?match(undefined, 'CosNotifyFilter_FilterFactory':oe_tc(undefined)), + ?match([_|_], 'CosNotifyFilter_FilterFactory':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyFilter/FilterFactory:1.0", + 'CosNotifyFilter_FilterFactory':typeID()), + check_tc('CosNotifyFilter_FilterFactory':oe_get_interface()), + ?match(true, 'CosNotifyFilter_FilterFactory':oe_is_a('CosNotifyFilter_FilterFactory':typeID())), + ?match(false, 'CosNotifyFilter_FilterFactory':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyFilter_MappingFilter' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyFilter_MappingFilter'(doc) -> ["CosNotifyFilter_MappingFilter"]; +'CosNotifyFilter_MappingFilter'(suite) -> []; +'CosNotifyFilter_MappingFilter'(_) -> + ?nomatch(undefined, 'CosNotifyFilter_MappingFilter':oe_tc('_get_constraint_grammar')), + ?nomatch(undefined, 'CosNotifyFilter_MappingFilter':oe_tc('_get_value_type')), + ?nomatch(undefined, 'CosNotifyFilter_MappingFilter':oe_tc('_get_default_value')), + ?nomatch(undefined, 'CosNotifyFilter_MappingFilter':oe_tc(add_mapping_constraints)), + ?nomatch(undefined, 'CosNotifyFilter_MappingFilter':oe_tc(modify_mapping_constraints)), + ?nomatch(undefined, 'CosNotifyFilter_MappingFilter':oe_tc(get_mapping_constraints)), + ?nomatch(undefined, 'CosNotifyFilter_MappingFilter':oe_tc(get_all_mapping_constraints)), + ?nomatch(undefined, 'CosNotifyFilter_MappingFilter':oe_tc(remove_all_mapping_constraints)), + ?nomatch(undefined, 'CosNotifyFilter_MappingFilter':oe_tc(destroy)), + ?nomatch(undefined, 'CosNotifyFilter_MappingFilter':oe_tc(match)), + ?nomatch(undefined, 'CosNotifyFilter_MappingFilter':oe_tc(match_structured)), + ?nomatch(undefined, 'CosNotifyFilter_MappingFilter':oe_tc(match_typed)), + ?match(undefined, 'CosNotifyFilter_MappingFilter':oe_tc(undefined)), + ?match([_|_], 'CosNotifyFilter_MappingFilter':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyFilter/MappingFilter:1.0", + 'CosNotifyFilter_MappingFilter':typeID()), + check_tc('CosNotifyFilter_MappingFilter':oe_get_interface()), + ?match(true, 'CosNotifyFilter_MappingFilter':oe_is_a('CosNotifyFilter_MappingFilter':typeID())), + ?match(false, 'CosNotifyFilter_MappingFilter':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyComm_NotifyPublish' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyComm_NotifyPublish'(doc) -> ["CosNotifyComm_NotifyPublish"]; +'CosNotifyComm_NotifyPublish'(suite) -> []; +'CosNotifyComm_NotifyPublish'(_) -> + ?nomatch(undefined, 'CosNotifyComm_NotifyPublish':oe_tc(offer_change)), + ?match(undefined, 'CosNotifyComm_NotifyPublish':oe_tc(undefined)), + ?match([_|_], 'CosNotifyComm_NotifyPublish':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyComm/NotifyPublish:1.0", + 'CosNotifyComm_NotifyPublish':typeID()), + check_tc('CosNotifyComm_NotifyPublish':oe_get_interface()), + ?match(true, 'CosNotifyComm_NotifyPublish':oe_is_a('CosNotifyComm_NotifyPublish':typeID())), + ?match(false, 'CosNotifyComm_NotifyPublish':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyComm_NotifySubscribe' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyComm_NotifySubscribe'(doc) -> ["CosNotifyComm_NotifySubscribe"]; +'CosNotifyComm_NotifySubscribe'(suite) -> []; +'CosNotifyComm_NotifySubscribe'(_) -> + ?nomatch(undefined, 'CosNotifyComm_NotifySubscribe':oe_tc(subscription_change)), + ?match(undefined, 'CosNotifyComm_NotifySubscribe':oe_tc(undefined)), + ?match([_|_], 'CosNotifyComm_NotifySubscribe':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyComm/NotifySubscribe:1.0", + 'CosNotifyComm_NotifySubscribe':typeID()), + check_tc('CosNotifyComm_NotifySubscribe':oe_get_interface()), + ?match(true, 'CosNotifyComm_NotifySubscribe':oe_is_a('CosNotifyComm_NotifySubscribe':typeID())), + ?match(false, 'CosNotifyComm_NotifySubscribe':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyComm_PullConsumer' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyComm_PullConsumer'(doc) -> ["CosNotifyComm_PullConsumer"]; +'CosNotifyComm_PullConsumer'(suite) -> []; +'CosNotifyComm_PullConsumer'(_) -> + ?nomatch(undefined, 'CosNotifyComm_PullConsumer':oe_tc(offer_change)), + ?nomatch(undefined, 'CosNotifyComm_PullConsumer':oe_tc(disconnect_pull_consumer)), + ?match(undefined, 'CosNotifyComm_PullConsumer':oe_tc(undefined)), + ?match([_|_], 'CosNotifyComm_PullConsumer':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyComm/PullConsumer:1.0", + 'CosNotifyComm_PullConsumer':typeID()), + check_tc('CosNotifyComm_PullConsumer':oe_get_interface()), + ?match(true, 'CosNotifyComm_PullConsumer':oe_is_a('CosNotifyComm_PullConsumer':typeID())), + ?match(true, 'CosNotifyComm_PullConsumer':oe_is_a('CosNotifyComm_NotifyPublish':typeID())), + ?match(true, 'CosNotifyComm_PullConsumer':oe_is_a('CosEventComm_PullConsumer':typeID())), + ?match(false, 'CosNotifyComm_PullConsumer':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyComm_PullSupplier' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyComm_PullSupplier'(doc) -> ["CosNotifyComm_PullSupplier"]; +'CosNotifyComm_PullSupplier'(suite) -> []; +'CosNotifyComm_PullSupplier'(_) -> + ?nomatch(undefined, 'CosNotifyComm_PullSupplier':oe_tc(subscription_change)), + ?nomatch(undefined, 'CosNotifyComm_PullSupplier':oe_tc(pull)), + ?nomatch(undefined, 'CosNotifyComm_PullSupplier':oe_tc(try_pull)), + ?nomatch(undefined, 'CosNotifyComm_PullSupplier':oe_tc(disconnect_pull_supplier)), + ?match(undefined, 'CosNotifyComm_PullSupplier':oe_tc(undefined)), + ?match([_|_], 'CosNotifyComm_PullSupplier':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyComm/PullSupplier:1.0", + 'CosNotifyComm_PullSupplier':typeID()), + check_tc('CosNotifyComm_PullSupplier':oe_get_interface()), + ?match(true, 'CosNotifyComm_PullSupplier':oe_is_a('CosNotifyComm_PullSupplier':typeID())), + ?match(true, 'CosNotifyComm_PullSupplier':oe_is_a('CosNotifyComm_NotifySubscribe':typeID())), + ?match(true, 'CosNotifyComm_PullSupplier':oe_is_a('CosEventComm_PullSupplier':typeID())), + ?match(false, 'CosNotifyComm_PullSupplier':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyComm_PushConsumer' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyComm_PushConsumer'(doc) -> ["CosNotifyComm_PushConsumer"]; +'CosNotifyComm_PushConsumer'(suite) -> []; +'CosNotifyComm_PushConsumer'(_) -> + ?nomatch(undefined, 'CosNotifyComm_PushConsumer':oe_tc(offer_change)), + ?nomatch(undefined, 'CosNotifyComm_PushConsumer':oe_tc(push)), + ?nomatch(undefined, 'CosNotifyComm_PushConsumer':oe_tc(disconnect_push_consumer)), + ?match(undefined, 'CosNotifyComm_PushConsumer':oe_tc(undefined)), + ?match([_|_], 'CosNotifyComm_PushConsumer':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyComm/PushConsumer:1.0", + 'CosNotifyComm_PushConsumer':typeID()), + check_tc('CosNotifyComm_PushConsumer':oe_get_interface()), + ?match(true, 'CosNotifyComm_PushConsumer':oe_is_a('CosNotifyComm_PushConsumer':typeID())), + ?match(true, 'CosNotifyComm_PushConsumer':oe_is_a('CosNotifyComm_NotifyPublish':typeID())), + ?match(true, 'CosNotifyComm_PushConsumer':oe_is_a('CosEventComm_PushConsumer':typeID())), + ?match(false, 'CosNotifyComm_PushConsumer':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyComm_PushSupplier' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyComm_PushSupplier'(doc) -> ["CosNotifyComm_PushSupplier"]; +'CosNotifyComm_PushSupplier'(suite) -> []; +'CosNotifyComm_PushSupplier'(_) -> + ?nomatch(undefined, 'CosNotifyComm_PushSupplier':oe_tc(subscription_change)), + ?nomatch(undefined, 'CosNotifyComm_PushSupplier':oe_tc(disconnect_push_supplier)), + ?match(undefined, 'CosNotifyComm_PushSupplier':oe_tc(undefined)), + ?match([_|_], 'CosNotifyComm_PushSupplier':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyComm/PushSupplier:1.0", + 'CosNotifyComm_PushSupplier':typeID()), + check_tc('CosNotifyComm_PushSupplier':oe_get_interface()), + ?match(true, 'CosNotifyComm_PushSupplier':oe_is_a('CosNotifyComm_PushSupplier':typeID())), + ?match(true, 'CosNotifyComm_PushSupplier':oe_is_a('CosNotifyComm_NotifySubscribe':typeID())), + ?match(true, 'CosNotifyComm_PushSupplier':oe_is_a('CosEventComm_PushSupplier':typeID())), + ?match(false, 'CosNotifyComm_PushSupplier':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyComm_SequencePullConsumer' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyComm_SequencePullConsumer'(doc) -> ["CosNotifyComm_SequencePullConsumer"]; +'CosNotifyComm_SequencePullConsumer'(suite) -> []; +'CosNotifyComm_SequencePullConsumer'(_) -> + ?nomatch(undefined, 'CosNotifyComm_SequencePullConsumer':oe_tc(disconnect_sequence_pull_consumer)), + ?nomatch(undefined, 'CosNotifyComm_SequencePullConsumer':oe_tc(offer_change)), + ?match(undefined, 'CosNotifyComm_SequencePullConsumer':oe_tc(undefined)), + ?match([_|_], 'CosNotifyComm_SequencePullConsumer':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyComm/SequencePullConsumer:1.0", + 'CosNotifyComm_SequencePullConsumer':typeID()), + check_tc('CosNotifyComm_SequencePullConsumer':oe_get_interface()), + ?match(true, 'CosNotifyComm_SequencePullConsumer':oe_is_a('CosNotifyComm_SequencePullConsumer':typeID())), + ?match(true, 'CosNotifyComm_SequencePullConsumer':oe_is_a('CosNotifyComm_NotifyPublish':typeID())), + ?match(false, 'CosNotifyComm_SequencePullConsumer':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyComm_SequencePullSupplier' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyComm_SequencePullSupplier'(doc) -> ["CosNotifyComm_SequencePullSupplier"]; +'CosNotifyComm_SequencePullSupplier'(suite) -> []; +'CosNotifyComm_SequencePullSupplier'(_) -> + ?nomatch(undefined, 'CosNotifyComm_SequencePullSupplier':oe_tc(pull_structured_events)), + ?nomatch(undefined, 'CosNotifyComm_SequencePullSupplier':oe_tc(try_pull_structured_events)), + ?nomatch(undefined, 'CosNotifyComm_SequencePullSupplier':oe_tc(disconnect_sequence_pull_supplier)), + ?nomatch(undefined, 'CosNotifyComm_SequencePullSupplier':oe_tc(subscription_change)), + ?match(undefined, 'CosNotifyComm_SequencePullSupplier':oe_tc(undefined)), + ?match([_|_], 'CosNotifyComm_SequencePullSupplier':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyComm/SequencePullSupplier:1.0", + 'CosNotifyComm_SequencePullSupplier':typeID()), + check_tc('CosNotifyComm_SequencePullSupplier':oe_get_interface()), + ?match(true, 'CosNotifyComm_SequencePullSupplier':oe_is_a('CosNotifyComm_SequencePullSupplier':typeID())), + ?match(true, 'CosNotifyComm_SequencePullSupplier':oe_is_a('CosNotifyComm_NotifySubscribe':typeID())), + ?match(false, 'CosNotifyComm_SequencePullSupplier':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyComm_SequencePushConsumer' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyComm_SequencePushConsumer'(doc) -> ["CosNotifyComm_SequencePushConsumer"]; +'CosNotifyComm_SequencePushConsumer'(suite) -> []; +'CosNotifyComm_SequencePushConsumer'(_) -> + ?nomatch(undefined, 'CosNotifyComm_SequencePushConsumer':oe_tc(push_structured_events)), + ?nomatch(undefined, 'CosNotifyComm_SequencePushConsumer':oe_tc(disconnect_sequence_push_consumer)), + ?nomatch(undefined, 'CosNotifyComm_SequencePushConsumer':oe_tc(offer_change)), + ?match(undefined, 'CosNotifyComm_SequencePushConsumer':oe_tc(undefined)), + ?match([_|_], 'CosNotifyComm_SequencePushConsumer':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyComm/SequencePushConsumer:1.0", + 'CosNotifyComm_SequencePushConsumer':typeID()), + check_tc('CosNotifyComm_SequencePushConsumer':oe_get_interface()), + ?match(true, 'CosNotifyComm_SequencePushConsumer':oe_is_a('CosNotifyComm_SequencePushConsumer':typeID())), + ?match(true, 'CosNotifyComm_SequencePushConsumer':oe_is_a('CosNotifyComm_NotifyPublish':typeID())), + ?match(false, 'CosNotifyComm_SequencePushConsumer':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyComm_SequencePushSupplier' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyComm_SequencePushSupplier'(doc) -> ["CosNotifyComm_SequencePushSupplier"]; +'CosNotifyComm_SequencePushSupplier'(suite) -> []; +'CosNotifyComm_SequencePushSupplier'(_) -> + ?nomatch(undefined, 'CosNotifyComm_SequencePushSupplier':oe_tc(disconnect_sequence_push_supplier)), + ?nomatch(undefined, 'CosNotifyComm_SequencePushSupplier':oe_tc(subscription_change)), + ?match(undefined, 'CosNotifyComm_SequencePushSupplier':oe_tc(undefined)), + ?match([_|_], 'CosNotifyComm_SequencePushSupplier':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyComm/SequencePushSupplier:1.0", + 'CosNotifyComm_SequencePushSupplier':typeID()), + check_tc('CosNotifyComm_SequencePushSupplier':oe_get_interface()), + ?match(true, 'CosNotifyComm_SequencePushSupplier':oe_is_a('CosNotifyComm_SequencePushSupplier':typeID())), + ?match(true, 'CosNotifyComm_SequencePushSupplier':oe_is_a('CosNotifyComm_NotifySubscribe':typeID())), + ?match(false, 'CosNotifyComm_SequencePushSupplier':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyComm_StructuredPullConsumer' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyComm_StructuredPullConsumer'(doc) -> ["CosNotifyComm_StructuredPullConsumer"]; +'CosNotifyComm_StructuredPullConsumer'(suite) -> []; +'CosNotifyComm_StructuredPullConsumer'(_) -> + ?nomatch(undefined, 'CosNotifyComm_StructuredPullConsumer':oe_tc(disconnect_structured_pull_consumer)), + ?nomatch(undefined, 'CosNotifyComm_StructuredPullConsumer':oe_tc(offer_change)), + ?match(undefined, 'CosNotifyComm_StructuredPullConsumer':oe_tc(undefined)), + ?match([_|_], 'CosNotifyComm_StructuredPullConsumer':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyComm/StructuredPullConsumer:1.0", + 'CosNotifyComm_StructuredPullConsumer':typeID()), + check_tc('CosNotifyComm_StructuredPullConsumer':oe_get_interface()), + ?match(true, 'CosNotifyComm_StructuredPullConsumer':oe_is_a('CosNotifyComm_StructuredPullConsumer':typeID())), + ?match(true, 'CosNotifyComm_StructuredPullConsumer':oe_is_a('CosNotifyComm_NotifyPublish':typeID())), + ?match(false, 'CosNotifyComm_StructuredPullConsumer':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyComm_StructuredPullSupplier' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyComm_StructuredPullSupplier'(doc) -> ["CosNotifyComm_StructuredPullSupplier"]; +'CosNotifyComm_StructuredPullSupplier'(suite) -> []; +'CosNotifyComm_StructuredPullSupplier'(_) -> + ?nomatch(undefined, 'CosNotifyComm_StructuredPullSupplier':oe_tc(pull_structured_event)), + ?nomatch(undefined, 'CosNotifyComm_StructuredPullSupplier':oe_tc(try_pull_structured_event)), + ?nomatch(undefined, 'CosNotifyComm_StructuredPullSupplier':oe_tc(disconnect_structured_pull_supplier)), + ?nomatch(undefined, 'CosNotifyComm_StructuredPullSupplier':oe_tc(subscription_change)), + ?match(undefined, 'CosNotifyComm_StructuredPullSupplier':oe_tc(undefined)), + ?match([_|_], 'CosNotifyComm_StructuredPullSupplier':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyComm/StructuredPullSupplier:1.0", + 'CosNotifyComm_StructuredPullSupplier':typeID()), + check_tc('CosNotifyComm_StructuredPullSupplier':oe_get_interface()), + ?match(true, 'CosNotifyComm_StructuredPullSupplier':oe_is_a('CosNotifyComm_StructuredPullSupplier':typeID())), + ?match(true, 'CosNotifyComm_StructuredPullSupplier':oe_is_a('CosNotifyComm_NotifySubscribe':typeID())), + ?match(false, 'CosNotifyComm_StructuredPullSupplier':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyComm_StructuredPushConsumer' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyComm_StructuredPushConsumer'(doc) -> ["CosNotifyComm_StructuredPushConsumer"]; +'CosNotifyComm_StructuredPushConsumer'(suite) -> []; +'CosNotifyComm_StructuredPushConsumer'(_) -> + ?nomatch(undefined, 'CosNotifyComm_StructuredPushConsumer':oe_tc(push_structured_event)), + ?nomatch(undefined, 'CosNotifyComm_StructuredPushConsumer':oe_tc(disconnect_structured_push_consumer)), + ?nomatch(undefined, 'CosNotifyComm_StructuredPushConsumer':oe_tc(offer_change)), + ?match(undefined, 'CosNotifyComm_StructuredPushConsumer':oe_tc(undefined)), + ?match([_|_], 'CosNotifyComm_StructuredPushConsumer':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyComm/StructuredPushConsumer:1.0", + 'CosNotifyComm_StructuredPushConsumer':typeID()), + check_tc('CosNotifyComm_StructuredPushConsumer':oe_get_interface()), + ?match(true, 'CosNotifyComm_StructuredPushConsumer':oe_is_a('CosNotifyComm_StructuredPushConsumer':typeID())), + ?match(true, 'CosNotifyComm_StructuredPushConsumer':oe_is_a('CosNotifyComm_NotifyPublish':typeID())), + ?match(false, 'CosNotifyComm_StructuredPushConsumer':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNotifyComm_StructuredPushSupplier' +%% Description: +%%----------------------------------------------------------------- +'CosNotifyComm_StructuredPushSupplier'(doc) -> ["CosNotifyComm_StructuredPushSupplier"]; +'CosNotifyComm_StructuredPushSupplier'(suite) -> []; +'CosNotifyComm_StructuredPushSupplier'(_) -> + ?nomatch(undefined, 'CosNotifyComm_StructuredPushSupplier':oe_tc(disconnect_structured_push_supplier)), + ?nomatch(undefined, 'CosNotifyComm_StructuredPushSupplier':oe_tc(subscription_change)), + ?match(undefined, 'CosNotifyComm_StructuredPushSupplier':oe_tc(undefined)), + ?match([_|_], 'CosNotifyComm_StructuredPushSupplier':oe_get_interface()), + ?match("IDL:omg.org/CosNotifyComm/StructuredPushSupplier:1.0", + 'CosNotifyComm_StructuredPushSupplier':typeID()), + check_tc('CosNotifyComm_StructuredPushSupplier':oe_get_interface()), + ?match(true, 'CosNotifyComm_StructuredPushSupplier':oe_is_a('CosNotifyComm_StructuredPushSupplier':typeID())), + ?match(true, 'CosNotifyComm_StructuredPushSupplier':oe_is_a('CosNotifyComm_NotifySubscribe':typeID())), + ?match(false, 'CosNotifyComm_StructuredPushSupplier':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'oe_CosNotificationComm_Event' +%% Description: +%%----------------------------------------------------------------- +'oe_CosNotificationComm_Event'(doc) -> ["oe_CosNotificationComm_Event"]; +'oe_CosNotificationComm_Event'(suite) -> []; +'oe_CosNotificationComm_Event'(_) -> + ?nomatch(undefined, 'oe_CosNotificationComm_Event':oe_tc(callSeq)), + ?nomatch(undefined, 'oe_CosNotificationComm_Event':oe_tc(callAny)), + ?match(undefined, 'oe_CosNotificationComm_Event':oe_tc(undefined)), + ?match([_|_], 'oe_CosNotificationComm_Event':oe_get_interface()), + ?match("IDL:oe_CosNotificationComm/Event:1.0", + 'oe_CosNotificationComm_Event':typeID()), + check_tc('oe_CosNotificationComm_Event':oe_get_interface()), + ?match(true, 'oe_CosNotificationComm_Event':oe_is_a('oe_CosNotificationComm_Event':typeID())), + ?match(false, 'oe_CosNotificationComm_Event':oe_is_a("wrong")), + ok. + + + + +%%----------------------------------------------------------------- +%% MISC functions +%%----------------------------------------------------------------- +check_tc([]) -> + ok; +check_tc([{Op, {RetType, InParameters, OutParameters}}|T]) -> + io:format("checked - ~s~n", [Op]), + lists:all(?checktc(Op), [RetType|InParameters]), + lists:all(?checktc(Op), OutParameters), + check_tc(T). + + diff --git a/lib/cosNotification/test/grammar_SUITE.erl b/lib/cosNotification/test/grammar_SUITE.erl new file mode 100644 index 0000000000..30aec89e5f --- /dev/null +++ b/lib/cosNotification/test/grammar_SUITE.erl @@ -0,0 +1,1094 @@ +%%-------------------------------------------------------------------- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2000-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%-------------------------------------------------------------------- +%% File : grammar_SUITE.erl +%% Purpose : Testing the CosNotification BNF grammar. +%%-------------------------------------------------------------------- + +-module(grammar_SUITE). + + + +%%--------------- INCLUDES ----------------------------------- +-include_lib("orber/include/corba.hrl"). +-include_lib("orber/include/ifr_types.hrl"). +%% cosEvent files. +-include_lib("cosEvent/include/CosEventChannelAdmin.hrl"). +%% Application files +-include_lib("cosNotification/include/CosNotification.hrl"). +-include_lib("cosNotification/include/CosNotifyChannelAdmin.hrl"). +-include_lib("cosNotification/include/CosNotifyComm.hrl"). +-include_lib("cosNotification/include/CosNotifyFilter.hrl"). + +-include_lib("cosNotification/src/CosNotification_Definitions.hrl"). + +-include("idl_output/notify_test.hrl"). + +-include("test_server.hrl"). + +%%--------------- DEFINES ------------------------------------ +-define(default_timeout, ?t:minutes(20)). +-define(match(ExpectedRes, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + io:format("------ CORRECT RESULT ------~n~p~n", + [AcTuAlReS]), + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS) + end + end()). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1, cases/0, init_all/1, finish_all/1, + union_api/1, enum_api/1, simple_types_api/1, + components_api/1, positional_api/1, variable_api/1, + init_per_testcase/2, fin_per_testcase/2]). + +-import(cosNotification_Filter, [create_filter/1, eval/2]). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["API tests for the cosNotification interfaces", ""]; +all(suite) -> {req, + [], + {conf, init_all, cases(), finish_all}}. + +cases() -> + [variable_api, union_api, enum_api, simple_types_api, components_api, + positional_api]. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- + +init_per_testcase(_Case, Config) -> + Path = code:which(?MODULE), + code:add_pathz(filename:join(filename:dirname(Path), "idl_output")), + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Path = code:which(?MODULE), + code:del_path(filename:join(filename:dirname(Path), "idl_output")), + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +init_all(Config) -> + Path = code:which(?MODULE), + code:add_pathz(filename:join(filename:dirname(Path), "idl_output")), + if + is_list(Config) -> + Config; + true -> + exit("Config not a list") + end. + +finish_all(Config) -> + Path = code:which(?MODULE), + code:del_path(filename:join(filename:dirname(Path), "idl_output")), + Config. + + +%%----------------------------------------------------------------- +%% simple types grammar tests +%%----------------------------------------------------------------- +simple_types_api(doc) -> ["CosNotification simple types grammar tests", ""]; +simple_types_api(suite) -> []; +simple_types_api(_Config) -> + %% Will always be true, no matter what kind of event we receive. + {ok,T1} = ?match({ok, _}, create_filter("2==2 and 3<4")), + ?match(true, eval(T1, ?not_CreateSE("DomainName","TypeName","EventName", + [],[], any:create(orber_tc:null(), null)))), + + %% Will always be true, no matter what kind of event we receive. + {ok,T2} = ?match({ok, _}, create_filter("")), + ?match(true, eval(T2, ?not_CreateSE("DomainName","TypeName","EventName", + [],[], any:create(orber_tc:null(), null)))), + + %% Check if $variable works + {ok,T3} = ?match({ok, _}, create_filter("$city == \'Berlin\'")), + ?match(true, eval(T3, ?not_CreateSE("DomainName","TypeName","EventName", + [#'CosNotification_Property'{name="city", + value=any:create(orber_tc:string(0), "Berlin")}], + [], any:create(orber_tc:null(), null)))), + ?match(false, eval(T3, ?not_CreateSE("DomainName","TypeName", "EventName", + [#'CosNotification_Property'{name="city", + value=any:create(orber_tc:string(0), "Dallas")}], + + [], any:create(orber_tc:null(), null)))), + + + {ok,T4} = ?match({ok, _}, create_filter("$zip == 44")), + ?match(true, eval(T4, ?not_CreateSE("DomainName","TypeName", "EventName", + [#'CosNotification_Property'{name="zip", + value=any:create(orber_tc:short(), 44)}], + + [], any:create(orber_tc:null(), null)))), + ?match(true, eval(T4, ?not_CreateSE("DomainName","TypeName", "EventName", + [],[], + any:create('CosNotification_Property':tc(), + #'CosNotification_Property' + {name="zip", + value=any:create(orber_tc:short(), + 44)})))), + ?match(false, eval(T4, ?not_CreateSE("DomainName","TypeName", "EventName", + [#'CosNotification_Property'{name="zip", + value=any:create(orber_tc:short(), 33)}], + + [], any:create(orber_tc:null(), null)))), + + %% Will always be true, no matter what kind of event we receive. + {ok,T5} = ?match({ok, _}, create_filter("\'oo'\~\'foobar\'")), + ?match(true, eval(T5, ?not_CreateSE("DomainName","TypeName","EventName", + [],[], any:create(orber_tc:null(), null)))), + %% Will always be false, no matter what kind of event we receive. + {ok,T6} = ?match({ok, _}, create_filter("\'o1'\~\'foobar\'")), + ?match(false, eval(T6, ?not_CreateSE("DomainName","TypeName","EventName", + [],[], any:create(orber_tc:null(), null)))), + + %% Can we apply the ~ operation as above using a variable + {ok,T7} = ?match({ok, _}, create_filter("$str~\'foobar\'")), + ?match(true, eval(T7, ?not_CreateSE("DomainName","TypeName","EventName", + [#'CosNotification_Property'{name="str", + value=any:create(orber_tc:string(0), "oo")}], + [], any:create(orber_tc:null(), null)))), + ?match(false, eval(T7, ?not_CreateSE("DomainName","TypeName","EventName", + [#'CosNotification_Property'{name="str", + value=any:create(orber_tc:string(0), "ok")}], + [], any:create(orber_tc:null(), null)))), + + + + {ok,_T8} = ?match({ok, _}, create_filter("$\\zip == 44444")), + + ok. + +%%----------------------------------------------------------------- +%% enum grammar tests +%%----------------------------------------------------------------- +enum_api(doc) -> ["CosNotification enum grammar tests", ""]; +enum_api(suite) -> []; +enum_api(_Config) -> + %% Accept events whose 'in' enum is set to the value 'HOUSE' or 'CAR'. + {ok,T1} = ?match({ok, _}, create_filter("$.\\in == HOUSE or $.\\in == CAR")), + + ?match(true, eval(T1, any:create(orber_tc:alias("IFRId","in",tk_any), + any:create({tk_enum, "IFRId", "in", ["HOUSE", "CAR"]}, + 'HOUSE')))), + ?match(false, eval(T1, any:create(orber_tc:alias("IFRId","in",tk_any), + any:create({tk_enum, "IFRId", "in", ["HOUSE", "CAR"]}, + 'GARAGE')))), + ok. + + +%%----------------------------------------------------------------- +%% Union grammar tests +%%----------------------------------------------------------------- +union_api(doc) -> ["CosNotification union grammar tests", ""]; +union_api(suite) -> []; +union_api(_Config) -> + {ok,T1} = ?match({ok, _}, create_filter("exist $.uni1._d and $.uni1._d == 1 and $.uni1.(1) == 10")), + {ok,T2} = ?match({ok, _}, create_filter("default $.uni1._d and $.uni1.() == 10")), + {ok,T3} = ?match({ok, _}, create_filter("default $.uni1._d and $.uni1.(999) == 10")), + ?match(true, eval(T1, ?not_CreateSE("DomainName","CommunicationsAlarm", + "EventName",[],[], + any:create(orber_tc:alias("IDL:notify_test/namedAny:1.0", + "uni1", + tk_any), + any:create(notify_test_uni1:tc(), + #notify_test_uni1{label= 1, + value=10}))))), + ?match(true, eval(T2, ?not_CreateSE("DomainName","CommunicationsAlarm", + "EventName",[],[], + any:create(orber_tc:alias("IDL:notify_test/namedAny:1.0", + "uni1", + tk_any), + any:create(notify_test_uni1:tc(), + #notify_test_uni1{label= 100, + value=10}))))), + ?match(true, eval(T3, ?not_CreateSE("DomainName","CommunicationsAlarm", + "EventName",[],[], + any:create(orber_tc:alias("IDL:notify_test/namedAny:1.0", + "uni1", + tk_any), + any:create(notify_test_uni1:tc(), + #notify_test_uni1{label= 100, + value=10}))))), + ?match(true, eval(T1, any:create(orber_tc:alias("IDL:notify_test/namedAny:1.0", + "uni1", + tk_any), + any:create(notify_test_uni1:tc(), + #notify_test_uni1{label= 1, + value=10})))), + ?match(false, eval(T2, any:create(orber_tc:alias("IDL:notify_test/namedAny:1.0", + "uni1", + tk_any), + any:create(notify_test_uni1:tc(), + #notify_test_uni1{label= 1, + value=10})))), + ?match(false, eval(T3, any:create(orber_tc:alias("IDL:notify_test/namedAny:1.0", + "uni1", + tk_any), + any:create(notify_test_uni1:tc(), + #notify_test_uni1{label= 1, + value=10})))), + ?match(true, eval(T1, ?not_CreateSE("DomainName","CommunicationsAlarm", + "EventName",[],[], + any:create(notify_test_studies:tc(), #notify_test_studies + {uni1 = #notify_test_uni1{label= 1, value=10}, + gpa = 90, + tests = [#'CosNotification_Property' + {name="midterm", value=any:create(orber_tc:short(), 70)}, + #'CosNotification_Property' + {name="final", value=any:create(orber_tc:short(), 60)}], + monthly_attendance = {0,1,2,10}})))), + ?match(false, eval(T2, ?not_CreateSE("DomainName","CommunicationsAlarm", + "EventName",[],[], + any:create(notify_test_studies:tc(), #notify_test_studies + {uni1 = #notify_test_uni1{label= 1, value=10}, + gpa = 90, + tests = [#'CosNotification_Property' + {name="midterm", value=any:create(orber_tc:short(), 70)}, + #'CosNotification_Property' + {name="final", value=any:create(orber_tc:short(), 60)}], + monthly_attendance = {0,1,2,10}})))), + ?match(false, eval(T3, ?not_CreateSE("DomainName","CommunicationsAlarm", + "EventName",[],[], + any:create(notify_test_studies:tc(), #notify_test_studies + {uni1 = #notify_test_uni1{label= 1, value=10}, + gpa = 90, + tests = [#'CosNotification_Property' + {name="midterm", value=any:create(orber_tc:short(), 70)}, + #'CosNotification_Property' + {name="final", value=any:create(orber_tc:short(), 60)}], + monthly_attendance = {0,1,2,10}})))), + ?match(true, eval(T1, any:create(notify_test_studies:tc(), #notify_test_studies + {uni1 = #notify_test_uni1{label= 1, value=10}, + gpa = 90, + tests = [#'CosNotification_Property' + {name="midterm", value=any:create(orber_tc:short(), 70)}, + #'CosNotification_Property' + {name="final", value=any:create(orber_tc:short(), 60)}], + monthly_attendance = {0,1,2,10}}))), + ?match(false, eval(T2, any:create(notify_test_studies:tc(), #notify_test_studies + {uni1 = #notify_test_uni1{label= 1, value=10}, + gpa = 90, + tests = [#'CosNotification_Property' + {name="midterm", value=any:create(orber_tc:short(), 70)}, + #'CosNotification_Property' + {name="final", value=any:create(orber_tc:short(), 60)}], + monthly_attendance = {0,1,2,10}}))), + ?match(false, eval(T3, any:create(notify_test_studies:tc(), #notify_test_studies + {uni1 = #notify_test_uni1{label= 1, value=10}, + gpa = 90, + tests = [#'CosNotification_Property' + {name="midterm", value=any:create(orber_tc:short(), 70)}, + #'CosNotification_Property' + {name="final", value=any:create(orber_tc:short(), 60)}], + monthly_attendance = {0,1,2,10}}))), + + {ok,T4} = ?match({ok, _}, create_filter("exist $.alias.uni1._d and $.alias.uni1._d == 1 and $.alias.uni1.(1) == 10")), + ?match(true, eval(T4, ?not_CreateSE("DomainName","CommunicationsAlarm", + "EventName",[],[], + any:create(orber_tc:alias(notify_test_studies:id(), + "alias", + notify_test_studies:tc()), + #notify_test_studies + {uni1 = #notify_test_uni1{label= 1, value=10}, + gpa = 90, tests = [], + monthly_attendance = {0,1,2,10}})))), + ?match(true, eval(T4, any:create(orber_tc:alias(notify_test_studies:id(), + "alias", + notify_test_studies:tc()), + #notify_test_studies + {uni1 = #notify_test_uni1{label= 1, value=10}, + gpa = 90, tests = [], + monthly_attendance = {0,1,2,10}}))), + %% Accept events with a default union discriminator set to the value 2. + {ok,T5} = ?match({ok, _}, create_filter("default $._d and $.defvalue == 2")), + ?match(true, eval(T5, any:create(notify_test_uni1:tc(), + #notify_test_uni1{label= 100, value=2}))), + %% label not default. + ?match(false, eval(T5, any:create(notify_test_uni1:tc(), + #notify_test_uni1{label= 2, value=2}))), + %% Default does not exist (nor the component defvalue) + ?match(false, eval(T5, any:create(notify_test_uni2:tc(), + #notify_test_uni2{label= 100, value=2}))), + %% Both wrong + ?match(false, eval(T5, any:create(notify_test_uni2:tc(), + #notify_test_uni2{label= 2, value=2}))), + + {ok,T6} = ?match({ok, _}, create_filter("default $._d and $.(-8) == 2")), + ?match(true, eval(T6, any:create(notify_test_uni1:tc(), + #notify_test_uni1{label= 100, value=2}))), + %% label not default. + ?match(false, eval(T6, any:create(notify_test_uni1:tc(), + #notify_test_uni1{label= 2, value=2}))), + %% Default does not exist (nor the component defvalue) + ?match(false, eval(T6, any:create(notify_test_uni2:tc(), + #notify_test_uni2{label= 100, value=2}))), + %% Both wrong + ?match(false, eval(T6, any:create(notify_test_uni2:tc(), + #notify_test_uni2{label= 2, value=2}))), + %% the same as the above, but we try to access a label that is not default + {ok,T7} = ?match({ok, _}, create_filter("default $._d and $.(2) == 2")), + ?match({error, _}, eval(T7, any:create(notify_test_uni1:tc(), + #notify_test_uni1{label= 100, value=2}))), + + %% Must be a default-union with its 'defvalue' set to 2. + {ok,T8} = ?match({ok, _}, create_filter("default $._d and $.('defvalue') == 2")), + ?match(true, eval(T8, any:create(notify_test_uni1:tc(), + #notify_test_uni1{label= 100, value=2}))), + %% label not default. + ?match(false, eval(T8, any:create(notify_test_uni1:tc(), + #notify_test_uni1{label= 2, value=2}))), + %% Default does not exist (nor the component defvalue) + ?match(false, eval(T8, any:create(notify_test_uni2:tc(), + #notify_test_uni2{label= 100, value=2}))), + %% Both wrong + ?match(false, eval(T8, any:create(notify_test_uni2:tc(), + #notify_test_uni2{label= 2, value=2}))), + + %% Must be a default-union with its value set to 2. + {ok,T9} = ?match({ok, _}, create_filter("default $._d and $.(+100) == 2")), + ?match(true, eval(T9, any:create(notify_test_uni1:tc(), + #notify_test_uni1{label= 100, value=2}))), + %% label not default. + ?match(false, eval(T9, any:create(notify_test_uni1:tc(), + #notify_test_uni1{label= 2, value=2}))), + %% Default does not exist (nor the component defvalue) + ?match(false, eval(T9, any:create(notify_test_uni2:tc(), + #notify_test_uni2{label= 100, value=2}))), + %% Both wrong + ?match(false, eval(T9, any:create(notify_test_uni2:tc(), + #notify_test_uni2{label= 2, value=2}))), + + %% So far, we have only tested to access the union itself. No will use more + %% complex union members. + %% T10 and T11 is "equal" + {ok,T10} = ?match({ok, _}, create_filter("$.M < 54")), + {ok,T11} = ?match({ok, _}, create_filter("$.(5) < 54")), + ?match(false, eval(T10, any:create(notify_test_K:tc(), + #notify_test_K{label= 5, value=54}))), + ?match(false, eval(T11, any:create(notify_test_K:tc(), + #notify_test_K{label= 5, value=54}))), + ?match(true, eval(T10, any:create(notify_test_K:tc(), + #notify_test_K{label= 5, value=50}))), + ?match(true, eval(T11, any:create(notify_test_K:tc(), + #notify_test_K{label= 5, value=50}))), + ?match({error,_}, eval(T10, any:create(notify_test_K:tc(), + #notify_test_K{label= -1, value=50}))), + ?match({error,_}, eval(T11, any:create(notify_test_K:tc(), + #notify_test_K{label= -1, value=50}))), + + %% T12 and T13 is "equal" + {ok,T12} = ?match({ok, _}, create_filter("$.L.C < 128")), + {ok,T13} = ?match({ok, _}, create_filter("$.(3).2 < 128")), + ?match(true, eval(T12, any:create(notify_test_K:tc(), + #notify_test_K{label= 3, value= + #notify_test_X{'A' = 1, + 'B' = "string", + 'C' = 120}}))), + ?match(true, eval(T13, any:create(notify_test_K:tc(), + #notify_test_K{label= 3, value= + #notify_test_X{'A' = 1, + 'B' = "string", + 'C' = 120}}))), + ?match(false, eval(T12, any:create(notify_test_K:tc(), + #notify_test_K{label= 3, value= + #notify_test_X{'A' = 1, + 'B' = "string", + 'C' = 200}}))), + ?match(false, eval(T13, any:create(notify_test_K:tc(), + #notify_test_K{label= 3, value= + #notify_test_X{'A' = 1, + 'B' = "string", + 'C' = 200}}))), + + %% Test if 'putty' is a substring of K + {ok,T15} = ?match({ok, _}, create_filter("'putty' ~ $.(2)")), + {ok,T16} = ?match({ok, _}, create_filter("'putty' ~ $.K")), + ?match(true, eval(T15, any:create(notify_test_K:tc(), + #notify_test_K{label= 2, value= "isputtyok"}))), + ?match(true, eval(T16, any:create(notify_test_K:tc(), + #notify_test_K{label= 2, value= "isputtyok"}))), + ?match(false, eval(T15, any:create(notify_test_K:tc(), + #notify_test_K{label= 2, value= "notputtok"}))), + ?match(false, eval(T16, any:create(notify_test_K:tc(), + #notify_test_K{label= 2, value= "notputtok"}))), + + {ok,_T17} = ?match({ok, _}, create_filter("'putty' ~ $.(3).1")), + {ok,_T18} = ?match({ok, _}, create_filter("'putty' ~ $.L.B")), + ?match(true, eval(T12, any:create(notify_test_K:tc(), + #notify_test_K{label= 3, value= + #notify_test_X{'A' = 1, + 'B' = "isputtyok", + 'C' = 120}}))), + ?match(true, eval(T13, any:create(notify_test_K:tc(), + #notify_test_K{label= 3, value= + #notify_test_X{'A' = 1, + 'B' = "isputtyok", + 'C' = 120}}))), + ?match(false, eval(T12, any:create(notify_test_K:tc(), + #notify_test_K{label= 3, value= + #notify_test_X{'A' = 1, + 'B' = "notputtok", + 'C' = 200}}))), + ?match(false, eval(T13, any:create(notify_test_K:tc(), + #notify_test_K{label= 3, value= + #notify_test_X{'A' = 1, + 'B' = "notputtok", + 'C' = 200}}))), + + %% Please observe that the switch 0 and 2 is defined to be equivalent. + {ok,T19} = ?match({ok, _}, create_filter("$._d == 2 and $.(0) != 'hoob'")), + {ok,T20} = ?match({ok, _}, create_filter("$._d == 2 and $.(2) != 'hoob'")), + ?match(true, eval(T19, any:create(notify_test_K:tc(), + #notify_test_K{label= 2, value= "nothoob"}))), + ?match(true, eval(T20, any:create(notify_test_K:tc(), + #notify_test_K{label= 2, value= "nothoob"}))), + ?match(false, eval(T19, any:create(notify_test_K:tc(), + #notify_test_K{label= 2, value= "hoob"}))), + ?match(false, eval(T20, any:create(notify_test_K:tc(), + #notify_test_K{label= 2, value= "hoob"}))), + + ?match(false, eval(T19, any:create(notify_test_K:tc(), + #notify_test_K{label= 5, value= 55}))), + ?match(false, eval(T20, any:create(notify_test_K:tc(), + #notify_test_K{label= 5, value= 55}))), + + ?match(false, eval(T19, any:create(notify_test_K:tc(), + #notify_test_K{label= 100, value= "nothoob"}))), + ?match(false, eval(T20, any:create(notify_test_K:tc(), + #notify_test_K{label= 100, value= "nothoob"}))), + + {ok,T21} = ?match({ok, _}, create_filter("exist $.K")), + {ok,T22} = ?match({ok, _}, create_filter("exist $.(0) or exist $.(2)")), + ?match(true, eval(T21, any:create(notify_test_K:tc(), + #notify_test_K{label= 0, value= "hoob"}))), + ?match(true, eval(T22, any:create(notify_test_K:tc(), + #notify_test_K{label= 0, value= "hoob"}))), + ?match(true, eval(T21, any:create(notify_test_K:tc(), + #notify_test_K{label= 2, value= "hoob"}))), + ?match(true, eval(T22, any:create(notify_test_K:tc(), + #notify_test_K{label= 2, value= "hoob"}))), + ?match(false, eval(T21, any:create(notify_test_K:tc(), + #notify_test_K{label= 5, value= 55}))), + ?match(false, eval(T22, any:create(notify_test_K:tc(), + #notify_test_K{label= 5, value= 55}))), + + + %% Please observe that the switch 0 and 2 is defined to be equivalent. + {ok,T23} = ?match({ok, _}, create_filter("exist $.(2)")), + {ok,T24} = ?match({ok, _}, create_filter("exist $.(0)")), + ?match(true, eval(T23, any:create(notify_test_K:tc(), + #notify_test_K{label= 2, value= "hoob"}))), + ?match(false, eval(T24, any:create(notify_test_K:tc(), + #notify_test_K{label= 2, value= "hoob"}))), + ?match(false, eval(T23, any:create(notify_test_K:tc(), + #notify_test_K{label= 0, value= "hoob"}))), + ?match(true, eval(T24, any:create(notify_test_K:tc(), + #notify_test_K{label= 0, value= "hoob"}))), + ?match(false, eval(T23, any:create(notify_test_K:tc(), + #notify_test_K{label= 5, value= 55}))), + ?match(false, eval(T24, any:create(notify_test_K:tc(), + #notify_test_K{label= 5, value= 55}))), + + ok. + +%%----------------------------------------------------------------- +%% Variables grammar tests +%%----------------------------------------------------------------- +variable_api(doc) -> ["CosNotification variables grammar tests", ""]; +variable_api(suite) -> []; +variable_api(_Config) -> + %% Accept all "CommunicationsAlarm" events + {ok,T0} = ?match({ok, _}, create_filter("$type_name == 'CommunicationsAlarm'")), + + ?match(true, eval(T0, ?not_CreateSE("DomainName","CommunicationsAlarm", + "EventName",[],[], + any:create(orber_tc:null(), null)))), + ?match(false, eval(T0, ?not_CreateSE("DomainName","CommunicationsOK", + "EventName", [],[], + any:create(orber_tc:null(), null)))), + ?match(true, eval(T0, ?not_CreateSE("DomainName","CommunicationsAlarm", + "EventName", [],[], + any:create(orber_tc:alias("IFRId", "type_name", + orber_tc:string(0)), + "CommunicationsOK")))), + + ?match(true, eval(T0, any:create(orber_tc:alias("IFRId", "type_name", + orber_tc:string(0)), + "CommunicationsAlarm"))), + ?match(false, eval(T0, any:create(orber_tc:alias("IFRId", "type_name", + orber_tc:string(0)), + "CommunicationsOK"))), + + + %% Accept all "CommunicationsAlarm" events but no "lost_packet" messages. + {ok,T1} = ?match({ok, _}, create_filter("$type_name == 'CommunicationsAlarm' and not ($event_name == 'lost_packet')")), + + ?match(true, eval(T1, ?not_CreateSE("DomainName","CommunicationsAlarm", + "EventName",[],[], + any:create(orber_tc:null(), null)))), + ?match(false, eval(T1, ?not_CreateSE("DomainName","CommunicationsAlarm", + "lost_packet", [],[], + any:create(orber_tc:null(), null)))), + ?match(true, + eval(T1, any:create(orber_tc:sequence('CosNotification_Property':tc(),0), + [#'CosNotification_Property'{name="type_name", + value=any:create(orber_tc:string(0), "CommunicationsAlarm")}, + #'CosNotification_Property'{name="event_name", + value=any:create(orber_tc:string(0), "EventName")}]))), + ?match(false, + eval(T1, any:create(orber_tc:sequence('CosNotification_Property':tc(),0), + [#'CosNotification_Property'{name="type_name", + value=any:create(orber_tc:string(0), "CommunicationsAlarm")}, + #'CosNotification_Property'{name="event_name", + value=any:create(orber_tc:string(0), "lost_packet")}]))), + + + %% Accept "CommunicationsAlarm" events with priorities ranging from 1 to 5. + {ok,T2} = ?match({ok, _}, create_filter("$type_name == 'CommunicationsAlarm' and $priority >= 1 and $priority <= 5")), + ?match(true, eval(T2, ?not_CreateSE("DomainName","CommunicationsAlarm", + "EventName", + [#'CosNotification_Property'{name="priority", + value=any:create(orber_tc:short(), 2)}], + [], any:create(orber_tc:null(), null)))), + ?match(false, eval(T2, ?not_CreateSE("DomainName","CommunicationsAlarm", + "EventName", + [#'CosNotification_Property'{name="priority", + value=any:create(orber_tc:short(), 20)}], + [], any:create(orber_tc:null(), null)))), + + %% Select "MOVIE" events featuring at least 3 of the Marx Brothers. + {ok,T3} = ?match({ok, _}, create_filter("$type_name == 'MOVIE' and (('groucho' in $starlist) + ('chico' in $starlist) + ('harpo' in $starlist) + ('zeppo' in $starlist) + ('gummo' in $starlist)) > 2")), + ?match(true, eval(T3, ?not_CreateSE("DomainName","MOVIE", + "EventName", + [#'CosNotification_Property'{name="starlist", + value=any:create(orber_tc:sequence(orber_tc:string(0),0), + ["groucho", "harpo", "sam", "gummo"])}], + [], any:create(orber_tc:null(), null)))), + ?match(false, eval(T3, ?not_CreateSE("DomainName","MOVIE", + "EventName", + [#'CosNotification_Property'{name="starlist", + value=any:create(orber_tc:sequence(orber_tc:string(0),0), + ["frodo", "bilbo", "sam", "gummo"])}], + [], any:create(orber_tc:null(), null)))), + %% Accept students that took all 3 tests and had an average score of at least 80%. + {ok,T4} = ?match({ok, _}, create_filter("$test._length == 3 and ($test[0].score + $test[1].score + $test[2].score)/3 >=80")), + ?match(true, eval(T4, ?not_CreateSE("DomainName","TypeName", + "EventName", [], + [#'CosNotification_Property'{name="test", + value=any:create(orber_tc:array(notify_test_data:tc(),0), + {#notify_test_data{score=75}, + #notify_test_data{score=80}, + #notify_test_data{score=85}})}], + any:create(orber_tc:null(), null)))), + ?match(false, eval(T4, ?not_CreateSE("DomainName","TypeName", + "EventName", [], + [#'CosNotification_Property'{name="test", + value=any:create(orber_tc:array(notify_test_data:tc(),0), + {#notify_test_data{score=75}, + #notify_test_data{score=80}, + #notify_test_data{score=80}})}], + any:create(orber_tc:null(), null)))), + ?match(false, eval(T4, ?not_CreateSE("DomainName","TypeName", + "EventName", [], + [#'CosNotification_Property'{name="test", + value=any:create(orber_tc:array(notify_test_data:tc(),0), + {#notify_test_data{score=75}, + #notify_test_data{score=85}})}], + any:create(orber_tc:null(), null)))), + %% Select processes that exceed a certain usage threshold. + {ok,T5} = ?match({ok, _}, create_filter("$memsize / 5.5 + $cputime * 1275.0 + $filesize * 1.25 > 500000.0")), + ?match(true, eval(T5, ?not_CreateSE("DomainName","TypeName", + "EventName", [], + [#'CosNotification_Property'{name="memsize", + value=any:create(orber_tc:float(), 5.5)}, + #'CosNotification_Property'{name="cputime", + value=any:create(orber_tc:float(), 0.00078431137)}, + #'CosNotification_Property'{name="filesize", + value=any:create(orber_tc:float(), 500000)}], + any:create(orber_tc:null(), null)))), + ?match(false, eval(T5, ?not_CreateSE("DomainName","TypeName", + "EventName", [], + [#'CosNotification_Property'{name="memsize", + value=any:create(orber_tc:float(), 5.5)}, + #'CosNotification_Property'{name="cputime", + value=any:create(orber_tc:float(), 0.00078431137)}, + #'CosNotification_Property'{name="filesize", + value=any:create(orber_tc:float(), 500)}], + any:create(orber_tc:null(), null)))), + ?match({error, _}, eval(T5, ?not_CreateSE("DomainName","TypeName", + "EventName", [], + [#'CosNotification_Property'{name="memsize", + value=any:create(orber_tc:float(), 5.5)}, + #'CosNotification_Property'{name="filesize", + value=any:create(orber_tc:float(), 500)}], + any:create(orber_tc:null(), null)))), + + ?match(true, eval(T5, ?not_CreateSE("DomainName","TypeName", + "EventName", [], [], + any:create(orber_tc:sequence('CosNotification_Property':tc(),0), + [#'CosNotification_Property'{name="memsize", + value=any:create(orber_tc:float(), 5.5)}, + #'CosNotification_Property'{name="cputime", + value=any:create(orber_tc:float(), 0.00078431137)}, + #'CosNotification_Property'{name="filesize", + value=any:create(orber_tc:float(), 500000)}])))), + ?match(false, eval(T5, ?not_CreateSE("DomainName","TypeName", + "EventName", [], [], + any:create(orber_tc:sequence('CosNotification_Property':tc(),0), + [#'CosNotification_Property'{name="memsize", + value=any:create(orber_tc:float(), 5.5)}, + #'CosNotification_Property'{name="cputime", + value=any:create(orber_tc:float(), 0.00078431137)}, + #'CosNotification_Property'{name="filesize", + value=any:create(orber_tc:float(), 500)}])))), + ?match({error, _}, eval(T5, ?not_CreateSE("DomainName","TypeName", + "EventName", [], [], + any:create(orber_tc:sequence('CosNotification_Property':tc(),0), + [#'CosNotification_Property'{name="memsize", + value=any:create(orber_tc:float(), 5.5)}, + #'CosNotification_Property'{name="filesize", + value=any:create(orber_tc:float(), 500)}])))), + + ?match(true, eval(T5, any:create(orber_tc:sequence('CosNotification_Property':tc(),0), + [#'CosNotification_Property'{name="memsize", + value=any:create(orber_tc:float(), 5.5)}, + #'CosNotification_Property'{name="cputime", + value=any:create(orber_tc:float(), 0.00078431137)}, + #'CosNotification_Property'{name="filesize", + value=any:create(orber_tc:float(), 500000)}]))), + ?match(false, eval(T5, any:create(orber_tc:sequence('CosNotification_Property':tc(),0), + [#'CosNotification_Property'{name="memsize", + value=any:create(orber_tc:float(), 5.5)}, + #'CosNotification_Property'{name="cputime", + value=any:create(orber_tc:float(), 0.00078431137)}, + #'CosNotification_Property'{name="filesize", + value=any:create(orber_tc:float(), 500)}]))), + ?match({error, _}, eval(T5, any:create(orber_tc:sequence('CosNotification_Property':tc(),0), + [#'CosNotification_Property'{name="memsize", + value=any:create(orber_tc:float(), 5.5)}, + #'CosNotification_Property'{name="filesize", + value=any:create(orber_tc:float(), 500)}]))), + + %% Accept events where a threshold has the unscoped type name 'data'. + {ok,T6} = ?match({ok, _}, create_filter("exist $threshold._type_id and $threshold._type_id == 'data'")), + ?match(true, eval(T6, any:create(orber_tc:alias(notify_test_data:id(), + "threshold", + notify_test_data:tc()), + #notify_test_data{score = 10, name = "Erlang"}))), + + + + ?match(true, eval(T6, ?not_CreateSE("DomainName","TypeName", + "EventName", [], + [#'CosNotification_Property' + {name="threshold", + value=any:create(notify_test_data:tc(), + #notify_test_data + {score = 10, + name = "Erlang"})}], + any:create(orber_tc:null(), null)))), + + + ?match(true, eval(T6, ?not_CreateSE("DomainName","TypeName", + "EventName", [], + [#'CosNotification_Property' + {name="NotThreshold", + value=any:create(notify_test_data:tc(), + #notify_test_data + {score = 10, + name = "Erlang"})}], + any:create(orber_tc:alias(notify_test_data:id(), + "threshold", + notify_test_data:tc()), + #notify_test_data{score = 10, name = "Erlang"})))), + + + + %% Accept events with a serviceUser property of the correct standard type. + {ok,T7} = ?match({ok, _}, create_filter("$violation(TestData)._repos_id == 'IDL:notify_test/data:1.0'")), + ?match(true, eval(T7, ?not_CreateSE("DomainName","TypeName", + "EventName", [], + [#'CosNotification_Property' + {name="violation", + value=any:create(orber_tc:array('CosNotification_Property':tc(),0), + [#'CosNotification_Property' + {name="TestData", + value=any:create(notify_test_data:tc(), + #notify_test_data + {score=100, + name="perfect score"})}])}], + any:create(orber_tc:null(), null)))), + + {ok,T8} = ?match({ok, _}, create_filter("$type_name == 'CommunicationsAlarm' and $event_name == 'lost_packet' and $priority < 2")), + %% All correct + Event1 = ?not_CreateSE("DomainName","CommunicationsAlarm", + "lost_packet", + [#'CosNotification_Property'{name="priority", + value=any:create(orber_tc:short(), 1)}], + [], any:create(orber_tc:null(), null)), + %% Priority to high + Event2 = ?not_CreateSE("DomainName","CommunicationsAlarm", + "lost_packet", + [#'CosNotification_Property'{name="priority", + value=any:create(orber_tc:short(), 2)}], + [], any:create(orber_tc:null(), null)), + %% Misspell event_name, i.e., lost_packets instead of lost_packet + Event3 = ?not_CreateSE("DomainName","CommunicationsAlarm", + "lost_packets", + [#'CosNotification_Property'{name="priority", + value=any:create(orber_tc:short(), 1)}], + [], any:create(orber_tc:null(), null)), + %% Another type_name + Event4 = ?not_CreateSE("DomainName","TemperatureAlarm", + "lost_packets", + [#'CosNotification_Property'{name="priority", + value=any:create(orber_tc:short(), 1)}], + [], any:create(orber_tc:null(), null)), + + ?match(true, eval(T8, Event1)), + ?match(false, eval(T8, Event2)), + ?match(false, eval(T8, Event3)), + ?match(false, eval(T8, Event4)), + + {ok,T9} = ?match({ok, _}, create_filter("$gpa < 80 or $tests(midterm) > $tests(final) or $monthly_attendance[3] < 10")), + + %% midterm > final yields true, the others false + Event5 = ?not_CreateSE("DomainName","TypeName", + "EventName", [], + [#'CosNotification_Property' + {name="tests", + value=any:create(orber_tc:array('CosNotification_Property':tc(),0), + [#'CosNotification_Property'{name="midterm", + value=any:create(orber_tc:short(), 70)}, + #'CosNotification_Property'{name="final", + value=any:create(orber_tc:short(), 60)}])}, + #'CosNotification_Property'{name="monthly_attendance", + value=any:create(orber_tc:array(orber_tc:short(), 0), + {0,1,2,10})}, + #'CosNotification_Property'{name="gpa", + value=any:create(orber_tc:short(), 90)}], + any:create(orber_tc:null(), null)), + + %% monthly_attendance[3] < 10 yields true, the others false + Event6 = ?not_CreateSE("DomainName","TypeName", + "EventName", [], + [#'CosNotification_Property'{name="tests", + value=any:create(orber_tc:array('CosNotification_Property':tc(),0), + [#'CosNotification_Property'{name="midterm", + value=any:create(orber_tc:short(), 70)}, + #'CosNotification_Property'{name="final", + value=any:create(orber_tc:short(), 80)}])}, + #'CosNotification_Property'{name="monthly_attendance", + value=any:create(orber_tc:array(orber_tc:short(), 0), + {0,1,2,9})}, + #'CosNotification_Property'{name="gpa", + value=any:create(orber_tc:short(), 90)}], + any:create(orber_tc:null(), null)), + + %% gpa < 80 true, rest false. + Event7 = ?not_CreateSE("DomainName","TypeName", + "EventName", [], + [#'CosNotification_Property'{name="tests", + value=any:create(orber_tc:array('CosNotification_Property':tc(),0), + [#'CosNotification_Property'{name="midterm", + value=any:create(orber_tc:short(), 70)}, + #'CosNotification_Property'{name="final", + value=any:create(orber_tc:short(), 80)}])}, + #'CosNotification_Property'{name="monthly_attendance", + value=any:create(orber_tc:array(orber_tc:short(), 0), + {0,1,2,10})}, + #'CosNotification_Property'{name="gpa", + value=any:create(orber_tc:short(), 70)}], + any:create(orber_tc:null(), null)), + + %% All false + Event8 = ?not_CreateSE("DomainName","TypeName", + "EventName", [], + [#'CosNotification_Property'{name="tests", + value=any:create(orber_tc:array('CosNotification_Property':tc(),0), + [#'CosNotification_Property'{name="midterm", + value=any:create(orber_tc:short(), 70)}, + #'CosNotification_Property'{name="final", + value=any:create(orber_tc:short(), 80)}])}, + #'CosNotification_Property'{name="monthly_attendance", + value=any:create(orber_tc:array(orber_tc:short(), 0), + {0,1,2,10})}, + #'CosNotification_Property'{name="gpa", + value=any:create(orber_tc:short(), 80)}], + any:create(orber_tc:null(), null)), + + ?match(true, eval(T9, Event5)), + ?match(true, eval(T9, Event6)), + ?match(true, eval(T9, Event7)), + ?match(false, eval(T9, Event8)), + ok. + +%%----------------------------------------------------------------- +%% Misc grammar tests +%%----------------------------------------------------------------- +positional_api(doc) -> ["CosNotification positional notation grammar tests", ""]; +positional_api(suite) -> []; +positional_api(_Config) -> + {ok,T1} = ?match({ok, _}, create_filter("$.3 < 80 or $.1(midterm) > $.1(final) or $.2[3] < 10")), + + %% midterm > final yields true, the others false + Event1 = any:create(notify_test_studies:tc(), #notify_test_studies + {gpa = 90, + tests = [#'CosNotification_Property' + {name="midterm", value=any:create(orber_tc:short(), 70)}, + #'CosNotification_Property' + {name="final", value=any:create(orber_tc:short(), 60)}], + monthly_attendance = {0,1,2,10}}), + %% monthly_attendance[3] < 10 yields true, the others false + Event2 = any:create(notify_test_studies:tc(), #notify_test_studies + {gpa = 90, + tests = [#'CosNotification_Property' + {name="midterm", value=any:create(orber_tc:short(), 70)}, + #'CosNotification_Property' + {name="final", value=any:create(orber_tc:short(), 80)}], + monthly_attendance = {0,1,2,9}}), + %% gpa < 80 true, rest false. + Event3 = any:create(notify_test_studies:tc(), #notify_test_studies + {gpa = 70, + tests = [#'CosNotification_Property' + {name="midterm", value=any:create(orber_tc:short(), 70)}, + #'CosNotification_Property' + {name="final", value=any:create(orber_tc:short(), 80)}], + monthly_attendance = {0,1,2,10}}), + %% All false + Event4 = any:create(notify_test_studies:tc(), #notify_test_studies + {gpa = 80, + tests = [#'CosNotification_Property' + {name="midterm", value=any:create(orber_tc:short(), 70)}, + #'CosNotification_Property' + {name="final", value=any:create(orber_tc:short(), 80)}], + monthly_attendance = {0,1,2,10}}), + + ?match(true, eval(T1, Event1)), + ?match(true, eval(T1, Event2)), + ?match(true, eval(T1, Event3)), + ?match(false, eval(T1, Event4)), + + {ok,T2} = ?match({ok, _}, create_filter("$.0.0.0.1 == 'CommunicationsAlarm'")), + + Event5 = ?not_CreateSE("DomainName","CommunicationsAlarm", + "lost_packet", [], [], + any:create(orber_tc:null(), null)), + + ?match(true, eval(T2, Event5)), + + ok. + +%%----------------------------------------------------------------- +%% Components grammar tests +%%----------------------------------------------------------------- +components_api(doc) -> ["CosNotification components grammar tests", ""]; +components_api(suite) -> []; +components_api(_Config) -> + {ok,T1} = ?match({ok, _}, create_filter("$ == 2")), + ?match(true, eval(T1, ?not_CreateSE("DomainName","TypeName","EventName", + [],[], any:create(orber_tc:short(), 2)))), + ?match(true, eval(T1, any:create(orber_tc:short(), 2))), + ?match(false, eval(T1, ?not_CreateSE("DomainName","TypeName","EventName", + [],[], any:create(orber_tc:short(), 3)))), + ?match(false, eval(T1, any:create(orber_tc:short(), 3))), + + %% Select "MOVIE" events featuring at least 3 of the Marx Brothers. + {ok,T2} = ?match({ok, _}, create_filter("$type_name == 'MOVIE' and (('groucho' in $.starlist) + ('chico' in $.starlist) + ('harpo' in $.starlist) + ('zeppo' in $.starlist) + ('gummo' in $.starlist)) > 2")), + ?match(true, eval(T2, ?not_CreateSE("DomainName","MOVIE", "EventName", [], [], + any:create(orber_tc:alias("IFRId","starlist",tk_any), + any:create(orber_tc:sequence(orber_tc:string(0),0), + ["groucho", "harpo", "sam", "gummo"]))))), + ?match(false, eval(T2, ?not_CreateSE("DomainName","MOVIE", "EventName", [], [], + any:create(orber_tc:alias("IFRId","starlist",tk_any), + any:create(orber_tc:sequence(orber_tc:string(0),0), + ["frodo", "bilbo", "sam", "gummo"]))))), + + %% Accept only recent events (e.g., generated within the last 15 minutes or so). + {ok,_T3} = ?match({ok, _}, create_filter("$origination_timestamp.high + 2 < $curtime.high")), + + + %% Accept students that took all 3 tests and had an average score of at least 80%. + {ok,T4} = ?match({ok, _}, create_filter("$.test._length == 3 and ($.test[0].score + $.test[1].score + $.test[2].score)/3 >=80")), + ?match(true, eval(T4, ?not_CreateSE("DomainName","TypeName", "EventName", [], [], + any:create(orber_tc:alias("IFRId","test",tk_any), + any:create(orber_tc:array(notify_test_data:tc(),0), + {#notify_test_data{score=75}, + #notify_test_data{score=80}, + #notify_test_data{score=85}}))))), + ?match(false, eval(T4, ?not_CreateSE("DomainName","TypeName", "EventName", [], [], + any:create(orber_tc:alias("IFRId","test",tk_any), + any:create(orber_tc:array(notify_test_data:tc(),0), + {#notify_test_data{score=75}, + #notify_test_data{score=80}, + #notify_test_data{score=80}}))))), + ?match(false, eval(T4, ?not_CreateSE("DomainName","TypeName", "EventName", [], [], + any:create(orber_tc:alias("IFRId","test",tk_any), + any:create(orber_tc:array(notify_test_data:tc(),0), + {#notify_test_data{score=75}, + #notify_test_data{score=80}}))))), + + %% Select processes that exceed a certain usage threshold. + {ok,T5} = ?match({ok, _}, create_filter("$.memsize / 5.5 + $.cputime * 1275.0 + $.filesize * 1.25 > 500000.0")), + ?match(true, eval(T5, ?not_CreateSE("DomainName","TypeName", "EventName", [], [], + any:create(notify_test_computer:tc(), + #notify_test_computer + {memsize=5.5, + cputime = 0.00078431137, + filesize = 500000})))), + ?match(false, eval(T5, ?not_CreateSE("DomainName","TypeName", "EventName", [], [], + any:create(notify_test_computer:tc(), + #notify_test_computer + {memsize=5.5, + cputime = 0.00078431137, + filesize = 500})))), + ?match({error,_}, eval(T5, ?not_CreateSE("DomainName","TypeName", "EventName", [], [], + any:create(notify_test_computer:tc(), + #notify_test_computer + {memsize=5.5, + cputime = 0.00078431137})))), + + %% Accept only Notification Service structured events. + {ok,T6} = ?match({ok, _}, create_filter("$._repos_id == 'IDL:omg.org/CosNotification/StructuredEvent:1.0'")), + ?match(true, eval(T6, ?not_CreateSE("DomainName","CommunicationsAlarm", + "EventName", + [], [], any:create(orber_tc:null(), null)))), + + + + %% Accept only those events that have a specified security "rights list". + {ok,T7} = ?match({ok, _}, create_filter("exist $.header.variable_header(required_rights)")), + ?match(false, eval(T7, ?not_CreateSE("DomainName","CommunicationsAlarm", + "lost_packet", + [#'CosNotification_Property'{name="priority", + value=any:create(orber_tc:short(), 1)}], + [], any:create(orber_tc:null(), null)))), + ?match(true, eval(T7, ?not_CreateSE("DomainName","CommunicationsAlarm", + "lost_packet", + [#'CosNotification_Property'{name="required_rights", + value=any:create(orber_tc:short(), 1)}], + [], any:create(orber_tc:null(), null)))), + + + {ok,T8} = ?match({ok, _}, create_filter("$.header.fixed_header.event_type.type_name == 'CommunicationsAlarm' and $.header.fixed_header.event_name == 'lost_packet' and $.header.variable_header(priority) < 2")), + %% All correct + Event1 = ?not_CreateSE("DomainName","CommunicationsAlarm", + "lost_packet", + [#'CosNotification_Property'{name="priority", + value=any:create(orber_tc:short(), 1)}], + [], any:create(orber_tc:null(), null)), + %% Priority to high + Event2 = ?not_CreateSE("DomainName","CommunicationsAlarm", + "lost_packet", + [#'CosNotification_Property'{name="priority", + value=any:create(orber_tc:short(), 2)}], + [], any:create(orber_tc:null(), null)), + %% Misspell event_name, i.e., lost_packets instead of lost_packet + Event3 = ?not_CreateSE("DomainName","CommunicationsAlarm", + "lost_packets", + [#'CosNotification_Property'{name="priority", + value=any:create(orber_tc:short(), 1)}], + [], any:create(orber_tc:null(), null)), + %% Another type_name + Event4 = ?not_CreateSE("DomainName","TemperatureAlarm", + "lost_packets", + [#'CosNotification_Property'{name="priority", + value=any:create(orber_tc:short(), 1)}], + [], any:create(orber_tc:null(), null)), + + ?match(true, eval(T8, Event1)), + ?match(false, eval(T8, Event2)), + ?match(false, eval(T8, Event3)), + ?match(false, eval(T8, Event4)), + + + {ok,T9} = ?match({ok, _}, create_filter("$.gpa < 80 or $.tests(midterm) > $.tests(final) or $.monthly_attendance[3] < 10")), + + %% midterm > final yields true, the others false + Event5 = ?not_CreateSE("DomainName","TypeName", + "EventName", [], [], + any:create(notify_test_studies:tc(), #notify_test_studies + {gpa = 90, + tests = [#'CosNotification_Property' + {name="midterm", value=any:create(orber_tc:short(), 70)}, + #'CosNotification_Property' + {name="final", value=any:create(orber_tc:short(), 60)}], + monthly_attendance = {0,1,2,10}})), + %% monthly_attendance[3] < 10 yields true, the others false + Event6 = ?not_CreateSE("DomainName","TypeName", + "EventName", [], [], + any:create(notify_test_studies:tc(), #notify_test_studies + {gpa = 90, + tests = [#'CosNotification_Property' + {name="midterm", value=any:create(orber_tc:short(), 70)}, + #'CosNotification_Property' + {name="final", value=any:create(orber_tc:short(), 80)}], + monthly_attendance = {0,1,2,9}})), + %% gpa < 80 true, rest false. + Event7 = ?not_CreateSE("DomainName","TypeName", + "EventName", [], [], + any:create(notify_test_studies:tc(), #notify_test_studies + {gpa = 70, + tests = [#'CosNotification_Property' + {name="midterm", value=any:create(orber_tc:short(), 70)}, + #'CosNotification_Property' + {name="final", value=any:create(orber_tc:short(), 80)}], + monthly_attendance = {0,1,2,10}})), + %% All false + Event8 = ?not_CreateSE("DomainName","TypeName", + "EventName", [], [], + any:create(notify_test_studies:tc(), #notify_test_studies + {gpa = 80, + tests = [#'CosNotification_Property' + {name="midterm", value=any:create(orber_tc:short(), 70)}, + #'CosNotification_Property' + {name="final", value=any:create(orber_tc:short(), 80)}], + monthly_attendance = {0,1,2,10}})), + + ?match(true, eval(T9, Event5)), + ?match(true, eval(T9, Event6)), + ?match(true, eval(T9, Event7)), + ?match(false, eval(T9, Event8)), + ok. + + +%%----------------------------------------------------------------- +%% Internal functions +%%----------------------------------------------------------------- + +%%-------------------- End of Module ------------------------------ diff --git a/lib/cosNotification/test/notification_SUITE.erl b/lib/cosNotification/test/notification_SUITE.erl new file mode 100644 index 0000000000..e2c560e4de --- /dev/null +++ b/lib/cosNotification/test/notification_SUITE.erl @@ -0,0 +1,2185 @@ +%%-------------------------------------------------------------------- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1999-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%-------------------------------------------------------------------- +%% File : notification_SUITE.erl +%% Purpose : +%%-------------------------------------------------------------------- + +-module(notification_SUITE). + +%%--------------- INCLUDES ----------------------------------- +-include_lib("orber/include/corba.hrl"). +-include_lib("orber/include/ifr_types.hrl"). +%% cosEvent files. +-include_lib("cosEvent/include/CosEventChannelAdmin.hrl"). +%% Application files +-include_lib("cosNotification/include/CosNotification.hrl"). +-include_lib("cosNotification/include/CosNotifyChannelAdmin.hrl"). +-include_lib("cosNotification/include/CosNotifyComm.hrl"). +-include_lib("cosNotification/include/CosNotifyFilter.hrl"). + +-include_lib("cosNotification/src/CosNotification_Definitions.hrl"). + +-include("idl_output/notify_test.hrl"). + +-include("test_server.hrl"). + +%%--------------- DEFINES ------------------------------------ +-define(default_timeout, ?t:minutes(20)). +-define(match(ExpectedRes, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + io:format("------ CORRECT RESULT ------~n~p~n", + [AcTuAlReS]), + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS) + end + end()). + +-define(defaultQoS, + [#'CosNotification_Property'{name='CosNotification':'MaximumBatchSize'(), + value=any:create(orber_tc:long(), 100)}, + #'CosNotification_Property'{name='CosNotification':'PacingInterval'(), + value=any:create(orber_tc:unsigned_long_long(), + 20000000)}, + #'CosNotification_Property'{name='CosNotification':'OrderPolicy'(), + value=any:create(orber_tc:short(), + 'CosNotification':'AnyOrder'())}, + #'CosNotification_Property'{name='CosNotification':'EventReliability'(), + value=any:create(orber_tc:short(), + 'CosNotification':'BestEffort'())}, + #'CosNotification_Property'{name='CosNotification':'ConnectionReliability'(), + value=any:create(orber_tc:short(), + 'CosNotification':'BestEffort'())}, + #'CosNotification_Property'{name='CosNotification':'DiscardPolicy'(), + value=any:create(orber_tc:short(), + 'CosNotification':'AnyOrder'())}, + #'CosNotification_Property'{name='CosNotification':'StartTimeSupported'(), + value=any:create(orber_tc:boolean(), false)}, + #'CosNotification_Property'{name='CosNotification':'StopTimeSupported'(), + value=any:create(orber_tc:boolean(), false)}, + #'CosNotification_Property'{name='CosNotification':'Priority'(), + value=any:create(orber_tc:short(), + 'CosNotification':'DefaultPriority'())}]). +-define(defaultQoS2, + [#'CosNotification_Property'{name='CosNotification':'MaximumBatchSize'(), + value=any:create(orber_tc:long(), 1)}, + #'CosNotification_Property'{name='CosNotification':'PacingInterval'(), + value=any:create(orber_tc:unsigned_long_long(), + 0)}, + #'CosNotification_Property'{name='CosNotification':'OrderPolicy'(), + value=any:create(orber_tc:short(), + 'CosNotification':'AnyOrder'())}, + #'CosNotification_Property'{name='CosNotification':'EventReliability'(), + value=any:create(orber_tc:short(), + 'CosNotification':'BestEffort'())}, + #'CosNotification_Property'{name='CosNotification':'ConnectionReliability'(), + value=any:create(orber_tc:short(), + 'CosNotification':'BestEffort'())}, + #'CosNotification_Property'{name='CosNotification':'DiscardPolicy'(), + value=any:create(orber_tc:short(), + 'CosNotification':'AnyOrder'())}, + #'CosNotification_Property'{name='CosNotification':'StartTimeSupported'(), + value=any:create(orber_tc:boolean(), false)}, + #'CosNotification_Property'{name='CosNotification':'StopTimeSupported'(), + value=any:create(orber_tc:boolean(), false)}, + #'CosNotification_Property'{name='CosNotification':'Priority'(), + value=any:create(orber_tc:short(), + 'CosNotification':'DefaultPriority'())}]). +-define(defaultAdm, + [#'CosNotification_Property'{name='CosNotification':'MaxQueueLength'(), + value=any:create(orber_tc:long(), 100)}, + #'CosNotification_Property'{name='CosNotification':'MaxConsumers'(), + value=any:create(orber_tc:long(), 100)}, + #'CosNotification_Property'{name='CosNotification':'MaxSuppliers'(), + value=any:create(orber_tc:long(), 100)}]). + +-define(FAC_OPT, []). + + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1, cases/0, init_all/1, finish_all/1, qos_api/1, adm_api/1, + cosevent_api/1, filter_adm_api/1, events_api/1, events2_api/1, + event_qos_api/1, filter_api/1, mapping_filter_api/1, subscription_api/1, + init_per_testcase/2, fin_per_testcase/2, persistent_max_events_api/1, + persistent_timeout_events_api/1, persistent_recover_events_api/1, + app_test/1]). + +-export([terminated/1]). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["API tests for the cosNotification interfaces", ""]; +all(suite) -> {req, + [mnesia, orber], + {conf, init_all, cases(), finish_all}}. + +cases() -> + [persistent_max_events_api, persistent_timeout_events_api, + persistent_recover_events_api, mapping_filter_api, filter_api, filter_adm_api, + event_qos_api, qos_api, adm_api, cosevent_api, subscription_api, + events_api, events2_api, app_test]. + + + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- + +init_per_testcase(_Case, Config) -> + Path = code:which(?MODULE), + code:add_pathz(filename:join(filename:dirname(Path), "idl_output")), + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Path = code:which(?MODULE), + code:del_path(filename:join(filename:dirname(Path), "idl_output")), + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +init_all(Config) -> + Path = code:which(?MODULE), + code:add_pathz(filename:join(filename:dirname(Path), "idl_output")), + ok = corba:orb_init([{flags, 16#02}, {orber_debug_level, 10}]), + orber:jump_start(), + cosNotificationApp:install_event(), + cosNotificationApp:install(), + 'oe_notify_test_server':'oe_register'(), + cosNotificationApp:start(), + if + is_list(Config) -> + Config; + true -> + exit("Config not a list") + end. + +finish_all(Config) -> + cosNotificationApp:stop(), + Path = code:which(?MODULE), + code:del_path(filename:join(filename:dirname(Path), "idl_output")), + 'oe_notify_test_server':'oe_unregister'(), + cosNotificationApp:uninstall(), + cosNotificationApp:uninstall_event(), + orber:jump_stop(), + Config. + + +%%----------------------------------------------------------------- +%% Tests app file +%%----------------------------------------------------------------- +app_test(doc) -> []; +app_test(suite) -> []; +app_test(_Config) -> + ok=test_server:app_test(cosNotification), + ok. + + +%%----------------------------------------------------------------- +%% Persistent events max limit +%%----------------------------------------------------------------- +persistent_max_events_api(doc) -> ["CosNotification QoS EventReliability Persistent", + ""]; +persistent_max_events_api(suite) -> []; +persistent_max_events_api(_Config) -> + QoSPersistent = + [#'CosNotification_Property'{name='CosNotification':'ConnectionReliability'(), + value=any:create(orber_tc:short(), + 'CosNotification':'Persistent'())}], + QoSEventPersistent = + [#'CosNotification_Property'{name='CosNotification':'EventReliability'(), + value=any:create(orber_tc:short(), + 'CosNotification':'Persistent'())}], + application:set_env(cosNotification, notify, ?MODULE), + application:set_env(cosNotification, max_events, 2), + application:set_env(cosNotification, timeout_events, 300000), + application:set_env(cosNotification, interval_events, 10000), + %% Initialize the application. + Fac = (catch cosNotificationApp:start_global_factory(?FAC_OPT)), + ?match({_,key,_,_,_,_}, Fac), + {Ch, _Id1} = (catch 'CosNotifyChannelAdmin_EventChannelFactory':create_channel(Fac, ?defaultQoS2, ?defaultAdm)), + ?match({_,key,_,_,_,_}, Ch), + + ?match(ok, 'CosNotification_QoSAdmin':set_qos(Ch, QoSEventPersistent)), + ?match(ok, 'CosNotification_QoSAdmin':set_qos(Ch, QoSPersistent)), + + %% Create the Admin objects + {AdminSupplier, _ASID}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_EventChannel':new_for_suppliers(Ch,'AND_OP')), + {AdminConsumer, _ACID}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_EventChannel':new_for_consumers(Ch,'AND_OP')), + + %% Create Proxies and clients + {SequenceProxyPushSupplier,_ID}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_ConsumerAdmin':obtain_notification_push_supplier(AdminConsumer, 'SEQUENCE_EVENT')), + PushSeqC=?match({_,key,_,_,_,_}, 'notify_test_SeqPushC':oe_create(['PUSH_SEQUENCE',SequenceProxyPushSupplier], + [{local_typecheck, false}])), + ?match(ok, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':connect_sequence_push_consumer(SequenceProxyPushSupplier, PushSeqC)), + + {SequenceProxyPushConsumer,_ID}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_SupplierAdmin':obtain_notification_push_consumer(AdminSupplier, 'SEQUENCE_EVENT')), + PushSeqS=?match({_,key,_,_,_,_}, 'notify_test_SeqPushS':oe_create(['PUSH_SEQUENCE',SequenceProxyPushConsumer], + [{local_typecheck, false}])), + ?match(ok, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':connect_sequence_push_supplier(SequenceProxyPushConsumer, PushSeqS)), + + %% Create a couple of Events to test with. + Event = ?not_CreateSE("DomainName","CommunicationsAlarm", + "lost_packet", + [#'CosNotification_Property'{name="priority", + value=any:create(orber_tc:short(), 1)}], + [], any:create(orber_tc:null(), null)), + + ?match(ok, 'notify_test_SeqPushC':doAction(PushSeqC, {action, action})), + + %% Push and check the state. + ?match(ok,'CosNotifyChannelAdmin_SequenceProxyPushConsumer':push_structured_events(SequenceProxyPushConsumer, [Event])), + ?match([], 'notify_test_SeqPushC':doAction(PushSeqC, return_data)), + ?match(false, corba_object:non_existent(SequenceProxyPushSupplier)), + + ?match(ok,'CosNotifyChannelAdmin_SequenceProxyPushConsumer':push_structured_events(SequenceProxyPushConsumer, [Event])), + ?match([], 'notify_test_SeqPushC':doAction(PushSeqC, return_data)), + ?match(false, corba_object:non_existent(SequenceProxyPushSupplier)), + %% Now we've reached the limit. This call will terminate the proxy. + %% We cannot check for data at this point since the broken connection + %% will result in that the client terminates. + ?match(ok,'CosNotifyChannelAdmin_SequenceProxyPushConsumer':push_structured_events(SequenceProxyPushConsumer, [Event])), + timer:sleep(5000), + ?match(true, corba_object:non_existent(SequenceProxyPushSupplier)), + ?match(true, corba_object:non_existent(PushSeqC)), + + + catch corba:dispose(SequenceProxyPushConsumer), + catch corba:dispose(SequenceProxyPushSupplier), + catch corba:dispose(AdminConsumer), + catch corba:dispose(AdminSupplier), + catch corba:dispose(Ch), + catch cosNotificationApp:stop_factory(Fac), + catch corba:dispose(PushSeqS), + catch corba:dispose(PushSeqC), + application:set_env(cosNotification, notify, undefined), + application:set_env(cosNotification, max_events, undefined), + application:set_env(cosNotification, timeout_events, undefined), + application:set_env(cosNotification, interval_events, undefined), + ok. + +terminated(Items) -> + io:format("Proxy terminated due to: ~p~n", [Items]). + +%%----------------------------------------------------------------- +%% Persistent events timeout +%%----------------------------------------------------------------- +persistent_timeout_events_api(doc) -> + ["CosNotification QoS EventReliability Persistent", + ""]; +persistent_timeout_events_api(suite) -> []; +persistent_timeout_events_api(_Config) -> + QoSPersistent = + [#'CosNotification_Property'{name='CosNotification':'ConnectionReliability'(), + value=any:create(orber_tc:short(), + 'CosNotification':'Persistent'())}], + QoSEventPersistent = + [#'CosNotification_Property'{name='CosNotification':'EventReliability'(), + value=any:create(orber_tc:short(), + 'CosNotification':'Persistent'())}], + application:set_env(cosNotification, notify, ?MODULE), + application:set_env(cosNotification, max_events, 1000), + application:set_env(cosNotification, timeout_events, 4000), + application:set_env(cosNotification, interval_events, 1000), + %% Initialize the application. + Fac = (catch cosNotificationApp:start_global_factory(?FAC_OPT)), + ?match({_,key,_,_,_,_}, Fac), + {Ch, _Id1} = (catch 'CosNotifyChannelAdmin_EventChannelFactory':create_channel(Fac, ?defaultQoS2, ?defaultAdm)), + ?match({_,key,_,_,_,_}, Ch), + + ?match(ok, 'CosNotification_QoSAdmin':set_qos(Ch, QoSEventPersistent)), + ?match(ok, 'CosNotification_QoSAdmin':set_qos(Ch, QoSPersistent)), + + %% Create the Admin objects + {AdminSupplier, _ASID}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_EventChannel':new_for_suppliers(Ch,'AND_OP')), + {AdminConsumer, _ACID}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_EventChannel':new_for_consumers(Ch,'AND_OP')), + + %% Create Proxies and clients + {SequenceProxyPushSupplier,_ID}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_ConsumerAdmin':obtain_notification_push_supplier(AdminConsumer, 'SEQUENCE_EVENT')), + PushSeqC=?match({_,key,_,_,_,_}, 'notify_test_SeqPushC':oe_create(['PUSH_SEQUENCE',SequenceProxyPushSupplier], + [{local_typecheck, false}])), + ?match(ok, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':connect_sequence_push_consumer(SequenceProxyPushSupplier, PushSeqC)), + + {SequenceProxyPushConsumer,_ID}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_SupplierAdmin':obtain_notification_push_consumer(AdminSupplier, 'SEQUENCE_EVENT')), + PushSeqS=?match({_,key,_,_,_,_}, 'notify_test_SeqPushS':oe_create(['PUSH_SEQUENCE',SequenceProxyPushConsumer], + [{local_typecheck, false}])), + ?match(ok, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':connect_sequence_push_supplier(SequenceProxyPushConsumer, PushSeqS)), + + %% Create a couple of Events to test with. + Event = ?not_CreateSE("DomainName","CommunicationsAlarm", + "lost_packet", + [#'CosNotification_Property'{name="priority", + value=any:create(orber_tc:short(), 1)}], + [], any:create(orber_tc:null(), null)), + + ?match(ok, 'notify_test_SeqPushC':doAction(PushSeqC, {action, action})), + + %% Push and check the state. + ?match(ok,'CosNotifyChannelAdmin_SequenceProxyPushConsumer':push_structured_events(SequenceProxyPushConsumer, [Event])), + ?match([], 'notify_test_SeqPushC':doAction(PushSeqC, return_data)), + ?match(false, corba_object:non_existent(SequenceProxyPushSupplier)), + + %% Now we've reached the limit. This call will terminate the proxy. + %% We cannot check for data at this point since the broken connection + %% will result in that the client terminates. + ?match(ok,'CosNotifyChannelAdmin_SequenceProxyPushConsumer':push_structured_events(SequenceProxyPushConsumer, [Event])), + timer:sleep(10000), + ?match(true, corba_object:non_existent(SequenceProxyPushSupplier)), + ?match(true, corba_object:non_existent(PushSeqC)), + + + catch corba:dispose(SequenceProxyPushConsumer), + catch corba:dispose(SequenceProxyPushSupplier), + catch corba:dispose(AdminConsumer), + catch corba:dispose(AdminSupplier), + catch corba:dispose(Ch), + catch cosNotificationApp:stop_factory(Fac), + catch corba:dispose(PushSeqS), + catch corba:dispose(PushSeqC), + application:set_env(cosNotification, notify, undefined), + application:set_env(cosNotification, max_events, undefined), + application:set_env(cosNotification, timeout_events, undefined), + application:set_env(cosNotification, interval_events, undefined), + ok. + +%%----------------------------------------------------------------- +%% Persistent events max limit +%%----------------------------------------------------------------- +persistent_recover_events_api(doc) -> + ["CosNotification QoS EventReliability Persistent", + ""]; +persistent_recover_events_api(suite) -> []; +persistent_recover_events_api(_Config) -> + QoSPersistent = + [#'CosNotification_Property'{name='CosNotification':'ConnectionReliability'(), + value=any:create(orber_tc:short(), + 'CosNotification':'Persistent'())}], + QoSEventPersistent = + [#'CosNotification_Property'{name='CosNotification':'EventReliability'(), + value=any:create(orber_tc:short(), + 'CosNotification':'Persistent'())}], + application:set_env(cosNotification, notify, ?MODULE), + application:set_env(cosNotification, max_events, 1000), + application:set_env(cosNotification, timeout_events, 100000), + application:set_env(cosNotification, interval_events, 1000), + %% Initialize the application. + Fac = (catch cosNotificationApp:start_global_factory(?FAC_OPT)), + ?match({_,key,_,_,_,_}, Fac), + {Ch, _Id1} = (catch 'CosNotifyChannelAdmin_EventChannelFactory':create_channel(Fac, ?defaultQoS2, ?defaultAdm)), + ?match({_,key,_,_,_,_}, Ch), + + ?match(ok, 'CosNotification_QoSAdmin':set_qos(Ch, QoSEventPersistent)), + ?match(ok, 'CosNotification_QoSAdmin':set_qos(Ch, QoSPersistent)), + + %% Create the Admin objects + {AdminSupplier, _ASID}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_EventChannel':new_for_suppliers(Ch,'AND_OP')), + {AdminConsumer, _ACID}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_EventChannel':new_for_consumers(Ch,'AND_OP')), + + %% Create Proxies and clients + {SequenceProxyPushSupplier,_ID}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_ConsumerAdmin':obtain_notification_push_supplier(AdminConsumer, 'SEQUENCE_EVENT')), + PushSeqC=?match({_,key,_,_,_,_}, 'notify_test_SeqPushC':oe_create(['PUSH_SEQUENCE',SequenceProxyPushSupplier], + [{local_typecheck, false}])), + ?match(ok, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':connect_sequence_push_consumer(SequenceProxyPushSupplier, PushSeqC)), + + {SequenceProxyPushConsumer,_ID}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_SupplierAdmin':obtain_notification_push_consumer(AdminSupplier, 'SEQUENCE_EVENT')), + PushSeqS=?match({_,key,_,_,_,_}, 'notify_test_SeqPushS':oe_create(['PUSH_SEQUENCE',SequenceProxyPushConsumer], + [{local_typecheck, false}])), + ?match(ok, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':connect_sequence_push_supplier(SequenceProxyPushConsumer, PushSeqS)), + + %% Create a couple of Events to test with. + Event = ?not_CreateSE("DomainName","CommunicationsAlarm", + "lost_packet", + [#'CosNotification_Property'{name="priority", + value=any:create(orber_tc:short(), 1)}], + [], any:create(orber_tc:null(), null)), + + ?match(ok, 'notify_test_SeqPushC':doAction(PushSeqC, {action, action})), + + %% Push and check the state. + ?match(ok,'CosNotifyChannelAdmin_SequenceProxyPushConsumer':push_structured_events(SequenceProxyPushConsumer, [Event])), + ?match([], 'notify_test_SeqPushC':doAction(PushSeqC, return_data)), + ?match(false, corba_object:non_existent(SequenceProxyPushSupplier)), + %% Allow the proxy to try a few times and then change the client behavior + timer:sleep(4000), + ?match(ok, 'notify_test_SeqPushC':doAction(PushSeqC, {action, undefined})), + %% Wait some time so that the proxy timeout has kicked in. + timer:sleep(4000), + + %% Now the communication should work again. + ?match([Event], 'notify_test_SeqPushC':doAction(PushSeqC, return_data)), + ?match(false, corba_object:non_existent(SequenceProxyPushSupplier)), + + ?match(ok,'CosNotifyChannelAdmin_SequenceProxyPushConsumer':push_structured_events(SequenceProxyPushConsumer, [Event])), + timer:sleep(4000), + ?match([Event], 'notify_test_SeqPushC':doAction(PushSeqC, return_data)), + + catch corba:dispose(SequenceProxyPushConsumer), + catch corba:dispose(SequenceProxyPushSupplier), + catch corba:dispose(AdminConsumer), + catch corba:dispose(AdminSupplier), + catch corba:dispose(Ch), + catch cosNotificationApp:stop_factory(Fac), + catch corba:dispose(PushSeqS), + catch corba:dispose(PushSeqC), + application:set_env(cosNotification, notify, undefined), + application:set_env(cosNotification, max_events, undefined), + application:set_env(cosNotification, timeout_events, undefined), + application:set_env(cosNotification, interval_events, undefined), + ok. + + +%%----------------------------------------------------------------- +%% CosNotifyFilter::Filter API tests +%%----------------------------------------------------------------- +mapping_filter_api(doc) -> ["CosNotifyFilter::MappingFilter API tests.", ""]; +mapping_filter_api(suite) -> []; +mapping_filter_api(_Config) -> + FiFac = 'CosNotifyFilter_FilterFactory':oe_create(), + ?match({_,key,_,_,_,_}, FiFac), + + Filter = 'CosNotifyFilter_FilterFactory':create_mapping_filter(FiFac, + "EXTENDED_TCL", + any:create(orber_tc:short(), 10)), + ?match({_,key,_,_,_,_}, Filter), + + ?match("EXTENDED_TCL", 'CosNotifyFilter_MappingFilter':'_get_constraint_grammar'(Filter)), + + %% Test before we add any constarints. + ?match([], 'CosNotifyFilter_MappingFilter':get_all_mapping_constraints(Filter)), + ?match({'EXCEPTION', {'CosNotifyFilter_ConstraintNotFound', _, 1}}, + 'CosNotifyFilter_MappingFilter':get_mapping_constraints(Filter, [1])), + ?match(ok, 'CosNotifyFilter_MappingFilter':remove_all_mapping_constraints(Filter)), + + %% Try adding an incorrect constraint_expr + ?match({'EXCEPTION',{'CosNotifyFilter_InvalidConstraint',_,_}}, + 'CosNotifyFilter_MappingFilter':add_mapping_constraints(Filter, + [#'CosNotifyFilter_MappingConstraintPair' + {constraint_expression = #'CosNotifyFilter_ConstraintExp' + {event_types = [#'CosNotification_EventType' + {domain_name = "name", + type_name = "type"}], + constraint_expr = "2==2 and 3<"}, + result_to_set = any:create(orber_tc:short(), 10)}])), + %% Try adding two correct constraint_expr + ?line[{_,_,CID1,_},{_,_,CID2,_}]= + ?match([{'CosNotifyFilter_MappingConstraintInfo',_,_,_}, {'CosNotifyFilter_MappingConstraintInfo',_,_,_}], + 'CosNotifyFilter_MappingFilter':add_mapping_constraints(Filter, + [#'CosNotifyFilter_MappingConstraintPair' + {constraint_expression = #'CosNotifyFilter_ConstraintExp' + {event_types = [#'CosNotification_EventType' + {domain_name = "name", + type_name = "type"}], + constraint_expr = "2==2 and 3<4"}, + result_to_set = any:create(orber_tc:short(), 10)}, + #'CosNotifyFilter_MappingConstraintPair' + {constraint_expression = #'CosNotifyFilter_ConstraintExp' + {event_types = [#'CosNotification_EventType' + {domain_name = "name2", + type_name = "type2"}], + constraint_expr = "$.test._length == 3 and ($.test[0].score + $.test[1].score + $.test[2].score)/3 >=80"}, + result_to_set = any:create(orber_tc:short(), 10)}])), + + ?match([{'CosNotifyFilter_MappingConstraintInfo',_,CID2,_}, {'CosNotifyFilter_MappingConstraintInfo',_,CID1,_}], + 'CosNotifyFilter_MappingFilter':get_all_mapping_constraints(Filter)), + ?match([{'CosNotifyFilter_MappingConstraintInfo',_,CID1,_}], + 'CosNotifyFilter_MappingFilter':get_mapping_constraints(Filter, [CID1])), + ?match(ok, 'CosNotifyFilter_MappingFilter':remove_all_mapping_constraints(Filter)), + ?match([], 'CosNotifyFilter_MappingFilter':get_all_mapping_constraints(Filter)), + + %% Try adding a constraint_expr with using invalid value, i.e., not short. + ?match({'EXCEPTION',{'CosNotifyFilter_InvalidValue',_,_,_}}, + 'CosNotifyFilter_MappingFilter':add_mapping_constraints(Filter, + [#'CosNotifyFilter_MappingConstraintPair' + {constraint_expression = #'CosNotifyFilter_ConstraintExp' + {event_types = [#'CosNotification_EventType' + {domain_name = "name", + type_name = "type"}], + constraint_expr = "2==2 and 3<8"}, + result_to_set = any:create(orber_tc:long(), 10)}])), + + %% Try adding one correct and one incorrect constraint_expr + ?match({'EXCEPTION',{'CosNotifyFilter_InvalidConstraint',_,_}}, + 'CosNotifyFilter_MappingFilter':add_mapping_constraints(Filter, + [#'CosNotifyFilter_MappingConstraintPair' + {constraint_expression = #'CosNotifyFilter_ConstraintExp' + {event_types = [#'CosNotification_EventType' + {domain_name = "name", + type_name = "type"}], + constraint_expr = "2==2 and 3<"}, + result_to_set = any:create(orber_tc:short(), 10)}, + #'CosNotifyFilter_MappingConstraintPair' + {constraint_expression = #'CosNotifyFilter_ConstraintExp' + {event_types = [#'CosNotification_EventType' + {domain_name = "name2", + type_name = "type2"}], + constraint_expr = "$.test._length == 3 and ($.test[0].score + $.test[1].score + $.test[2].score)/3 >=80"}, + result_to_set = any:create(orber_tc:short(), 10)}])), + + %% Following testcases test different domain_name and type_name, e.g., + %% wildcards etc. + [{_,ConInfoData,CID3,_}] = + ?match([{'CosNotifyFilter_MappingConstraintInfo',_,_,_}], + 'CosNotifyFilter_MappingFilter':add_mapping_constraints(Filter, + [#'CosNotifyFilter_MappingConstraintPair' + {constraint_expression = #'CosNotifyFilter_ConstraintExp' + {event_types = [#'CosNotification_EventType' + {domain_name = "domain", + type_name = ""}, + #'CosNotification_EventType' + {domain_name = "*", + type_name = "type"}], + constraint_expr = "2==2 and 3<4"}, + result_to_set = any:create(orber_tc:short(), 10)}])), + + %% Try removing a constraint + ?match(ok, 'CosNotifyFilter_MappingFilter':modify_mapping_constraints(Filter,[CID3],[])), + ?match([], 'CosNotifyFilter_MappingFilter':get_all_mapping_constraints(Filter)), + + %% Add e new constraint + [{_,_,CID4,_}] = + ?match([{'CosNotifyFilter_MappingConstraintInfo',_,_,_}], + 'CosNotifyFilter_MappingFilter':add_mapping_constraints(Filter, + [#'CosNotifyFilter_MappingConstraintPair' + {constraint_expression = #'CosNotifyFilter_ConstraintExp' + {event_types = [#'CosNotification_EventType' + {domain_name = "domain1", + type_name = ""}, + #'CosNotification_EventType' + {domain_name = "domain2", + type_name = "*"}], + constraint_expr = "2==2 and 3<4"}, + result_to_set = any:create(orber_tc:short(), 10)}])), + + %% Try to update the constraint associated with CID4 to equal CID3. + ?match(ok, 'CosNotifyFilter_MappingFilter':modify_mapping_constraints(Filter,[], + [#'CosNotifyFilter_MappingConstraintInfo' + {constraint_expression= + #'CosNotifyFilter_ConstraintExp' + {event_types =[#'CosNotification_EventType' + {domain_name = "domain", + type_name = ""}, + #'CosNotification_EventType' + {domain_name = "*", + type_name = "type"}], + constraint_expr = "2==2 and 3<4"}, + constraint_id=CID4, + value = any:create(orber_tc:short(), 10)}])), + + ?match([{_,ConInfoData,CID4,_}], 'CosNotifyFilter_MappingFilter':get_all_mapping_constraints(Filter)), + + ?match({'EXCEPTION', {'CosNotifyFilter_ConstraintNotFound', _, CID3}}, + 'CosNotifyFilter_MappingFilter':get_mapping_constraints(Filter, [CID3])), + ?match(ok, 'CosNotifyFilter_MappingFilter':remove_all_mapping_constraints(Filter)), + ?match([], 'CosNotifyFilter_MappingFilter':get_all_mapping_constraints(Filter)), + + ?match([{'CosNotifyFilter_MappingConstraintInfo',_,_,_}], + 'CosNotifyFilter_MappingFilter':add_mapping_constraints(Filter, + [#'CosNotifyFilter_MappingConstraintPair' + {constraint_expression = #'CosNotifyFilter_ConstraintExp' + {event_types = [#'CosNotification_EventType' + {domain_name = "", + type_name = "type1"}, + #'CosNotification_EventType' + {domain_name = "*", + type_name = "type2"}], + constraint_expr = "2==2 and 3<4"}, + result_to_set = any:create(orber_tc:short(), 10)}])), + + ?match([{'CosNotifyFilter_MappingConstraintInfo',_,_,_}], + 'CosNotifyFilter_MappingFilter':add_mapping_constraints(Filter, + [#'CosNotifyFilter_MappingConstraintPair' + {constraint_expression = #'CosNotifyFilter_ConstraintExp' + {event_types = [#'CosNotification_EventType' + {domain_name = "domain1", + type_name = "type1"}, + #'CosNotification_EventType' + {domain_name = "domain2", + type_name = "type2"}], + constraint_expr = "2==2 and 3<4"}, + result_to_set = any:create(orber_tc:short(), 10)}])), + + ?match([{'CosNotifyFilter_MappingConstraintInfo',_,_,_}], + 'CosNotifyFilter_MappingFilter':add_mapping_constraints(Filter, + [#'CosNotifyFilter_MappingConstraintPair' + {constraint_expression = #'CosNotifyFilter_ConstraintExp' + {event_types = [#'CosNotification_EventType' + {domain_name = "dom*", + type_name = "type1"}, + #'CosNotification_EventType' + {domain_name = "domain2", + type_name = "typ*"}], + constraint_expr = "2==2 and 3<4"}, + result_to_set = any:create(orber_tc:short(), 10)}])), + + ?match([{'CosNotifyFilter_MappingConstraintInfo',_,_,_}], + 'CosNotifyFilter_MappingFilter':add_mapping_constraints(Filter, + [#'CosNotifyFilter_MappingConstraintPair' + {constraint_expression = #'CosNotifyFilter_ConstraintExp' + {event_types = [#'CosNotification_EventType' + {domain_name = "dom*1", + type_name = "type1"}, + #'CosNotification_EventType' + {domain_name = "domain2", + type_name = "typ*2"}], + constraint_expr = "2==2 and 3<4"}, + result_to_set = any:create(orber_tc:short(), 10)}])), + + catch corba:dispose(FiFac), + catch corba:dispose(Filter), + ok. + + +%%----------------------------------------------------------------- +%% CosNotifyFilter::Filter API tests +%%----------------------------------------------------------------- +filter_api(doc) -> ["CosNotifyFilter::Filter API tests.", ""]; +filter_api(suite) -> []; +filter_api(_Config) -> + Fac = cosNotificationApp:start_global_factory(?FAC_OPT), + ?match({_,key,_,_,_,_}, Fac), + {Ch, _Id1} = 'CosNotifyChannelAdmin_EventChannelFactory':create_channel(Fac, ?defaultQoS, ?defaultAdm), + AC= 'CosNotifyChannelAdmin_EventChannel':for_consumers(Ch), + + FiFac = 'CosNotifyFilter_FilterFactory':oe_create(), + ?match({_,key,_,_,_,_}, FiFac), + + Filter = 'CosNotifyFilter_FilterFactory':create_filter(FiFac,"EXTENDED_TCL"), + ?match({_,key,_,_,_,_}, Filter), + + ?match("EXTENDED_TCL", 'CosNotifyFilter_Filter':'_get_constraint_grammar'(Filter)), + + %% Test Callback management. + ?match({'EXCEPTION',{'BAD_PARAM',_,_,_}}, + 'CosNotifyFilter_Filter':attach_callback(Filter, Ch)), + ?match([], 'CosNotifyFilter_Filter':get_callbacks(Filter)), + ?match({'EXCEPTION',{'CosNotifyFilter_CallbackNotFound',_}}, + 'CosNotifyFilter_Filter':detach_callback(Filter, 0)), + ID='CosNotifyFilter_Filter':attach_callback(Filter, AC), + ?match([ID], 'CosNotifyFilter_Filter':get_callbacks(Filter)), + ?match(ok, 'CosNotifyFilter_Filter':detach_callback(Filter, ID)), + ?match([], 'CosNotifyFilter_Filter':get_callbacks(Filter)), + + %% This callback is just attached so we can test that we can call notify_subscribe. + _ID2='CosNotifyFilter_Filter':attach_callback(Filter, AC), + + %% Test before we add any constarints. + ?match([], 'CosNotifyFilter_Filter':get_all_constraints(Filter)), + ?match({'EXCEPTION', {'CosNotifyFilter_ConstraintNotFound', _, 1}}, + 'CosNotifyFilter_Filter':get_constraints(Filter, [1])), + ?match(ok, 'CosNotifyFilter_Filter':remove_all_constraints(Filter)), + + %% Try adding an incorrect constraint_expr + ?match({'EXCEPTION',{'CosNotifyFilter_InvalidConstraint',_,_}}, + 'CosNotifyFilter_Filter':add_constraints(Filter, + [#'CosNotifyFilter_ConstraintExp'{event_types = + [#'CosNotification_EventType'{ + domain_name = "name", + type_name = "type"}], + constraint_expr = "2==2 and 3<"}])), + %% Try adding two correct constraint_expr + ?line[{_,_,CID1},{_,_,CID2}]= + ?match([{'CosNotifyFilter_ConstraintInfo',_,_}, {'CosNotifyFilter_ConstraintInfo',_,_}], + 'CosNotifyFilter_Filter':add_constraints(Filter, + [#'CosNotifyFilter_ConstraintExp'{event_types = + [#'CosNotification_EventType'{ + domain_name = "name", + type_name = "type"}], + constraint_expr = "2==2 and 3<4"}, + #'CosNotifyFilter_ConstraintExp'{event_types = + [#'CosNotification_EventType'{ + domain_name = "name2", + type_name = "type2"}], + constraint_expr = "$.test._length == 3 and ($.test[0].score + $.test[1].score + $.test[2].score)/3 >=80"}])), + + ?match([{'CosNotifyFilter_ConstraintInfo',_,CID2}, {'CosNotifyFilter_ConstraintInfo',_,CID1}], + 'CosNotifyFilter_Filter':get_all_constraints(Filter)), + ?match([{'CosNotifyFilter_ConstraintInfo',_,CID1}], + 'CosNotifyFilter_Filter':get_constraints(Filter, [CID1])), + ?match(ok, 'CosNotifyFilter_Filter':remove_all_constraints(Filter)), + ?match([], 'CosNotifyFilter_Filter':get_all_constraints(Filter)), + + %% Try adding one correct and one incorrect constraint_expr + ?match({'EXCEPTION',{'CosNotifyFilter_InvalidConstraint',_,_}}, + 'CosNotifyFilter_Filter':add_constraints(Filter, + [#'CosNotifyFilter_ConstraintExp'{event_types = + [#'CosNotification_EventType'{ + domain_name = "name", + type_name = "type"}], + constraint_expr = "2==2 and 3<"}, + #'CosNotifyFilter_ConstraintExp'{event_types = + [#'CosNotification_EventType'{ + domain_name = "name2", + type_name = "type2"}], + constraint_expr = "$.test._length == 3 and ($.test[0].score + $.test[1].score + $.test[2].score)/3 >=80"}])), + + %% Following testcases test different domain_name and type_name, e.g., + %% wildcards etc. + [{_,ConInfoData,CID3}] = + ?match([{'CosNotifyFilter_ConstraintInfo',_,_}], + 'CosNotifyFilter_Filter':add_constraints(Filter, + [#'CosNotifyFilter_ConstraintExp'{event_types = + [#'CosNotification_EventType'{ + domain_name = "domain", + type_name = ""}, + #'CosNotification_EventType'{ + domain_name = "*", + type_name = "type"}], + constraint_expr = "2==2 and 3<4"}])), + + %% Try removing a constraint + ?match(ok, 'CosNotifyFilter_Filter':modify_constraints(Filter,[CID3],[])), + ?match([], 'CosNotifyFilter_Filter':get_all_constraints(Filter)), + + %% Add e new constraint + [{_,_,CID4}] = + ?match([{'CosNotifyFilter_ConstraintInfo',_,_}], + 'CosNotifyFilter_Filter':add_constraints(Filter, + [#'CosNotifyFilter_ConstraintExp'{event_types = + [#'CosNotification_EventType'{ + domain_name = "domain1", + type_name = ""}, + #'CosNotification_EventType'{ + domain_name = "domain2", + type_name = "*"}], + constraint_expr = "2==2 and 3<4"}])), + + %% Try to update the constraint associated with CID4 to equal CID3. + ?match(ok, 'CosNotifyFilter_Filter':modify_constraints(Filter,[], + [#'CosNotifyFilter_ConstraintInfo'{constraint_expression= + #'CosNotifyFilter_ConstraintExp'{event_types = + [#'CosNotification_EventType'{ + domain_name = "domain", + type_name = ""}, + #'CosNotification_EventType'{ + domain_name = "*", + type_name = "type"}], + constraint_expr = "2==2 and 3<4"}, + constraint_id=CID4}])), + + ?match([{_,ConInfoData,CID4}], 'CosNotifyFilter_Filter':get_all_constraints(Filter)), + + ?match({'EXCEPTION', {'CosNotifyFilter_ConstraintNotFound', _, CID3}}, + 'CosNotifyFilter_Filter':get_constraints(Filter, [CID3])), + ?match(ok, 'CosNotifyFilter_Filter':remove_all_constraints(Filter)), + ?match([], 'CosNotifyFilter_Filter':get_all_constraints(Filter)), + + ?match([{'CosNotifyFilter_ConstraintInfo',_,_}], + 'CosNotifyFilter_Filter':add_constraints(Filter, + [#'CosNotifyFilter_ConstraintExp'{event_types = + [#'CosNotification_EventType'{ + domain_name = "", + type_name = "type1"}, + #'CosNotification_EventType'{ + domain_name = "*", + type_name = "type2"}], + constraint_expr = "2==2 and 3<4"}])), + + ?match([{'CosNotifyFilter_ConstraintInfo',_,_}], + 'CosNotifyFilter_Filter':add_constraints(Filter, + [#'CosNotifyFilter_ConstraintExp'{event_types = + [#'CosNotification_EventType'{ + domain_name = "domain1", + type_name = "type1"}, + #'CosNotification_EventType'{ + domain_name = "domain2", + type_name = "type2"}], + constraint_expr = "2==2 and 3<4"}])), + + ?match([{'CosNotifyFilter_ConstraintInfo',_,_}], + 'CosNotifyFilter_Filter':add_constraints(Filter, + [#'CosNotifyFilter_ConstraintExp'{event_types = + [#'CosNotification_EventType'{ + domain_name = "dom*", + type_name = "type1"}, + #'CosNotification_EventType'{ + domain_name = "domain2", + type_name = "typ*"}], + constraint_expr = "2==2 and 3<4"}])), + + ?match([{'CosNotifyFilter_ConstraintInfo',_,_}], + 'CosNotifyFilter_Filter':add_constraints(Filter, + [#'CosNotifyFilter_ConstraintExp'{event_types = + [#'CosNotification_EventType'{ + domain_name = "dom*1", + type_name = "type1"}, + #'CosNotification_EventType'{ + domain_name = "domain2", + type_name = "typ*2"}], + constraint_expr = "2==2 and 3<4"}])), + + catch corba:dispose(FiFac), + catch corba:dispose(Filter), + catch corba:dispose(AC), + catch corba:dispose(Ch), + catch corba:dispose(Fac), + ok. + +%%----------------------------------------------------------------- +%% Subscription handling API tests +%%----------------------------------------------------------------- +subscription_api(doc) -> ["CosNotification subscription handling", ""]; +subscription_api(suite) -> []; +subscription_api(_Config) -> + %% Initialize the application. + Fac = (catch cosNotificationApp:start_global_factory(?FAC_OPT)), + ?match({_,key,_,_,_,_}, Fac), + {Ch, _Id1} = (catch 'CosNotifyChannelAdmin_EventChannelFactory':create_channel(Fac, ?defaultQoS, ?defaultAdm)), + ?match({_,key,_,_,_,_}, Ch), + + %% Create the Admin objects + {AdminSupplier, _ASID}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_EventChannel':new_for_suppliers(Ch,'OR_OP')), + {AdminConsumer, _ACID}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_EventChannel':new_for_consumers(Ch,'OR_OP')), + + %% Create Suppliers Proxies + {StructuredProxyPullSupplier,_}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_ConsumerAdmin':obtain_notification_pull_supplier(AdminConsumer, 'STRUCTURED_EVENT')), + {StructuredProxyPushSupplier,_}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_ConsumerAdmin':obtain_notification_push_supplier(AdminConsumer, 'STRUCTURED_EVENT')), + + %% Now we must create a Client for each proxy and connect them. + PushStrC=?match({_,key,_,_,_,_}, 'notify_test_StrPushC':oe_create(['PUSH_STRUCTURED',StructuredProxyPushSupplier], + [{local_typecheck, false}])), + ?match(ok, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':connect_structured_push_consumer(StructuredProxyPushSupplier, PushStrC)), + PullStrC=?match({_,key,_,_,_,_}, 'notify_test_StrPullC':oe_create(['PULL_STRUCTURED',StructuredProxyPullSupplier], + [{local_typecheck, false}])), + ?match(ok, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':connect_structured_pull_consumer(StructuredProxyPullSupplier, PullStrC)), + + %% Create Consumers Proxies + {StructuredProxyPullConsumer,_}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_SupplierAdmin':obtain_notification_pull_consumer(AdminSupplier, 'STRUCTURED_EVENT')), + {StructuredProxyPushConsumer,_}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_SupplierAdmin':obtain_notification_push_consumer(AdminSupplier, 'STRUCTURED_EVENT')), + + %% Now we must create a Client for each proxy and connect them. + PushStrS=?match({_,key,_,_,_,_}, 'notify_test_StrPushS':oe_create(['PUSH_STRUCTURED',StructuredProxyPushConsumer], + [{local_typecheck, false}])), + ?match(ok, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':connect_structured_push_supplier(StructuredProxyPushConsumer, PushStrS)), + + PullStrS=?match({_,key,_,_,_,_}, 'notify_test_StrPullS':oe_create(['PULL_STRUCTURED',StructuredProxyPullConsumer], + [{local_typecheck, false}])), + ?match(ok, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':connect_structured_pull_supplier(StructuredProxyPullConsumer, PullStrS)), + + ES1=[#'CosNotification_EventType'{domain_name = "name1", type_name = "type1"}, + #'CosNotification_EventType'{domain_name = "name2", type_name = "type2"}], + ES2=[#'CosNotification_EventType'{domain_name = "name3", type_name = "type3"}, + #'CosNotification_EventType'{domain_name = "name4", type_name = "type4"}], + + %% Initially it should have no associated types. Test that and set that + %% all updates should be forwarded to client. + ?match([], 'CosNotifyChannelAdmin_StructuredProxyPushConsumer': + obtain_subscription_types(StructuredProxyPushConsumer, + 'ALL_NOW_UPDATES_ON')), + ?match([], 'CosNotifyChannelAdmin_StructuredProxyPullConsumer': + obtain_subscription_types(StructuredProxyPullConsumer, + 'ALL_NOW_UPDATES_ON')), + + %% Update the offered types. + ?match(ok, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer': + offer_change(StructuredProxyPushConsumer, ES1, [])), + ?match(ok, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer': + offer_change(StructuredProxyPullConsumer, ES1, [])), + + %% To be sure, wait a couple of seconds. + timer:sleep(5000), + ?match([{'CosNotification_EventType',_,_}, + {'CosNotification_EventType',_,_}], + 'notify_test_StrPushC':doAction(PushStrS, return_data)), + ?match([{'CosNotification_EventType',_,_}, + {'CosNotification_EventType',_,_}], + 'notify_test_StrPullC':doAction(PullStrS, return_data)), + + %% Update the offered types. Remove ES1 and add ES2. + ?match(ok, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer': + offer_change(StructuredProxyPushConsumer, ES2, ES1)), + ?match(ok, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer': + offer_change(StructuredProxyPullConsumer, ES2, ES1)), + + %% To be sure, wait a couple of seconds. + timer:sleep(5000), + ?match([{'CosNotification_EventType',_,_}, + {'CosNotification_EventType',_,_}], + 'notify_test_StrPushC':doAction(PushStrS, return_data)), + ?match([{'CosNotification_EventType',_,_}, + {'CosNotification_EventType',_,_}], + 'notify_test_StrPullC':doAction(PullStrS, return_data)), + + %% Now, the objects should only contain 'ES2'. Test it. + ?match([{'CosNotification_EventType',_,_}, + {'CosNotification_EventType',_,_}], + 'CosNotifyChannelAdmin_StructuredProxyPushConsumer': + obtain_subscription_types(StructuredProxyPushConsumer, + 'ALL_NOW_UPDATES_ON')), + ?match([{'CosNotification_EventType',_,_}, + {'CosNotification_EventType',_,_}], + 'CosNotifyChannelAdmin_StructuredProxyPullConsumer': + obtain_subscription_types(StructuredProxyPullConsumer, + 'ALL_NOW_UPDATES_ON')), + + %% Now we will use wildcards, empty strings and test if they really + %% are ignored if so requested. + ES3=[#'CosNotification_EventType'{domain_name = "name1", type_name = "*"}, + #'CosNotification_EventType'{domain_name = "*", type_name = "type2"}], + ES4=[#'CosNotification_EventType'{domain_name = "name1", type_name = "*"}, + #'CosNotification_EventType'{domain_name = "name2", type_name = ""}], + ES5=[#'CosNotification_EventType'{domain_name = "na*", type_name = "type1"}], + ES6=[#'CosNotification_EventType'{domain_name = "n*1", type_name = "type1"}], + ES7=[#'CosNotification_EventType'{domain_name = "*1", type_name = "type1"}], + ES8=[#'CosNotification_EventType'{domain_name = "n*m*1", type_name = "type1"}], + ES9=[#'CosNotification_EventType'{domain_name = "n**1", type_name = "type1"}], + ES10=[#'CosNotification_EventType'{domain_name = "nam*1", type_name = "type1"}], + + Event1 = ?not_CreateSE("name1","type1", + "event_name", + [#'CosNotification_Property'{name="property_name", + value=any:create(orber_tc:short(), 1)}], + [], any:create(orber_tc:null(), null)), + Event2 = ?not_CreateSE("name2","type1", + "event_name", + [#'CosNotification_Property'{name="property_name", + value=any:create(orber_tc:short(), 1)}], + [], any:create(orber_tc:null(), null)), + Event3 = ?not_CreateSE("mame1","type1", + "event_name", + [#'CosNotification_Property'{name="property_name", + value=any:create(orber_tc:short(), 1)}], + [], any:create(orber_tc:null(), null)), + Event4 = ?not_CreateSE("naame1","type1", + "event_name", + [#'CosNotification_Property'{name="property_name", + value=any:create(orber_tc:short(), 1)}], + [], any:create(orber_tc:null(), null)), + Event5 = ?not_CreateSE("nname1","type1", + "event_name", + [#'CosNotification_Property'{name="property_name", + value=any:create(orber_tc:short(), 1)}], + [], any:create(orber_tc:null(), null)), + Event6 = ?not_CreateSE("name12","type1", + "event_name", + [#'CosNotification_Property'{name="property_name", + value=any:create(orber_tc:short(), 1)}], + [], any:create(orber_tc:null(), null)), + + ?match(ok, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier': + subscription_change(StructuredProxyPullSupplier, ES3, [])), + + ?match(ok,'CosNotifyChannelAdmin_StructuredProxyPushConsumer':push_structured_event(StructuredProxyPushConsumer, Event1)), + + ?match(Event1, 'notify_test_StrPullC':doAction(PullStrC, pull_str)), + + ?match(ok, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier': + subscription_change(StructuredProxyPullSupplier, ES4, ES3)), + ?match(ok,'CosNotifyChannelAdmin_StructuredProxyPushConsumer':push_structured_event(StructuredProxyPushConsumer, Event1)), + ?match(Event1, 'notify_test_StrPullC':doAction(PullStrC, pull_str)), + + ?match(ok, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier': + subscription_change(StructuredProxyPullSupplier, ES5, ES4)), + ?match(ok,'CosNotifyChannelAdmin_StructuredProxyPushConsumer':push_structured_event(StructuredProxyPushConsumer, Event1)), + ?match(Event1, 'notify_test_StrPullC':doAction(PullStrC, pull_str)), + + ?match(ok, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier': + subscription_change(StructuredProxyPullSupplier, ES6, ES5)), + ?match(ok,'CosNotifyChannelAdmin_StructuredProxyPushConsumer':push_structured_event(StructuredProxyPushConsumer, Event1)), + ?match(Event1, 'notify_test_StrPullC':doAction(PullStrC, pull_str)), + + ?match(ok, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier': + subscription_change(StructuredProxyPullSupplier, ES7, ES6)), + ?match(ok,'CosNotifyChannelAdmin_StructuredProxyPushConsumer':push_structured_event(StructuredProxyPushConsumer, Event1)), + ?match(Event1, 'notify_test_StrPullC':doAction(PullStrC, pull_str)), + + ?match(ok, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier': + subscription_change(StructuredProxyPullSupplier, ES8, ES7)), + ?match(ok,'CosNotifyChannelAdmin_StructuredProxyPushConsumer':push_structured_event(StructuredProxyPushConsumer, Event1)), + ?match(Event1, 'notify_test_StrPullC':doAction(PullStrC, pull_str)), + + ?match(ok, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier': + subscription_change(StructuredProxyPullSupplier, ES9, ES8)), + ?match(ok,'CosNotifyChannelAdmin_StructuredProxyPushConsumer':push_structured_event(StructuredProxyPushConsumer, Event1)), + ?match(Event1, 'notify_test_StrPullC':doAction(PullStrC, pull_str)), + + ?match(ok,'CosNotifyChannelAdmin_StructuredProxyPushConsumer':push_structured_event(StructuredProxyPushConsumer, Event2)), + ?match(ok,'CosNotifyChannelAdmin_StructuredProxyPushConsumer':push_structured_event(StructuredProxyPushConsumer, Event3)), + + timer:sleep(5000), + ?match({_NilStrEvent,false}, 'notify_test_StrPullC':doAction(PullStrC, try_pull_str)), + + ?match(ok, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier': + subscription_change(StructuredProxyPullSupplier, ES10, ES9)), + ?match(ok,'CosNotifyChannelAdmin_StructuredProxyPushConsumer':push_structured_event(StructuredProxyPushConsumer, Event1)), + ?match(Event1, 'notify_test_StrPullC':doAction(PullStrC, pull_str)), + + ?match(ok,'CosNotifyChannelAdmin_StructuredProxyPushConsumer':push_structured_event(StructuredProxyPushConsumer, Event4)), + ?match(ok,'CosNotifyChannelAdmin_StructuredProxyPushConsumer':push_structured_event(StructuredProxyPushConsumer, Event5)), + ?match(ok,'CosNotifyChannelAdmin_StructuredProxyPushConsumer':push_structured_event(StructuredProxyPushConsumer, Event6)), + + timer:sleep(5000), + ?match({_NilStrEvent,false}, 'notify_test_StrPullC':doAction(PullStrC, try_pull_str)), + + + catch corba:dispose(StructuredProxyPushConsumer), + catch corba:dispose(StructuredProxyPullConsumer), + catch corba:dispose(StructuredProxyPushSupplier), + catch corba:dispose(StructuredProxyPullSupplier), + catch corba:dispose(AdminConsumer), + catch corba:dispose(AdminSupplier), + catch corba:dispose(Ch), + catch cosNotificationApp:stop_factory(Fac), + + timer:sleep(5000), + ?match(true, corba_object:non_existent(PullStrS)), + ?match(true, corba_object:non_existent(PushStrS)), + ?match(true, corba_object:non_existent(PullStrC)), + ?match(true, corba_object:non_existent(PushStrC)), + + ok. + +%%----------------------------------------------------------------- +%% Filter admin API tests +%%----------------------------------------------------------------- +filter_adm_api(doc) -> ["CosNotification filter admin tests", ""]; +filter_adm_api(suite) -> []; +filter_adm_api(_Config) -> + Fac = (catch cosNotificationApp:start_global_factory(?FAC_OPT)), + ?match({_,key,_,_,_,_}, Fac), + {Ch, _Id1} = (catch 'CosNotifyChannelAdmin_EventChannelFactory':create_channel(Fac, ?defaultQoS, ?defaultAdm)), + ?match({_,key,_,_,_,_}, Ch), + + FiFac = 'CosNotifyFilter_FilterFactory':oe_create(), + ?match({_,key,_,_,_,_}, FiFac), + + Filter = 'CosNotifyFilter_FilterFactory':create_filter(FiFac,"EXTENDED_TCL"), + ?match({_,key,_,_,_,_}, Filter), + + AC=?match({_,key,_,_,_,_}, + 'CosNotifyChannelAdmin_EventChannel':for_consumers(Ch)), + filter_tests('CosNotifyChannelAdmin_ConsumerAdmin', AC, Filter, Ch), + + AS=?match({_,key,_,_,_,_}, + 'CosNotifyChannelAdmin_EventChannel':for_suppliers(Ch)), + filter_tests('CosNotifyChannelAdmin_SupplierAdmin', AS, Filter, Ch), + + PushS=?match({_,key,_,_,_,_}, + 'CosNotifyChannelAdmin_ConsumerAdmin':obtain_push_supplier(AC)), + filter_tests('CosNotifyChannelAdmin_ProxyPushSupplier', PushS, Filter, Ch), + + PullS=?match({_,key,_,_,_,_}, + 'CosNotifyChannelAdmin_ConsumerAdmin':obtain_pull_supplier(AC)), + filter_tests('CosNotifyChannelAdmin_ProxyPullSupplier', PullS, Filter, Ch), + + PushC=?match({_,key,_,_,_,_}, + 'CosNotifyChannelAdmin_SupplierAdmin':obtain_push_consumer(AS)), + filter_tests('CosNotifyChannelAdmin_ProxyPushConsumer', PushC, Filter, Ch), + + PullC=?match({_,key,_,_,_,_}, + 'CosNotifyChannelAdmin_SupplierAdmin':obtain_pull_consumer(AS)), + filter_tests('CosNotifyChannelAdmin_ProxyPullConsumer', PullC, Filter, Ch), + + catch corba:dispose(FiFac), + catch corba:dispose(Filter), + catch corba:dispose(PushS), + catch corba:dispose(PullS), + catch corba:dispose(PushC), + catch corba:dispose(PullC), + catch corba:dispose(AC), + catch corba:dispose(AS), + catch corba:dispose(Ch), + catch cosNotificationApp:stop_factory(Fac), + ok. + +filter_tests(Mod, Obj, Filter, Ch) -> + io:format("############ TESTING MODULE ~p FILTER ############~n", [Mod]), + %% No filter added. + ?match([], Mod:get_all_filters(Obj)), + ?match(ok, Mod:remove_all_filters(Obj)), + ?match({'EXCEPTION',{'CosNotifyFilter_FilterNotFound',_}}, + Mod:get_filter(Obj, 0)), + %% Try add a Filter which is not a filter. + ?match({'EXCEPTION',{'BAD_PARAM',_,_,_}}, Mod:add_filter(Obj, Ch)), + %% Try to remove a single filter. + ?match({'EXCEPTION',{'CosNotifyFilter_FilterNotFound',_}}, + Mod:remove_filter(Obj, 0)), + ID = Mod:add_filter(Obj, Filter), + ?match([ID], Mod:get_all_filters(Obj)), + ?match(Filter, Mod:get_filter(Obj, ID)), + ?match(ok, Mod:remove_filter(Obj, ID)), + ?match([], Mod:get_all_filters(Obj)), + ID2 = Mod:add_filter(Obj, Filter), + ?match([ID2], Mod:get_all_filters(Obj)), + ?match(ok, Mod:remove_all_filters(Obj)), + ?match([], Mod:get_all_filters(Obj)), + ok. + +%%----------------------------------------------------------------- +%% Creating different event pushing and pulling API tests +%%----------------------------------------------------------------- +events_api(doc) -> ["CosNotification event pushing and pulling tests", ""]; +events_api(suite) -> []; +events_api(_Config) -> + %% Initialize the application. + Fac = (catch cosNotificationApp:start_global_factory(?FAC_OPT)), + ?match({_,key,_,_,_,_}, Fac), + {Ch, Id1} = (catch 'CosNotifyChannelAdmin_EventChannelFactory':create_channel(Fac, ?defaultQoS, ?defaultAdm)), + ?match({_,key,_,_,_,_}, Ch), + events_api_helper(Fac, Ch, Id1). + +events2_api(doc) -> ["CosNotification event pushing and pulling tests II", ""]; +events2_api(suite) -> []; +events2_api(_Config) -> + %% Initialize the application. + Fac = (catch cosNotificationApp:start_global_factory(?FAC_OPT)), + ?match({_,key,_,_,_,_}, Fac), + {Ch, Id1} = (catch 'CosNotifyChannelAdmin_EventChannelFactory':create_channel(Fac, ?defaultQoS2, ?defaultAdm)), + ?match({_,key,_,_,_,_}, Ch), + events_api_helper(Fac, Ch, Id1). + +events_api_helper(Fac, Ch, _Id1) -> + %% Now we will set up a test environment, with the following structure: + %% + %% Channel + %% / \ + %% Supplier Adm Consumer Adm + %% / \ + %% 1 proxy of each possible type + %% To each proxy we will connect a test client + %% The events will flow in ===>> direction. + %% + %% For the supplier Admins this include: + %% - ProxyPushConsumer + %% - SequenceProxyPushConsumer + %% - StructuredProxyPushConsumer + %% - ProxyPullConsumer + %% - SequenceProxyPullConsumer + %% - StructuredProxyPullConsumer + %% + %% For the consumer Admins this include: + %% - ProxyPushSupplier + %% - SequenceProxyPushSupplier + %% - StructuredProxyPushSupplier + %% - ProxyPullSupplier + %% - SequenceProxyPullSupplier + %% - StructuredProxyPullSupplier + %% + %% + %% We will not use any Filters to begin with, just want to make sure we can + %% deliver events from all start- to end-points. + + %% Create the Admin objects + {AdminSupplier, _ASID}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_EventChannel':new_for_suppliers(Ch,'AND_OP')), + {AdminConsumer, _ACID}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_EventChannel':new_for_consumers(Ch,'AND_OP')), + + %% Create Suppliers Proxies + {ProxyPullSupplier,_ID1}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_ConsumerAdmin':obtain_notification_pull_supplier(AdminConsumer, 'ANY_EVENT')), + {StructuredProxyPullSupplier,_ID2}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_ConsumerAdmin':obtain_notification_pull_supplier(AdminConsumer, 'STRUCTURED_EVENT')), + {SequenceProxyPullSupplier,_ID3}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_ConsumerAdmin':obtain_notification_pull_supplier(AdminConsumer, 'SEQUENCE_EVENT')), + + {ProxyPushSupplier,_I4D}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_ConsumerAdmin':obtain_notification_push_supplier(AdminConsumer, 'ANY_EVENT')), + {StructuredProxyPushSupplier,_ID5}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_ConsumerAdmin':obtain_notification_push_supplier(AdminConsumer, 'STRUCTURED_EVENT')), + {SequenceProxyPushSupplier,_ID6}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_ConsumerAdmin':obtain_notification_push_supplier(AdminConsumer, 'SEQUENCE_EVENT')), + + %% Now we must create a Client for each proxy and connect them. + PushAnyC=?match({_,key,_,_,_,_}, 'notify_test_AnyPushC':oe_create(['PUSH_ANY', ProxyPushSupplier], + [{local_typecheck, false}])), + ?match(ok, 'CosNotifyChannelAdmin_ProxyPushSupplier':connect_any_push_consumer(ProxyPushSupplier, PushAnyC)), + + PushStrC=?match({_,key,_,_,_,_}, 'notify_test_StrPushC':oe_create(['PUSH_STRUCTURED',StructuredProxyPushSupplier], + [{local_typecheck, false}])), + ?match(ok, 'CosNotifyChannelAdmin_StructuredProxyPushSupplier':connect_structured_push_consumer(StructuredProxyPushSupplier, PushStrC)), + + PushSeqC=?match({_,key,_,_,_,_}, 'notify_test_SeqPushC':oe_create(['PUSH_SEQUENCE',SequenceProxyPushSupplier], + [{local_typecheck, false}])), + ?match(ok, 'CosNotifyChannelAdmin_SequenceProxyPushSupplier':connect_sequence_push_consumer(SequenceProxyPushSupplier, PushSeqC)), + + PullAnyC=?match({_,key,_,_,_,_}, 'notify_test_AnyPullC':oe_create(['PULL_ANY', ProxyPullSupplier], + [{local_typecheck, false}])), + ?match(ok, 'CosNotifyChannelAdmin_ProxyPullSupplier':connect_any_pull_consumer(ProxyPullSupplier, PullAnyC)), + + PullStrC=?match({_,key,_,_,_,_}, 'notify_test_StrPullC':oe_create(['PULL_STRUCTURED',StructuredProxyPullSupplier], + [{local_typecheck, false}])), + ?match(ok, 'CosNotifyChannelAdmin_StructuredProxyPullSupplier':connect_structured_pull_consumer(StructuredProxyPullSupplier, PullStrC)), + + PullSeqC=?match({_,key,_,_,_,_}, 'notify_test_SeqPullC':oe_create(['PULL_SEQUENCE',SequenceProxyPullSupplier], + [{local_typecheck, false}])), + ?match(ok, 'CosNotifyChannelAdmin_SequenceProxyPullSupplier':connect_sequence_pull_consumer(SequenceProxyPullSupplier, PullSeqC)), + + + %% Create Consumers Proxies + {ProxyPullConsumer,_ID7}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_SupplierAdmin':obtain_notification_pull_consumer(AdminSupplier, 'ANY_EVENT')), + {StructuredProxyPullConsumer,_ID8}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_SupplierAdmin':obtain_notification_pull_consumer(AdminSupplier, 'STRUCTURED_EVENT')), + {SequenceProxyPullConsumer,_ID9}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_SupplierAdmin':obtain_notification_pull_consumer(AdminSupplier, 'SEQUENCE_EVENT')), + + {ProxyPushConsumer,_ID10}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_SupplierAdmin':obtain_notification_push_consumer(AdminSupplier, 'ANY_EVENT')), + {StructuredProxyPushConsumer,_ID11}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_SupplierAdmin':obtain_notification_push_consumer(AdminSupplier, 'STRUCTURED_EVENT')), + {SequenceProxyPushConsumer,_ID12}=?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_SupplierAdmin':obtain_notification_push_consumer(AdminSupplier, 'SEQUENCE_EVENT')), + + %% Now we must create a Client for each proxy and connect them. + PushAnyS=?match({_,key,_,_,_,_}, 'notify_test_AnyPushS':oe_create(['PUSH_ANY', ProxyPushConsumer], + [{local_typecheck, false}])), + ?match(ok, 'CosNotifyChannelAdmin_ProxyPushConsumer':connect_any_push_supplier(ProxyPushConsumer, PushAnyS)), + + PushStrS=?match({_,key,_,_,_,_}, 'notify_test_StrPushS':oe_create(['PUSH_STRUCTURED',StructuredProxyPushConsumer], + [{local_typecheck, false}])), + ?match(ok, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':connect_structured_push_supplier(StructuredProxyPushConsumer, PushStrS)), + + PushSeqS=?match({_,key,_,_,_,_}, 'notify_test_SeqPushS':oe_create(['PUSH_SEQUENCE',SequenceProxyPushConsumer], + [{local_typecheck, false}])), + ?match(ok, 'CosNotifyChannelAdmin_SequenceProxyPushConsumer':connect_sequence_push_supplier(SequenceProxyPushConsumer, PushSeqS)), + + PullAnyS=?match({_,key,_,_,_,_}, 'notify_test_AnyPullS':oe_create(['PULL_ANY', ProxyPullConsumer], + [{local_typecheck, false}])), + ?match(ok, 'CosNotifyChannelAdmin_ProxyPullConsumer':connect_any_pull_supplier(ProxyPullConsumer, PullAnyS)), + + PullStrS=?match({_,key,_,_,_,_}, 'notify_test_StrPullS':oe_create(['PULL_STRUCTURED',StructuredProxyPullConsumer], + [{local_typecheck, false}])), + ?match(ok, 'CosNotifyChannelAdmin_StructuredProxyPullConsumer':connect_structured_pull_supplier(StructuredProxyPullConsumer, PullStrS)), + + PullSeqS=?match({_,key,_,_,_,_}, 'notify_test_SeqPullS':oe_create(['PULL_SEQUENCE',SequenceProxyPullConsumer], + [{local_typecheck, false}])), + ?match(ok, 'CosNotifyChannelAdmin_SequenceProxyPullConsumer':connect_sequence_pull_supplier(SequenceProxyPullConsumer, PullSeqS)), + + + %% Create a couple of Events to test with. + Event = ?not_CreateSE("DomainName","CommunicationsAlarm", + "lost_packet", + [#'CosNotification_Property'{name="priority", + value=any:create(orber_tc:short(), 1)}], + [], any:create(orber_tc:null(), null)), + + Event2 = ?not_CreateSE("DomainName","TemperatureAlarm", + "over_heated", + [#'CosNotification_Property'{name="priority", + value=any:create(orber_tc:short(), 10)}], + [], any:create(orber_tc:null(), null)), + + + AnyEvent = any:create(orber_tc:long(), 100), + + StrEvent = ?not_CreateSE("","%ANY","",[],[],AnyEvent), + NilAnyEvent = any:create(orber_tc:null(), null), + NilStrEvent = ?not_CreateSE("","","",[],[],NilAnyEvent), + + ConvertedStr = any:create('CosNotification_StructuredEvent':tc(), Event), + + io:format("###################### PUSH STRUCTURED ########################"), + + %% Test with pushing a structured event. + ?match(ok,'CosNotifyChannelAdmin_StructuredProxyPushConsumer':push_structured_event(StructuredProxyPushConsumer, Event)), + + %% Wait for a while so we are sure that all events have been delivered as far + %% as the Notification service can automatically. + timer:sleep(5000), + + %% Check if the Clients have received and stored the events. + ?match([{any,_,Event}], 'notify_test_AnyPushC':doAction(PushAnyC, return_data)), + ?match([Event], 'notify_test_StrPushC':doAction(PushStrC, return_data)), + ?match([Event], 'notify_test_SeqPushC':doAction(PushSeqC, return_data)), + + %% Instruct the Clients to pull the events and check if they match. + ?match({any,_,Event}, 'notify_test_AnyPullC':doAction(PullAnyC, pull_any)), + ?match(Event, 'notify_test_StrPullC':doAction(PullStrC, pull_str)), + ?match([Event], 'notify_test_SeqPullC':doAction(PullSeqC, {pull_seq,1})), + + io:format("###################### PUSH SEQUENCE ########################"), + + %% Create an Event Sequence and push it. + EventSeq = [Event, Event2], + + %% Test with pushing a event sequence. + ?match(ok,'CosNotifyChannelAdmin_SequenceProxyPushConsumer':push_structured_events(SequenceProxyPushConsumer, EventSeq)), + + %% Wait for a while so we are sure that all events have been delivered as far + %% as the Notification service can automatically. + timer:sleep(5000), + + %% Instruct the Clients to pull the events and check if they match. + ?match({any,_,Event}, 'notify_test_AnyPullC':doAction(PullAnyC, pull_any)), + ?match(Event, 'notify_test_StrPullC':doAction(PullStrC, pull_str)), + ?match([Event,Event2], 'notify_test_SeqPullC':doAction(PullSeqC, {pull_seq,2})), + ?match({any,_,Event2}, 'notify_test_AnyPullC':doAction(PullAnyC, pull_any)), + ?match(Event2, 'notify_test_StrPullC':doAction(PullStrC, pull_str)), + + %% Check if the Push Clients have received and stored the events. + ?match([{any,_,Event}, {any,_,Event2}], 'notify_test_AnyPushC':doAction(PushAnyC, return_data)), + ?match([Event, Event2], 'notify_test_StrPushC':doAction(PushStrC, return_data)), + ?match([Event, Event2], 'notify_test_SeqPushC':doAction(PushSeqC, return_data)), + + io:format("###################### PUSH ANY ########################"), + + %% Test with pushing an any event. + ?match(ok,'CosEventChannelAdmin_ProxyPushConsumer':push(ProxyPushConsumer, AnyEvent)), + + %% Wait for a while so we are sure that all events have been delivered as far + %% as the Notification service can automatically. + timer:sleep(5000), + + %% Check if the Clients have received and stored the events. + ?match([AnyEvent], 'notify_test_AnyPushC':doAction(PushAnyC, return_data)), + ?match([StrEvent], 'notify_test_StrPushC':doAction(PushStrC, return_data)), + ?match([StrEvent], 'notify_test_SeqPushC':doAction(PushSeqC, return_data)), + + %% Instruct the Clients to pull the events and check if they match. + ?match(AnyEvent, 'notify_test_AnyPullC':doAction(PullAnyC, pull_any)), + ?match(StrEvent, 'notify_test_StrPullC':doAction(PullStrC, pull_str)), + ?match([StrEvent], 'notify_test_SeqPullC':doAction(PullSeqC, {pull_seq,10})), + + + + io:format("###################### PUSH CONVERTED ANY #############"), + + %% Test with pushing a structured event. + ?match(ok,'CosNotifyChannelAdmin_StructuredProxyPushConsumer':push_structured_event(StructuredProxyPushConsumer, StrEvent)), + + %% Wait for a while so we are sure that all events have been delivered as far + %% as the Notification service can automatically. + timer:sleep(5000), + + %% Check if the Clients have received and stored the events. + ?match([AnyEvent], 'notify_test_AnyPushC':doAction(PushAnyC, return_data)), + ?match([StrEvent], 'notify_test_StrPushC':doAction(PushStrC, return_data)), + ?match([StrEvent], 'notify_test_SeqPushC':doAction(PushSeqC, return_data)), + + %% Instruct the Clients to pull the events and check if they match. + ?match(AnyEvent, 'notify_test_AnyPullC':doAction(PullAnyC, pull_any)), + ?match(StrEvent, 'notify_test_StrPullC':doAction(PullStrC, pull_str)), + ?match([StrEvent], 'notify_test_SeqPullC':doAction(PullSeqC, {pull_seq,1})), + + + io:format("###################### PUSH CONVERTED STRUCTURED ########"), + + %% Test with pushing an any event. + ?match(ok,'CosEventChannelAdmin_ProxyPushConsumer':push(ProxyPushConsumer, ConvertedStr)), + + %% Wait for a while so we are sure that all events have been delivered as far + %% as the Notification service can automatically. + timer:sleep(5000), + + %% Check if the Clients have received and stored the events. + ?match([ConvertedStr], 'notify_test_AnyPushC':doAction(PushAnyC, return_data)), + ?match([Event], 'notify_test_StrPushC':doAction(PushStrC, return_data)), + ?match([Event], 'notify_test_SeqPushC':doAction(PushSeqC, return_data)), + + %% Instruct the Clients to pull the events and check if they match. + ?match(ConvertedStr, 'notify_test_AnyPullC':doAction(PullAnyC, pull_any)), + ?match(Event, 'notify_test_StrPullC':doAction(PullStrC, pull_str)), + ?match([Event], 'notify_test_SeqPullC':doAction(PullSeqC, {pull_seq,10})), + + + io:format("###################### TRY PULL ########################"), + + %% Now we will push an any event after a delay. This means that try_pull-functions, + %% since it's not blocking, will return, [], NilAny or NilStructured events and + %% the Boolean false. + spawn(notify_test_impl, delay, [ProxyPushConsumer, AnyEvent, 20000, + 'CosEventChannelAdmin_ProxyPushConsumer',push]), + ?match([], 'notify_test_AnyPushC':doAction(PushAnyC, return_data)), + ?match([], 'notify_test_StrPushC':doAction(PushStrC, return_data)), + ?match([], 'notify_test_SeqPushC':doAction(PushSeqC, return_data)), + + %% Instruct the Clients to pull the events and check if they match. + ?match({NilAnyEvent,false}, 'notify_test_AnyPullC':doAction(PullAnyC, try_pull_any)), + ?match({NilStrEvent,false}, 'notify_test_StrPullC':doAction(PullStrC, try_pull_str)), + ?match({[],false}, 'notify_test_SeqPullC':doAction(PullSeqC, {try_pull_seq,10})), + + + %% Instruct the Clients to pull the events and check if they match. + %% Pull is blocking so in the print-out we should see that nothing + %% is returned until the pushed event reaches the end proxies. + ?match(AnyEvent, 'notify_test_AnyPullC':doAction(PullAnyC, pull_any)), + ?match(StrEvent, 'notify_test_StrPullC':doAction(PullStrC, pull_str)), + ?match([StrEvent], 'notify_test_SeqPullC':doAction(PullSeqC, {pull_seq,1})), + + %% To make sure there are no other circumstanses which lead to a delay we + %% hold for some time. + timer:sleep(5000), + %% Check if the Clients have received and stored the events. + ?match([AnyEvent], 'notify_test_AnyPushC':doAction(PushAnyC, return_data)), + ?match([StrEvent], 'notify_test_StrPushC':doAction(PushStrC, return_data)), + ?match([StrEvent], 'notify_test_SeqPushC':doAction(PushSeqC, return_data)), + + %% Test with pushing a event sequence but only pull sequences of length 1. + ?match(ok,'CosNotifyChannelAdmin_SequenceProxyPushConsumer':push_structured_events(SequenceProxyPushConsumer, EventSeq)), + + %% Wait for a while so we are sure that all events have been delivered as far + %% as the Notification service can automatically. + timer:sleep(5000), + %% Pull 1 event at a time. + ?match([Event], 'notify_test_SeqPullC':doAction(PullSeqC, {pull_seq,1})), + ?match([Event2], 'notify_test_SeqPullC':doAction(PullSeqC, {pull_seq,1})), + + %% Following cases already tested; done for clean up. + ?match({any,_,Event}, 'notify_test_AnyPullC':doAction(PullAnyC, pull_any)), + ?match(Event, 'notify_test_StrPullC':doAction(PullStrC, pull_str)), + ?match({any,_,Event2}, 'notify_test_AnyPullC':doAction(PullAnyC, pull_any)), + ?match(Event2, 'notify_test_StrPullC':doAction(PullStrC, pull_str)), + ?match([{any,_,Event}, {any,_,Event2}], 'notify_test_AnyPushC':doAction(PushAnyC, return_data)), + ?match([Event, Event2], 'notify_test_StrPushC':doAction(PushStrC, return_data)), + ?match([Event, Event2], 'notify_test_SeqPushC':doAction(PushSeqC, return_data)), + %% clean up done + + + io:format("###################### PROXY PULLER ########################"), + + %% Now we will just add Events to a cleint and wait for the Notification service + %% to pull the events and forward them to the consumer clients. + ?match(ok, 'notify_test_SeqPushC':doAction(PullAnyS, {set_data, [AnyEvent]})), + + + %% Instruct the Clients to pull the events and check if they match. + %% Pull is blocking so in the print-out we should see that nothing + %% is returned until the pushed event reaches the end proxies. + ?match(AnyEvent, 'notify_test_AnyPullC':doAction(PullAnyC, pull_any)), + ?match(StrEvent, 'notify_test_StrPullC':doAction(PullStrC, pull_str)), + ?match([StrEvent], 'notify_test_SeqPullC':doAction(PullSeqC, {pull_seq,10})), + + %% To make sure there are no other circumstanses which lead to a delay we + %% hold for some time. + timer:sleep(5000), + %% Check if the Clients have received and stored the events. + ?match([AnyEvent], 'notify_test_AnyPushC':doAction(PushAnyC, return_data)), + ?match([StrEvent], 'notify_test_StrPushC':doAction(PushStrC, return_data)), + ?match([StrEvent], 'notify_test_SeqPushC':doAction(PushSeqC, return_data)), + + io:format("###################### SUSPENDED CONNECTION ################"), + + + %% Suspend the connections + ?match(ok,'CosNotifyChannelAdmin_SequenceProxyPushSupplier':suspend_connection(SequenceProxyPushSupplier)), + ?match(ok,'CosNotifyChannelAdmin_StructuredProxyPushSupplier':suspend_connection(StructuredProxyPushSupplier)), + + %% Test with pushing a event sequence. + ?match(ok,'CosNotifyChannelAdmin_SequenceProxyPushConsumer':push_structured_events(SequenceProxyPushConsumer, EventSeq)), + + %% Wait for a while so we are sure that all events have been delivered as far + %% as the Notification service can automatically. + timer:sleep(5000), + + %% Instruct the Clients to pull the events and check if they match. + ?match({any,_,Event}, 'notify_test_AnyPullC':doAction(PullAnyC, pull_any)), + ?match(Event, 'notify_test_StrPullC':doAction(PullStrC, pull_str)), + ?match([Event,Event2], 'notify_test_SeqPullC':doAction(PullSeqC, {pull_seq,2})), + ?match({any,_,Event2}, 'notify_test_AnyPullC':doAction(PullAnyC, pull_any)), + ?match(Event2, 'notify_test_StrPullC':doAction(PullStrC, pull_str)), + + %% Check if the Any Client have received and stored the events. + ?match([{any,_,Event}, {any,_,Event2}], 'notify_test_AnyPushC':doAction(PushAnyC, return_data)), + + %% Check if the other Clients have received any events. Error if have. + ?match([], 'notify_test_StrPushC':doAction(PushStrC, return_data)), + ?match([], 'notify_test_SeqPushC':doAction(PushSeqC, return_data)), + + ?match(ok,'CosNotifyChannelAdmin_SequenceProxyPushSupplier':resume_connection(SequenceProxyPushSupplier)), + ?match(ok,'CosNotifyChannelAdmin_StructuredProxyPushSupplier':resume_connection(StructuredProxyPushSupplier)), + + %% To be sure the test case don't fail due to time-race, sleep. + timer:sleep(5000), + + ?match([Event, Event2], 'notify_test_StrPushC':doAction(PushStrC, return_data)), + ?match([Event, Event2], 'notify_test_SeqPushC':doAction(PushSeqC, return_data)), + + + io:format("###################### FILTER EVENTS #######################"), + + %% Now we will add filters and see if the system behaves correctly. + FiFac = 'CosNotifyFilter_FilterFactory':oe_create(), + Filter = 'CosNotifyFilter_FilterFactory':create_filter(FiFac,"EXTENDED_TCL"), + %% Add constraints to the Filter + ?line[{_,_,CID1},{_,_,CID2}]= + ?match([{'CosNotifyFilter_ConstraintInfo',_,_}, {'CosNotifyFilter_ConstraintInfo',_,_}], + 'CosNotifyFilter_Filter':add_constraints(Filter, + [#'CosNotifyFilter_ConstraintExp'{event_types = + [#'CosNotification_EventType'{ + domain_name = "Spare*", + type_name = "MOVIE"}], + constraint_expr = "$type_name == 'MOVIE' and (('groucho' in $starlist) + ('chico' in $starlist) + ('harpo' in $starlist) + ('zeppo' in $starlist) + ('gummo' in $starlist)) > 2"}, + #'CosNotifyFilter_ConstraintExp'{event_types = + [#'CosNotification_EventType'{ + domain_name = "*", + type_name = "TestResults"}], + constraint_expr = "$test._length == 3 and ($test[0].score + $test[1].score + $test[2].score)/3 >=80"}])), + + ?match([{'CosNotifyFilter_ConstraintInfo',_,CID2}, {'CosNotifyFilter_ConstraintInfo',_,CID1}], + 'CosNotifyFilter_Filter':get_all_constraints(Filter)), + ?match([{'CosNotifyFilter_ConstraintInfo',_,CID1}], + 'CosNotifyFilter_Filter':get_constraints(Filter, [CID1])), + + %% Associate the Filter with different objects. + %% Since we use the same filter for both objects the events will never reach the admin. + _FilterID = 'CosNotifyChannelAdmin_ConsumerAdmin':add_filter(AdminConsumer, Filter), + + _FilterID2 = 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':add_filter(StructuredProxyPushConsumer, Filter), + event_filtering(FiFac, Filter, AdminConsumer, StructuredProxyPushConsumer, PushAnyC, + PushStrC, PushSeqC, PullAnyC, PullStrC, PullSeqC), + %% Remove the proxy filter so we can check if the events are filtered correctly by the admin. + ?match(ok, 'CosNotifyChannelAdmin_StructuredProxyPushConsumer':remove_all_filters(StructuredProxyPushConsumer)), + event_filtering(FiFac, Filter, AdminConsumer, StructuredProxyPushConsumer, PushAnyC, + PushStrC, PushSeqC, PullAnyC, PullStrC, PullSeqC), + + + catch corba:dispose(Filter), + catch corba:dispose(FiFac), + catch corba:dispose(SequenceProxyPushConsumer), + catch corba:dispose(StructuredProxyPushConsumer), + catch corba:dispose(ProxyPushConsumer), + catch corba:dispose(SequenceProxyPullConsumer), + catch corba:dispose(StructuredProxyPullConsumer), + catch corba:dispose(ProxyPullConsumer), + catch corba:dispose(SequenceProxyPushSupplier), + catch corba:dispose(StructuredProxyPushSupplier), + catch corba:dispose(ProxyPushSupplier), + catch corba:dispose(SequenceProxyPullSupplier), + catch corba:dispose(StructuredProxyPullSupplier), + catch corba:dispose(ProxyPullSupplier), + catch corba:dispose(AdminConsumer), + catch corba:dispose(AdminSupplier), + catch corba:dispose(Ch), + catch cosNotificationApp:stop_factory(Fac), + %% The Clients should have terminated by now. Check if it is so. + timer:sleep(5000), + ?match(true, corba_object:non_existent(PullSeqS)), + ?match(true, corba_object:non_existent(PullStrS)), + ?match(true, corba_object:non_existent(PullAnyS)), + ?match(true, corba_object:non_existent(PushSeqS)), + ?match(true, corba_object:non_existent(PushStrS)), + ?match(true, corba_object:non_existent(PushAnyS)), + ?match(true, corba_object:non_existent(PullSeqC)), + ?match(true, corba_object:non_existent(PullStrC)), + ?match(true, corba_object:non_existent(PullAnyC)), + ?match(true, corba_object:non_existent(PushSeqC)), + ?match(true, corba_object:non_existent(PushStrC)), + ?match(true, corba_object:non_existent(PushAnyC)), + ok. + +event_filtering(_FiFac, _Filter, _AdminConsumer, StructuredProxyPushConsumer, PushAnyC, PushStrC, PushSeqC, PullAnyC, PullStrC, PullSeqC) -> + NilAnyEvent = any:create(orber_tc:null(), null), + NilStrEvent = ?not_CreateSE("","","",[],[],NilAnyEvent), + + TrueEvent1 = ?not_CreateSE("SpareTime","MOVIE", + "EventName", + [#'CosNotification_Property'{name="starlist", + value=any:create(orber_tc:sequence(orber_tc:string(0),0), + ["groucho", "harpo", "sam", "gummo"])}], + [], any:create(orber_tc:null(), null)), + TrueEvent2 = ?not_CreateSE("Studies","TestResults", + "EventName", [], + [#'CosNotification_Property'{name="test", + value=any:create(orber_tc:array(notify_test_data:tc(),3), + {#notify_test_data{score=75, + name="name"}, + #notify_test_data{score=80, + name="name"}, + #notify_test_data{score=85, + name="name"}})}], + any:create(orber_tc:null(), null)), + + FalseEvent1 = ?not_CreateSE("SpareTime","MOVIE", + "EventName", + [#'CosNotification_Property'{name="starlist", + value=any:create(orber_tc:sequence(orber_tc:string(0),0), + ["frodo", "bilbo", "sam", "gummo"])}], + [], any:create(orber_tc:null(), null)), + FalseEvent2 = ?not_CreateSE("Studies","TestResults", + "EventName", [], + [#'CosNotification_Property'{name="test", + value=any:create(orber_tc:array(notify_test_data:tc(),3), + {#notify_test_data{score=75, + name="name"}, + #notify_test_data{score=80, + name="name"}, + #notify_test_data{score=80, + name="name"}})}], + any:create(orber_tc:null(), null)), + %% Test with pushing the first structured event that should not be filtered away. + ?match(ok,'CosNotifyChannelAdmin_StructuredProxyPushConsumer':push_structured_event(StructuredProxyPushConsumer, TrueEvent1)), + + %% Wait for a while so we are sure that all events have been delivered as far + %% as the Notification service can automatically. + timer:sleep(5000), + + %% Check if the Clients have received and stored the events. + ?match([{any,_,TrueEvent1}], 'notify_test_AnyPushC':doAction(PushAnyC, return_data)), + ?match([TrueEvent1], 'notify_test_StrPushC':doAction(PushStrC, return_data)), + ?match([TrueEvent1], 'notify_test_SeqPushC':doAction(PushSeqC, return_data)), + + %% Instruct the Clients to pull the events and check if they match. + ?match({any,_,TrueEvent1}, 'notify_test_AnyPullC':doAction(PullAnyC, pull_any)), + ?match(TrueEvent1, 'notify_test_StrPullC':doAction(PullStrC, pull_str)), + ?match([TrueEvent1], 'notify_test_SeqPullC':doAction(PullSeqC, {pull_seq,1})), + + %% Test with pushing the second structured event that should not be filtered away. + ?match(ok,'CosNotifyChannelAdmin_StructuredProxyPushConsumer':push_structured_event(StructuredProxyPushConsumer, TrueEvent2)), + + %% Wait for a while so we are sure that all events have been delivered as far + %% as the Notification service can automatically. + timer:sleep(5000), + + %% Check if the Clients have received and stored the events. + ?match([{any,_,TrueEvent2}], 'notify_test_AnyPushC':doAction(PushAnyC, return_data)), + ?match([TrueEvent2], 'notify_test_StrPushC':doAction(PushStrC, return_data)), + ?match([TrueEvent2], 'notify_test_SeqPushC':doAction(PushSeqC, return_data)), + + %% Instruct the Clients to pull the events and check if they match. + ?match({any,_,TrueEvent2}, 'notify_test_AnyPullC':doAction(PullAnyC, pull_any)), + ?match(TrueEvent2, 'notify_test_StrPullC':doAction(PullStrC, pull_str)), + ?match([TrueEvent2], 'notify_test_SeqPullC':doAction(PullSeqC, {pull_seq,1})), + + %% Test with pushing the first structured event that should be filtered away. + ?match(ok,'CosNotifyChannelAdmin_StructuredProxyPushConsumer':push_structured_event(StructuredProxyPushConsumer, FalseEvent1)), + + %% Wait for a while so we are sure that all events have been delivered as far + %% as the Notification service can automatically. + timer:sleep(5000), + + %% Check if the Clients have received and stored the events. + ?match([], 'notify_test_AnyPushC':doAction(PushAnyC, return_data)), + ?match([], 'notify_test_StrPushC':doAction(PushStrC, return_data)), + ?match([], 'notify_test_SeqPushC':doAction(PushSeqC, return_data)), + + %% Instruct the Clients to pull the events and check if they match. + ?match({NilAnyEvent,false}, 'notify_test_AnyPullC':doAction(PullAnyC, try_pull_any)), + ?match({NilStrEvent,false}, 'notify_test_StrPullC':doAction(PullStrC, try_pull_str)), + ?match({[],false}, 'notify_test_SeqPullC':doAction(PullSeqC, {try_pull_seq,10})), + + %% Test with pushing the second structured event that should be filtered away. + ?match(ok,'CosNotifyChannelAdmin_StructuredProxyPushConsumer':push_structured_event(StructuredProxyPushConsumer, FalseEvent2)), + + %% Wait for a while so we are sure that all events have been delivered as far + %% as the Notification service can automatically. + timer:sleep(5000), + + %% Check if the Clients have received and stored the events. + ?match([], 'notify_test_AnyPushC':doAction(PushAnyC, return_data)), + ?match([], 'notify_test_StrPushC':doAction(PushStrC, return_data)), + ?match([], 'notify_test_SeqPushC':doAction(PushSeqC, return_data)), + + %% Instruct the Clients to pull the events and check if they match. + ?match({NilAnyEvent,false}, 'notify_test_AnyPullC':doAction(PullAnyC, try_pull_any)), + ?match({NilStrEvent,false}, 'notify_test_StrPullC':doAction(PullStrC, try_pull_str)), + ?match({[],false}, 'notify_test_SeqPullC':doAction(PullSeqC, {try_pull_seq,10})). + + + +%%----------------------------------------------------------------- +%% Creating different cosEvent API tests +%%----------------------------------------------------------------- +cosevent_api(doc) -> ["CosNotification Objects tested with CosEvent API", ""]; +cosevent_api(suite) -> []; +cosevent_api(_Config) -> + Fac = (catch cosNotificationApp:start_global_factory(?FAC_OPT)), + ?match({_,key,_,_,_,_}, Fac), + {Ch, _Id1} = (catch 'CosNotifyChannelAdmin_EventChannelFactory':create_channel(Fac, ?defaultQoS, ?defaultAdm)), + ?match({_,key,_,_,_,_}, Ch), + AC=?match({_,key,_,_,_,_}, + 'CosEventChannelAdmin_EventChannel':for_consumers(Ch)), + AS=?match({_,key,_,_,_,_}, + 'CosEventChannelAdmin_EventChannel':for_suppliers(Ch)), + + PushS=?match({_,key,_,_,_,_}, + 'CosEventChannelAdmin_ConsumerAdmin':obtain_push_supplier(AC)), + PullS=?match({_,key,_,_,_,_}, + 'CosEventChannelAdmin_ConsumerAdmin':obtain_pull_supplier(AC)), + + PushC=?match({_,key,_,_,_,_}, + 'CosEventChannelAdmin_SupplierAdmin':obtain_push_consumer(AS)), + PullC=?match({_,key,_,_,_,_}, + 'CosEventChannelAdmin_SupplierAdmin':obtain_pull_consumer(AS)), + + PushAnyC=?match({_,key,_,_,_,_}, + 'notify_test_AnyPushC':oe_create(['PUSH_ANY', PushC], + [{local_typecheck, false}])), + PushStrC=?match({_,key,_,_,_,_}, + 'notify_test_StrPushC':oe_create(['PUSH_STRUCTURED',false], + [{local_typecheck, false}])), + PushSeqC=?match({_,key,_,_,_,_}, + 'notify_test_SeqPushC':oe_create(['PUSH_SEQUENCE',false], + [{local_typecheck, false}])), + + PullAnyC=?match({_,key,_,_,_,_}, + 'notify_test_AnyPullC':oe_create(['PULL_ANY', PullC], + [{local_typecheck, false}])), + PullStrC=?match({_,key,_,_,_,_}, + 'notify_test_StrPullC':oe_create(['PULL_STRUCTURED',false], + [{local_typecheck, false}])), + PullSeqC=?match({_,key,_,_,_,_}, + 'notify_test_SeqPullC':oe_create(['PULL_SEQUENCE',false], + [{local_typecheck, false}])), + + PushAnyS=?match({_,key,_,_,_,_}, + 'notify_test_AnyPushS':oe_create(['PUSH_ANY', PushC], + [{local_typecheck, false}])), + PushStrS=?match({_,key,_,_,_,_}, + 'notify_test_StrPushS':oe_create(['PUSH_STRUCTURED',false], + [{local_typecheck, false}])), + PushSeqS=?match({_,key,_,_,_,_}, + 'notify_test_SeqPushS':oe_create(['PUSH_SEQUENCE',false], + [{local_typecheck, false}])), + + PullAnyS=?match({_,key,_,_,_,_}, + 'notify_test_AnyPullS':oe_create(['PULL_ANY', PullS], + [{local_typecheck, false}])), + PullStrS=?match({_,key,_,_,_,_}, + 'notify_test_StrPullS':oe_create(['PULL_STRUCTURED',false], + [{local_typecheck, false}])), + PullSeqS=?match({_,key,_,_,_,_}, + 'notify_test_SeqPullS':oe_create(['PULL_SEQUENCE',false], + [{local_typecheck, false}])), + + %% In the OMG specification Proxies do not inherrit from CosEvent. Must use + %% Notify interface. + ?match({'EXCEPTION',{'BAD_PARAM',_,_,_}}, + 'CosEventChannelAdmin_ProxyPullConsumer':connect_pull_supplier(PullC, PushStrS)), + + ?match(ok, + 'CosEventChannelAdmin_ProxyPushSupplier':connect_push_consumer(PushS, PushAnyC)), + ?match(ok, + 'CosEventChannelAdmin_ProxyPullSupplier':connect_pull_consumer(PullS, PullAnyC)), + + ?match(ok, + 'CosEventChannelAdmin_ProxyPushConsumer':connect_push_supplier(PushC, PushAnyS)), + ?match(ok, + 'CosEventChannelAdmin_ProxyPullConsumer':connect_pull_supplier(PullC, PullAnyS)), + + ?match({'EXCEPTION',{'CosEventChannelAdmin_AlreadyConnected',_}}, + 'CosEventChannelAdmin_ProxyPullConsumer':connect_pull_supplier(PullC, PullAnyS)), + + ?match({'EXCEPTION',{'CosEventChannelAdmin_AlreadyConnected',_}}, + 'CosNotifyChannelAdmin_ProxyPullConsumer':connect_pull_supplier(PullC, PullAnyS)), + + ?match(true, corba_object:is_a(PushS, "IDL:omg.org/CosNotifyChannelAdmin/ProxyPushSupplier:1.0")), + ?match(true, corba_object:is_a(PushS, "IDL:omg.org/CosEventChannelAdmin/ProxyPushSupplier:1.0")), + + catch corba:dispose(PushStrC), + catch corba:dispose(PushSeqC), + catch corba:dispose(PullStrC), + catch corba:dispose(PullSeqC), + catch corba:dispose(PushStrS), + catch corba:dispose(PushSeqS), + catch corba:dispose(PullStrS), + catch corba:dispose(PullSeqS), + catch corba:dispose(PushS), + catch corba:dispose(PullS), + catch corba:dispose(PushC), + catch corba:dispose(PullC), + catch corba:dispose(AC), + catch corba:dispose(AS), + catch corba:dispose(Ch), + catch cosNotificationApp:stop_factory(Fac), + + %% The Clients should have terminated by now. Check if it is so. + timer:sleep(5000), + ?match(true, corba_object:non_existent(PullAnyS)), + ?match(true, corba_object:non_existent(PushAnyS)), + ?match(true, corba_object:non_existent(PullAnyC)), + ?match(true, corba_object:non_existent(PushAnyC)), + + + ok. + +%%----------------------------------------------------------------- +%% AdminPropertiesAdmin API tests +%%----------------------------------------------------------------- +adm_api(doc) -> ["CosNotification AdminPropertiesAdmin tests", ""]; +adm_api(suite) -> []; +adm_api(_Config) -> + Fac = (catch cosNotificationApp:start_global_factory(?FAC_OPT)), + ?match({_,key,_,_,_,_}, Fac), + + %% We need a few AdminProp:s to "play" with. + MQ0 = [#'CosNotification_Property'{name='CosNotification':'MaxQueueLength'(), + value=any:create(orber_tc:long(), 0)}], + MC0 = [#'CosNotification_Property'{name='CosNotification':'MaxConsumers'(), + value=any:create(orber_tc:long(), 0)}], + MS0 = [#'CosNotification_Property'{name='CosNotification':'MaxSuppliers'(), + value=any:create(orber_tc:long(), 0)}], + MQError1 = [#'CosNotification_Property'{name='CosNotification':'MaxQueueLength'(), + value=any:create(orber_tc:'float'(), 1.5)}], + MQError2 = [#'CosNotification_Property'{name='CosNotification':'MaxQueueLength'(), + value=any:create(orber_tc:long(), -1)}], + + {Ch, _Id1} = (catch 'CosNotifyChannelAdmin_EventChannelFactory':create_channel(Fac, ?defaultQoS, ?defaultAdm)), + ?match({_,key,_,_,_,_}, Ch), + + %% Set new admin + ?match(ok, 'CosNotification_AdminPropertiesAdmin':set_admin(Ch, MQ0)), + %% It should be a list of three items. If we support more admin:s this + %% must be updated. + ?match([_,_,_], 'CosNotification_AdminPropertiesAdmin':get_admin(Ch)), + + %% Try to set admin with an uncorrect value, i.e., not integer >= 0. + ?match({'EXCEPTION',{'CosNotification_UnsupportedAdmin',_,_}}, + 'CosNotification_AdminPropertiesAdmin':set_admin(Ch, MQError1)), + ?match({'EXCEPTION',{'CosNotification_UnsupportedAdmin',_,_}}, + 'CosNotification_AdminPropertiesAdmin':set_admin(Ch, MQError2)), + + %% Try setting the other two admins and chech if the value is correct. + ?match(ok, 'CosNotification_AdminPropertiesAdmin':set_admin(Ch, MC0)), + ?match([_,_,_], 'CosNotification_AdminPropertiesAdmin':get_admin(Ch)), + + ?match(ok, 'CosNotification_AdminPropertiesAdmin':set_admin(Ch, MS0)), + ?match([_,_,_], 'CosNotification_AdminPropertiesAdmin':get_admin(Ch)), + + catch corba:dispose(Ch), + catch cosNotificationApp:stop_factory(Fac), + ok. + + +%%----------------------------------------------------------------- +%% QoSAdm API tests +%%----------------------------------------------------------------- +qos_api(doc) -> ["CosNotification QoSAdmin tests", ""]; +qos_api(suite) -> []; +qos_api(_Config) -> + Fac = (catch cosNotificationApp:start_global_factory(?FAC_OPT)), + ?match({_,key,_,_,_,_}, Fac), + + {Ch, _Id1} = (catch 'CosNotifyChannelAdmin_EventChannelFactory':create_channel(Fac, ?defaultQoS, ?defaultAdm)), + ?match({_,key,_,_,_,_}, Ch), + + + QoSPersistent = [#'CosNotification_Property'{name='CosNotification':'ConnectionReliability'(), + value=any:create(orber_tc:short(), + 'CosNotification':'Persistent'())}], + QoSBestEffort = [#'CosNotification_Property'{name='CosNotification':'ConnectionReliability'(), + value=any:create(orber_tc:short(), + 'CosNotification':'BestEffort'())}], + + QoSEventPersistent = [#'CosNotification_Property'{name='CosNotification':'EventReliability'(), + value=any:create(orber_tc:short(), + 'CosNotification':'Persistent'())}], + QoSEventBestEffort = [#'CosNotification_Property'{name='CosNotification':'EventReliability'(), + value=any:create(orber_tc:short(), + 'CosNotification':'BestEffort'())}], + + QoSOKMaxBatchSize = [#'CosNotification_Property'{name='CosNotification':'MaximumBatchSize'(), + value=any:create(orber_tc:long(), 200)}], + QoSToHighMaxBatchSize = [#'CosNotification_Property'{name='CosNotification':'MaximumBatchSize'(), + value=any:create(orber_tc:long(), 100000000)}], + + QoSToLowMaxBatchSize = [#'CosNotification_Property'{name='CosNotification':'MaximumBatchSize'(), + value=any:create(orber_tc:long(), -1)}], + + QoSOKStopTimeSupp = [#'CosNotification_Property'{name='CosNotification':'StopTimeSupported'(), + value=any:create(orber_tc:boolean(), true)}], + QoSWrongStopTimeSupp = [#'CosNotification_Property'{name="StopTimeSupp", + value=any:create(orber_tc:boolean(), true)}], + + QoSOKStartTimeSupp = [#'CosNotification_Property'{name='CosNotification':'StartTimeSupported'(), + value=any:create(orber_tc:boolean(), true)}], + QoSWrongStartTimeSupp = [#'CosNotification_Property'{name="StartTimeSupp", + value=any:create(orber_tc:boolean(), true)}], + QoSOKTimout = [#'CosNotification_Property'{name='CosNotification':'Timeout'(), + value=any:create(orber_tc:unsigned_long_long(), 100)}], + + + %% The most complex QoS to set is ConnectionReliability, and the reason for this + %% is that we cannot set the Channel to offer best effort while its children + %% offer persistent. A child may only offer Persistent if its parent do, which + %% is why we must check the following: + %% + %% # Persistent Change to Best Effort + %% _____ + %% | | (1) -> Check if children BE + %% |Chann| (2) ok <- + %% ----- + %% | + %% _____ + %% | | (3) -> Check if children BE + %% |Admin| (4) Check if parent Pers. <- + %% ----- + %% | + %% _____ + %% | | (5) -> ok + %% |Proxy| (6) Check if parent Pers. <- + %% ----- + %% NOTE: a parent always exists but we may change the QoS before creating any + %% childrens. The cases (2) and (5) is always ok, i.e., no need to confirm + %% with parent or children. + + %% We only have a channel. At the moment we can set ConnectionReliability + %% without asking anyone. + Q1='CosNotification_QoSAdmin':get_qos(Ch), + ?match({ok, _}, 'CosNotification_QoSAdmin':validate_qos(Ch, QoSBestEffort)), + + ?match(ok, 'CosNotification_QoSAdmin':set_qos(Ch, QoSPersistent)), + %% Match if no problems occur if we try to set QoS as is. + ?match(ok, 'CosNotification_QoSAdmin':set_qos(Ch, QoSPersistent)), + + %% Check validate. + ?match(ok, 'CosNotification_QoSAdmin':set_qos(Ch, QoSEventPersistent)), + ?match({ok, _}, 'CosNotification_QoSAdmin':validate_qos(Ch, QoSOKTimout)), + ?match({ok, _}, 'CosNotification_QoSAdmin':validate_qos(Ch, QoSEventBestEffort)), + ?match(ok, 'CosNotification_QoSAdmin':set_qos(Ch, QoSEventBestEffort)), + ?match({ok, _}, 'CosNotification_QoSAdmin':validate_qos(Ch, QoSOKTimout)), + + Q2='CosNotification_QoSAdmin':get_qos(Ch), + ?match(ok, 'CosNotification_QoSAdmin':set_qos(Ch, QoSBestEffort)), + ?match(Q1, 'CosNotification_QoSAdmin':get_qos(Ch)), + + %% Now we add an Admin object. An Admin object cannot switch ConnectionReliability + %% to BestEffort without checking with its children or Persistent without + %% confirming this with its Parent. At the moment, however, we only have a parent. + {CAdm, Id2} = 'CosNotifyChannelAdmin_EventChannel':new_for_consumers(Ch, 'AND_OP'), + ?match(Q1,'CosNotification_QoSAdmin':get_qos(CAdm)), + ?match({'EXCEPTION',{'CosNotification_UnsupportedQoS',_,_}}, + 'CosNotification_QoSAdmin':set_qos(CAdm, QoSPersistent)), + ?match(Q1, 'CosNotification_QoSAdmin':get_qos(CAdm)), + ?match(ok, 'CosNotification_QoSAdmin':set_qos(CAdm, QoSBestEffort)), + ?match(Q1, 'CosNotification_QoSAdmin':get_qos(CAdm)), + + %% Check if we can extract the Admin from the channel correctly. + ?match([0,Id2],'CosNotifyChannelAdmin_EventChannel':get_all_consumeradmins(Ch)), + ?match(CAdm,'CosNotifyChannelAdmin_EventChannel':get_consumeradmin(Ch, Id2)), + ?match(Ch, 'CosNotifyChannelAdmin_ConsumerAdmin':'_get_MyChannel'(CAdm)), + ?match(Id2, 'CosNotifyChannelAdmin_ConsumerAdmin':'_get_MyID'(CAdm)), + + %% Change the channel to provide Persistent service. Now we can set the + %% Admin service to Persistent to. (4) + ?match(ok, 'CosNotification_QoSAdmin':set_qos(Ch, QoSPersistent)), + ?match(ok, 'CosNotification_QoSAdmin':set_qos(CAdm, QoSPersistent)), + ?match(Q2, 'CosNotification_QoSAdmin':get_qos(CAdm)), + + %% Since the Admin object now provide Persistent the Channel cannot switch + %% to BestEffort. (1) + ?match({'EXCEPTION',{'CosNotification_UnsupportedQoS',_,_}}, + 'CosNotification_QoSAdmin':set_qos(Ch, QoSBestEffort)), + %% Should still match Persistent. + ?match(Q2, 'CosNotification_QoSAdmin':get_qos(Ch)), + {PSup, _Id3} = 'CosNotifyChannelAdmin_ConsumerAdmin':obtain_notification_push_supplier(CAdm, 'ANY_EVENT'), + ?match(Q2, 'CosNotification_QoSAdmin':get_qos(CAdm)), + ?match('PUSH_ANY', 'CosNotifyChannelAdmin_ProxyPushConsumer':'_get_MyType'(PSup)), + ?match(CAdm, 'CosNotifyChannelAdmin_ProxyPushConsumer':'_get_MyAdmin'(PSup)), + ?match(Q2, 'CosNotification_QoSAdmin':get_qos(PSup)), + + %% At this point they all offer persistent connection, which means we have + %% to start with the proxy if we want to change to Best Effort. Hence, + %% the following two cases will fail. + ?match({'EXCEPTION',{'CosNotification_UnsupportedQoS',_,_}}, + 'CosNotification_QoSAdmin':set_qos(Ch, QoSBestEffort)), + ?match({'EXCEPTION',{'CosNotification_UnsupportedQoS',_,_}}, + 'CosNotification_QoSAdmin':set_qos(CAdm, QoSBestEffort)), + ?match(ok, 'CosNotification_QoSAdmin':set_qos(PSup, QoSBestEffort)), + %% Still not possible to change channel to Best Effort. + ?match({'EXCEPTION',{'CosNotification_UnsupportedQoS',_,_}}, + 'CosNotification_QoSAdmin':set_qos(Ch, QoSBestEffort)), + ?match(ok, 'CosNotification_QoSAdmin':set_qos(CAdm, QoSBestEffort)), + %% Now we change the channel to Best Effort. + ?match(ok, 'CosNotification_QoSAdmin':set_qos(Ch, QoSBestEffort)), + + %% Test if really are Best Effort + ?match(Q1, 'CosNotification_QoSAdmin':get_qos(Ch)), + ?match(Q1, 'CosNotification_QoSAdmin':get_qos(CAdm)), + ?match(Q1, 'CosNotification_QoSAdmin':get_qos(PSup)), + + %% Testing MaximumBatchSize (The highest value is defined in + %% CosNotification_Common.erl + ?match(ok, 'CosNotification_QoSAdmin':set_qos(Ch, QoSOKMaxBatchSize)), + ?match({'EXCEPTION',{'CosNotification_UnsupportedQoS',_,_}}, + 'CosNotification_QoSAdmin':set_qos(Ch, QoSToHighMaxBatchSize)), + ?match({'EXCEPTION',{'CosNotification_UnsupportedQoS',_,_}}, + 'CosNotification_QoSAdmin':set_qos(Ch, QoSToLowMaxBatchSize)), + + ?match(ok, 'CosNotification_QoSAdmin':set_qos(Ch, QoSOKStartTimeSupp)), + ?match(ok, 'CosNotification_QoSAdmin':set_qos(Ch, QoSOKStopTimeSupp)), + ?match({'EXCEPTION',{'CosNotification_UnsupportedQoS',_,_}}, + 'CosNotification_QoSAdmin':set_qos(Ch, QoSWrongStartTimeSupp)), + ?match({'EXCEPTION',{'CosNotification_UnsupportedQoS',_,_}}, + 'CosNotification_QoSAdmin':set_qos(Ch, QoSWrongStopTimeSupp)), + + catch corba:dispose(CAdm), + catch corba:dispose(PSup), + catch corba:dispose(Ch), + cosNotificationApp:stop_factory(Fac), + ok. + +%%----------------------------------------------------------------- +%% QoSAdm API tests +%%----------------------------------------------------------------- +event_qos_api(doc) -> ["CosNotification QoSAdmin tests", ""]; +event_qos_api(suite) -> []; +event_qos_api(_Config) -> + Fac = (catch cosNotificationApp:start_global_factory(?FAC_OPT)), + ?match({_,key,_,_,_,_}, Fac), + + %% Create some objects to test with. We start with default settings. + {Ch, _Id1} = (catch 'CosNotifyChannelAdmin_EventChannelFactory':create_channel(Fac, ?defaultQoS, ?defaultAdm)), + {CAdm, _Id2} = 'CosNotifyChannelAdmin_EventChannel':new_for_consumers(Ch, 'AND_OP'), + {PSup, _Id3} = 'CosNotifyChannelAdmin_ConsumerAdmin':obtain_notification_push_supplier(CAdm, 'ANY_EVENT'), + + %% Try setting an unsupported QoS. + ?match({'EXCEPTION',{'CosNotification_UnsupportedQoS',_,_}}, + 'CosNotifyChannelAdmin_ProxyConsumer': + validate_event_qos(PSup, + [#'CosNotification_Property'{name="Unsupported QoS", + value=any:create(orber_tc:short(), 1)}])), + %% Try setting min and max priority. + ?match({ok, _}, 'CosNotifyChannelAdmin_ProxyConsumer': + validate_event_qos(PSup, + [#'CosNotification_Property'{name=?not_Priority, + value=any:create(orber_tc:short(), + ?not_LowestPriority)}, + #'CosNotification_Property'{name=?not_Priority, + value=any:create(orber_tc:short(), + ?not_HighestPriority)}])), + %% Try setting priority values which are 1 to high and 1 to low respectively. + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + 'CosNotifyChannelAdmin_ProxyConsumer': + validate_event_qos(PSup, + [#'CosNotification_Property'{name=?not_Priority, + value=any:create(orber_tc:short(), + ?not_LowestPriority-1)}, + #'CosNotification_Property'{name=?not_Priority, + value=any:create(orber_tc:short(), + ?not_HighestPriority+1)}])), + %% Try setting start- and stop-time (false default). Note the value associated + %% with this property is not really a short but that is not what we are testing + %% here so... + ?match({'EXCEPTION',{'CosNotification_UnsupportedQoS',_,_}}, + 'CosNotifyChannelAdmin_ProxyConsumer': + validate_event_qos(PSup, + [#'CosNotification_Property'{name=?not_StartTime, + value=any:create(orber_tc:short(), 0)}])), + ?match({'EXCEPTION',{'CosNotification_UnsupportedQoS',_,_}}, + 'CosNotifyChannelAdmin_ProxyConsumer': + validate_event_qos(PSup, + [#'CosNotification_Property'{name=?not_StopTime, + value=any:create(orber_tc:short(), 0)}])), + %% Allow StopTime + ?match(ok, 'CosNotification_QoSAdmin':set_qos(PSup, [#'CosNotification_Property'{name='CosNotification':'StopTimeSupported'(), + value=any:create(orber_tc:boolean(), true)}])), + ?match({ok,_}, + 'CosNotifyChannelAdmin_ProxyConsumer': + validate_event_qos(PSup, + [#'CosNotification_Property'{name=?not_StopTime, + value=any:create(orber_tc:short(), 0)}])), + %% Allow StartTime + ?match(ok, 'CosNotification_QoSAdmin':set_qos(PSup, [#'CosNotification_Property'{name='CosNotification':'StartTimeSupported'(), + value=any:create(orber_tc:boolean(), true)}])), + ?match({ok,_}, + 'CosNotifyChannelAdmin_ProxyConsumer': + validate_event_qos(PSup, + [#'CosNotification_Property'{name=?not_StopTime, + value=any:create(orber_tc:short(), 0)}, + #'CosNotification_Property'{name=?not_StartTime, + value=any:create(orber_tc:short(), 0)}])), + + %% We must reset StopTime since we cannot guarantee that an event will be delivered + %% if risk beeing discarded due to a delay. + ?match(ok, 'CosNotification_QoSAdmin':set_qos(PSup, [#'CosNotification_Property'{name='CosNotification':'StopTimeSupported'(), + value=any:create(orber_tc:boolean(), false)}])), + %% Does it accept Best Effort EventReliability? Must always be true. + ?match({ok,_}, + 'CosNotifyChannelAdmin_ProxyConsumer': + validate_event_qos(PSup, + [#'CosNotification_Property'{name=?not_EventReliability, + value=any:create(orber_tc:short(), ?not_BestEffort)}])), + %% Default is Best Effort; test if we can set Persistent EventReliability. + ?match({'EXCEPTION',{'CosNotification_UnsupportedQoS',_,_}}, + 'CosNotifyChannelAdmin_ProxyConsumer': + validate_event_qos(PSup, + [#'CosNotification_Property'{name=?not_EventReliability, + value=any:create(orber_tc:short(), ?not_Persistent)}])), + + %% Set Persistent + QoSPersistent = [#'CosNotification_Property'{name='CosNotification':'ConnectionReliability'(), + value=any:create(orber_tc:short(), + 'CosNotification':'Persistent'())}], + ?match(ok, 'CosNotification_QoSAdmin':set_qos(Ch, QoSPersistent)), + ?match(ok, 'CosNotification_QoSAdmin':set_qos(CAdm, QoSPersistent)), + ?match(ok, 'CosNotification_QoSAdmin':set_qos(PSup, QoSPersistent)), + + %% Does it accept Best Effort EventReliability? Must always be true. + ?match({ok, _}, + 'CosNotifyChannelAdmin_ProxyConsumer': + validate_event_qos(PSup, + [#'CosNotification_Property'{name=?not_EventReliability, + value=any:create(orber_tc:short(), ?not_BestEffort)}])), + %% Test if we can use Persistent EventReliability. + ?match({'EXCEPTION',{'CosNotification_UnsupportedQoS',_,_}}, + 'CosNotifyChannelAdmin_ProxyConsumer': + validate_event_qos(PSup, + [#'CosNotification_Property'{name=?not_EventReliability, + value=any:create(orber_tc:short(), ?not_Persistent)}])), + QoSEventPersistent = [#'CosNotification_Property'{name='CosNotification':'EventReliability'(), + value=any:create(orber_tc:short(), + 'CosNotification':'Persistent'())}], + ?match(ok, 'CosNotification_QoSAdmin':set_qos(Ch, QoSEventPersistent)), + ?match({'EXCEPTION',{'CosNotification_UnsupportedQoS',_,_}}, + 'CosNotification_QoSAdmin':set_qos(CAdm, QoSEventPersistent)), + ?match({'EXCEPTION',{'CosNotification_UnsupportedQoS',_,_}}, + 'CosNotification_QoSAdmin':set_qos(PSup, QoSEventPersistent)), + + ?match(ok, 'CosNotification_QoSAdmin':set_qos(PSup, [#'CosNotification_Property'{name='CosNotification':'StopTimeSupported'(), + value=any:create(orber_tc:boolean(), true)}])), + ?match({ok,_}, + 'CosNotifyChannelAdmin_ProxyConsumer': + validate_event_qos(PSup, + [#'CosNotification_Property'{name=?not_StopTime, + value=any:create(orber_tc:short(), 0)}, + #'CosNotification_Property'{name=?not_StartTime, + value=any:create(orber_tc:short(), 0)}])), + catch corba:dispose(CAdm), + catch corba:dispose(PSup), + catch corba:dispose(Ch), + cosNotificationApp:stop_factory(Fac), + ok. + +%%----------------------------------------------------------------- +%% Internal functions +%%----------------------------------------------------------------- + +%%-------------------- End of Module ------------------------------ diff --git a/lib/cosNotification/test/notify_test_impl.erl b/lib/cosNotification/test/notify_test_impl.erl new file mode 100644 index 0000000000..483610befd --- /dev/null +++ b/lib/cosNotification/test/notify_test_impl.erl @@ -0,0 +1,299 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1999-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%---------------------------------------------------------------------- +%% File : notify_test_impl.erl +%%---------------------------------------------------------------------- + +-module(notify_test_impl). + +-include_lib("orber/include/corba.hrl"). +-include("idl_output/notify_test.hrl"). + +%%--------------- specified functions ------------------------ +-export([stop_normal/2, + stop_brutal/2, + print/2, + doAction/3, + delay/5, + %% Exports from CosNotifyComm::StructuredPushConsumer + push_structured_event/3, disconnect_structured_push_consumer/2, + %% Exports from "CosNotifyComm::SequencePushConsumer" + push_structured_events/3, disconnect_sequence_push_consumer/2, + %% Exports from CosEventComm::PushConsumer + push/3, disconnect_push_consumer/2, + %% Exports from CosNotifyComm::NotifyPublish + disconnect_sequence_pull_consumer/2, + %% Exports from CosNotifyComm::StructuredPullConsumer + disconnect_structured_pull_consumer/2, + %% Exports from CosEventComm::PullConsumer + disconnect_pull_consumer/2, + %% Exports from CosNotifyComm::SequencePushSupplier + disconnect_sequence_push_supplier/2, + %% Exports from CosNotifyComm::StructuredPushSupplier + disconnect_structured_push_supplier/2, + %% Exports from CosEventComm::PushSupplier + disconnect_push_supplier/2, + %% Exports from CosNotifyComm::SequencePullSupplier + pull_structured_events/3, + try_pull_structured_events/3, + disconnect_sequence_pull_supplier/2, + %% Exports from CosNotifyComm::StructuredPullSupplier + pull_structured_event/2, + try_pull_structured_event/2, + disconnect_structured_pull_supplier/2, + %% Exports from CosEventComm::PullSupplier + pull/2, + try_pull/2, + disconnect_pull_supplier/2, + %% Exports from CosNotifyComm::SequencePullConsumer + offer_change/4, + %% Exports from CosNotifyComm::NotifySubscribe + subscription_change/4]). + +%%--------------- gen_server specific ------------------------ +-export([init/1, terminate/2]). +-export([handle_call/3, handle_cast/2, handle_info/2, code_change/3]). +%% Data structures +-record(state, {myType, proxy, data, action}). + +%%--------------- LOCAL DATA --------------------------------- + +%%------------------------------------------------------------ +%% function : init, terminate +%%------------------------------------------------------------ +init([MyType, Proxy]) -> + process_flag(trap_exit,true), + {ok, #state{myType=MyType, proxy=Proxy, data=[]}}. + +terminate(Reason, State) -> + io:format("notify_test:terminate(~p ~p)~n",[Reason, State#state.myType]), + ok. + +code_change(_OldVsn, State, _Extra) -> + {ok, State}. +handle_call(_,_, State) -> + {noreply, State}. +handle_cast(_, State) -> + {noreply, State}. +handle_info(_Info, State) -> + {noreply, State}. + +%%--------------- SERVER FUNCTIONS --------------------------- + +print(Self, State) -> + io:format("notify_test:print(~p ~p)~n",[Self, State]), + {reply, ok, State}. + +doAction(_Self, State, {set_data, Data}) -> + io:format("notify_test:doAction(add_data) ~p~n",[Data]), + {reply, ok, State#state{data=Data}}; +doAction(_Self, State, {add_data, Data}) -> + io:format("notify_test:doAction(add_data) ~p~n",[Data]), + {reply, ok, State#state{data=State#state.data++Data}}; +doAction(_Self, State, return_data) -> + io:format("notify_test:doAction(return_data)~n",[]), + {reply, State#state.data, State#state{data=[]}}; +doAction(_Self, State, clear_data) -> + io:format("notify_test:doAction(return_data)~n",[]), + {reply, ok, State#state{data=[]}}; +doAction(_Self, State, pull_any) -> + io:format("notify_test:doAction(pull_any)~n",[]), + Event='CosNotifyChannelAdmin_ProxyPullSupplier':pull(State#state.proxy), + {reply, Event, State}; +doAction(_Self, State, {pull_seq, Max}) -> + io:format("notify_test:doAction(pull_sequence)~n",[]), + Event='CosNotifyChannelAdmin_SequenceProxyPullSupplier':pull_structured_events(State#state.proxy, Max), + {reply, Event, State}; +doAction(_Self, State, pull_str) -> + Event='CosNotifyChannelAdmin_StructuredProxyPullSupplier':pull_structured_event(State#state.proxy), + io:format("notify_test:doAction(pull_structured)~n",[]), + {reply, Event, State}; +doAction(_Self, State, try_pull_any) -> + io:format("notify_test:doAction(try_pull_any)~n",[]), + Event='CosNotifyChannelAdmin_ProxyPullSupplier':try_pull(State#state.proxy), + {reply, Event, State}; +doAction(_Self, State, {try_pull_seq, Max}) -> + io:format("notify_test:doAction(try_pull_sequence)~n",[]), + Event='CosNotifyChannelAdmin_SequenceProxyPullSupplier':try_pull_structured_events(State#state.proxy, Max), + {reply, Event, State}; +doAction(_Self, State, try_pull_str) -> + Event='CosNotifyChannelAdmin_StructuredProxyPullSupplier':try_pull_structured_event(State#state.proxy), + io:format("notify_test:doAction(try_pull_structured)~n",[]), + {reply, Event, State}; +doAction(_Self, State, {action, Action}) -> + io:format("notify_test:doAction(~p)~n",[Action]), + {reply, ok, State#state{action = Action}}; + +doAction(_, State, _) -> + {reply, nop, State}. + +stop_normal(_Self, State) -> + {stop, normal, ok, State}. + +stop_brutal(_Self, _State) -> + exit("killed_brutal"). + + + +%%--------------- CosNotifyComm::NotifyPublish -------- +offer_change(_Self, State, Added, Removed) -> + ND=loop(Removed, State#state.data), + ND2=Added++ND, + {reply, ok, State#state{data=ND2}}. + +loop([],Data) -> + Data; +loop([H|T], Data) -> + ND=lists:delete(H,Data), + loop(T, ND). + +%%--------------- CosNotifyComm::NotifySubscribe -------- +subscription_change(_Self, State, Added, Removed) -> + ND=loop(Removed, State#state.data), + ND2=Added++ND, + {reply, ok, State#state{data=ND2}}. + +%%--------------- CosNotifyComm::SequencePushConsumer -------- +push_structured_events(_Self, #state{action = undefined} = State, Event) -> + io:format("notify_test:push_structured_events(~p)~n",[Event]), + {reply, ok, State#state{data=State#state.data++Event}}; +push_structured_events(_Self, #state{action = Action} = State, Event) -> + io:format("notify_test:push_structured_events(~p)~nAction: ~p~n", + [Event, Action]), + corba:raise(#'INTERNAL'{completion_status=?COMPLETED_NO}), + {reply, ok, State#state{data=State#state.data++Event}}. +disconnect_sequence_push_consumer(_Self, State) -> + io:format("disconnect_sequence_push_consumer~n",[]), + {stop, normal, ok, State}. + +%%--------------- CosNotifyComm::StructuredPushConsumer -------- +push_structured_event(_Self, State, Event) -> + io:format("notify_test:push_structured_event(~p)~n",[Event]), + {reply, ok, State#state{data=State#state.data++[Event]}}. +disconnect_structured_push_consumer(_Self, State) -> + io:format("disconnect_structured_push_consumer~n",[]), + {stop, normal, ok, State}. + +%%--------------- CosEventComm::PushConsumer -------- +push(_Self, State, Event) -> + io:format("notify_test:push(~p)~n",[Event]), + {reply, ok, State#state{data=State#state.data++[Event]}}. +disconnect_push_consumer(_Self, State) -> + io:format("disconnect_push_consumer~n",[]), + {stop, normal, ok, State}. + +%%--------------- CosNotifyComm::SequencePullConsumer -------- +disconnect_sequence_pull_consumer(_Self, State) -> + io:format("disconnect_sequence_pull_consumer~n",[]), + {stop, normal, ok, State}. + +%%--------------- CosNotifyComm::StructuredPullConsumer -------- +disconnect_structured_pull_consumer(_Self, State) -> + io:format("disconnect_structured_pull_consumer~n",[]), + {stop, normal, ok, State}. + +%%--------------- CosEventComm::PullConsumer -------- +disconnect_pull_consumer(_Self, State) -> + io:format("disconnect_pull_consumer~n",[]), + {stop, normal, ok, State}. + +%%--------------- CosNotifyComm::SequencePushSupplier -------- +disconnect_sequence_push_supplier(_Self, State) -> + io:format("disconnect_sequence_push_supplier~n",[]), + {stop, normal, ok, State}. + +%%--------------- CosNotifyComm::StructuredPushSupplier -------- +disconnect_structured_push_supplier(_Self, State) -> + io:format("disconnect_structured_push_supplier~n",[]), + {stop, normal, ok, State}. + +%%--------------- CosEventComm::PushSupplier -------- +disconnect_push_supplier(_Self, State) -> + io:format("disconnect_push_supplier~n",[]), + {stop, normal, ok, State}. + +%%--------------- CosNotifyComm::SequencePullSupplier -------- +pull_structured_events(_Self, State, _Max) -> + io:format("notify_test:pullstructured_events()~n",[]), + {reply, ok, State}. +try_pull_structured_events(_Self, State, Max) -> + io:format("notify_test:try_pull_structured_events()~n",[]), + case State#state.data of + [] -> + {reply, {[],false}, State}; + List -> + R = split(List,Max), + {reply, {lists:sublist(List, Max), true}, State#state{data=R}} + end. + +split([],_) -> + []; +split(R,0) -> + R; +split([_H|T],Max) -> + split(T, Max-1). + +disconnect_sequence_pull_supplier(_Self, State) -> + io:format("disconnect_sequence_pull_supplier~n",[]), + {stop, normal, ok, State}. + +%%--------------- CosNotifyComm::StructuredPullSupplier -------- +pull_structured_event(_Self, State) -> + io:format("notify_test:pull_structured_event()~n",[]), + {reply, ok, State}. +try_pull_structured_event(_Self, State) -> + io:format("notify_test:try_pull_structured_event()~n",[]), + case State#state.data of + [] -> + {reply, {[],false}, State}; + [H|T] -> + {reply, {H, true}, State#state{data=T}} + end. +disconnect_structured_pull_supplier(_Self, State) -> + io:format("disconnect_structured_pull_supplier~n",[]), + {stop, normal, ok, State}. + +%%--------------- CosEventComm::PullSupplier -------- +pull(_Self, State) -> + io:format("notify_test:pull()~n",[]), + {reply, 'CosEventComm_PullSupplier':pull(State#state.proxy), State}. +try_pull(_Self, State) -> + io:format("notify_test:try_pull()~n",[]), + case State#state.data of + [] -> + {reply, {[],false}, State}; + [H|T] -> + {reply, {H, true}, State#state{data=T}} + end. +disconnect_pull_supplier(_Self, State) -> + io:format("disconnect_pull_supplier~n",[]), + {stop, normal, ok, State}. + +%%--------------- LOCAL FUNCTIONS ---------------------------- + +delay(Obj, Event, Time, Mod, F) -> + io:format("notify_test:delay(~p) TIME: ~p~n",[Event, now()]), + timer:sleep(Time), + Mod:F(Obj, Event), + io:format("notify_test:delay() DONE: ~p~n",[now()]), + ok. + +%%--------------- END OF MODULE ------------------------------ + diff --git a/lib/cosNotification/test/notify_test_server.cfg b/lib/cosNotification/test/notify_test_server.cfg new file mode 100644 index 0000000000..8621327b57 --- /dev/null +++ b/lib/cosNotification/test/notify_test_server.cfg @@ -0,0 +1,54 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1999-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% +%% +{this, "notify_test::SeqPushC"}. +{{handle_info, "notify_test::SeqPushC"}, true}. +{{impl, "notify_test::SeqPushC"}, "notify_test_impl"}. +{this, "notify_test::StrPushC"}. +{{handle_info, "notify_test::StrPushC"}, true}. +{{impl, "notify_test::StrPushC"}, "notify_test_impl"}. +{this, "notify_test::AnyPushC"}. +{{handle_info, "notify_test::AnyPushC"}, true}. +{{impl, "notify_test::AnyPushC"}, "notify_test_impl"}. +{this, "notify_test::SeqPullC"}. +{{handle_info, "notify_test::SeqPullC"}, true}. +{{impl, "notify_test::SeqPullC"}, "notify_test_impl"}. +{this, "notify_test::StrPullC"}. +{{handle_info, "notify_test::StrPullC"}, true}. +{{impl, "notify_test::StrPullC"}, "notify_test_impl"}. +{this, "notify_test::AnyPullC"}. +{{handle_info, "notify_test::AnyPullC"}, true}. +{{impl, "notify_test::AnyPullC"}, "notify_test_impl"}. +{this, "notify_test::SeqPushS"}. +{{handle_info, "notify_test::SeqPushS"}, true}. +{{impl, "notify_test::SeqPushS"}, "notify_test_impl"}. +{this, "notify_test::StrPushS"}. +{{handle_info, "notify_test::StrPushS"}, true}. +{{impl, "notify_test::StrPushS"}, "notify_test_impl"}. +{this, "notify_test::AnyPushS"}. +{{handle_info, "notify_test::AnyPushS"}, true}. +{{impl, "notify_test::AnyPushS"}, "notify_test_impl"}. +{this, "notify_test::SeqPullS"}. +{{handle_info, "notify_test::SeqPullS"}, true}. +{{impl, "notify_test::SeqPullS"}, "notify_test_impl"}. +{this, "notify_test::StrPullS"}. +{{handle_info, "notify_test::StrPullS"}, true}. +{{impl, "notify_test::StrPullS"}, "notify_test_impl"}. +{this, "notify_test::AnyPullS"}. +{{handle_info, "notify_test::AnyPullS"}, true}. +{{impl, "notify_test::AnyPullS"}, "notify_test_impl"}. diff --git a/lib/cosNotification/test/notify_test_server.idl b/lib/cosNotification/test/notify_test_server.idl new file mode 100644 index 0000000000..4dc0202890 --- /dev/null +++ b/lib/cosNotification/test/notify_test_server.idl @@ -0,0 +1,113 @@ +// +// %CopyrightBegin% +// +// Copyright Ericsson AB 1999-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% +// + +#ifndef _NOTIFY_TEST_SERVER_IDL +#define _NOTIFY_TEST_SERVER_IDL + +#include <CosNotification.idl> +#include <CosNotifyComm.idl> + +module notify_test { + + enum action {PULL_SEQ, PULL_STR, PULL_ANY, PUSH_SEQ, PUSH_STR, PUSH_ANY}; + + struct data { + short score; + string name; + }; + + struct computer { + float memsize; + float cputime; + float filesize; + }; + + struct X { + long A; + string B; + short C; + }; + + + union K switch(short) { + case -1: short neg; + case 0: + case 2: string K; + case 3: X L; + case 5: long M; + default: short N; + }; + + union uni1 switch(long) { + case 1: + case 2: long lo; + case 3: short sh; + default: short defvalue; + }; + + union uni2 switch(long) { + case 1: + case 2: long lo; + case 3: short sh; + }; + + typedef any namedAny; + typedef short ShortArray[4]; + struct studies { + uni1 uni1; + CosNotification::PropertySeq tests; + ShortArray monthly_attendance; + short gpa; + }; + + interface funcs { + void print(); + void doAction(in action Act); + }; + + // interface server + interface SeqPushC : funcs, CosNotifyComm::SequencePushConsumer { + }; + interface StrPushC : funcs, CosNotifyComm::StructuredPushConsumer { + }; + interface AnyPushC : funcs, CosEventComm::PushConsumer { + }; + interface SeqPullC : funcs, CosNotifyComm::SequencePullConsumer { + }; + interface StrPullC : funcs, CosNotifyComm::StructuredPullConsumer { + }; + interface AnyPullC : funcs, CosEventComm::PullConsumer { + }; + + interface SeqPushS : funcs, CosNotifyComm::SequencePushSupplier { + }; + interface StrPushS : funcs, CosNotifyComm::StructuredPushSupplier { + }; + interface AnyPushS : funcs, CosEventComm::PushSupplier { + }; + interface SeqPullS : funcs, CosNotifyComm::SequencePullSupplier { + }; + interface StrPullS : funcs, CosNotifyComm::StructuredPullSupplier { + }; + interface AnyPullS : funcs, CosEventComm::PullSupplier { + }; + +}; + +#endif diff --git a/lib/cosNotification/vsn.mk b/lib/cosNotification/vsn.mk index f4196a2f33..a19facffd5 100644 --- a/lib/cosNotification/vsn.mk +++ b/lib/cosNotification/vsn.mk @@ -1,6 +1,7 @@ COSNOTIFICATION_VSN = 1.1.14 -TICKETS = OTP-8489 +TICKETS = OTP-8489 \ + OTP-8543 TICKETS_1.1.13 = OTP-8353 \ OTP-8354 \ diff --git a/lib/cosProperty/doc/src/notes.xml b/lib/cosProperty/doc/src/notes.xml index e80c90849f..11e6205ee9 100644 --- a/lib/cosProperty/doc/src/notes.xml +++ b/lib/cosProperty/doc/src/notes.xml @@ -4,7 +4,7 @@ <chapter> <header> <copyright> - <year>2000</year><year>2009</year> + <year>2000</year><year>2010</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -13,12 +13,12 @@ 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. - + </legalnotice> <title>cosProperty Release Notes</title> @@ -32,6 +32,22 @@ </header> <section> + <title>cosProperty 1.1.12</title> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p> + Test suites published.</p> + <p> + Own Id: OTP-8543 Aux Id:</p> + </item> + </list> + </section> + </section> + + <section> <title>cosProperty 1.1.11</title> <section> diff --git a/lib/cosProperty/test/Makefile b/lib/cosProperty/test/Makefile new file mode 100644 index 0000000000..ac0f4e298d --- /dev/null +++ b/lib/cosProperty/test/Makefile @@ -0,0 +1,129 @@ +# +# %CopyrightBegin% +# +# Copyright Ericsson AB 2000-2009. All Rights Reserved. +# +# The contents of this file are subject to the Erlang Public License, +# Version 1.1, (the "License"); you may not use this file except in +# compliance with the License. You should have received a copy of the +# Erlang Public License along with this software. If not, it can be +# retrieved online at http://www.erlang.org/. +# +# Software distributed under the License is distributed on an "AS IS" +# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +# the License for the specific language governing rights and limitations +# under the License. +# +# %CopyrightEnd% +# +# +include $(ERL_TOP)/make/target.mk +include $(ERL_TOP)/make/$(TARGET)/otp.mk + +# ---------------------------------------------------- +# Application version +# ---------------------------------------------------- +include ../vsn.mk +VSN=$(COSPROPERTY_VSN) +# ---------------------------------------------------- +# Release directory specification +# ---------------------------------------------------- +RELSYSDIR = $(RELEASE_PATH)/cosProperty_test + +# ---------------------------------------------------- +# Target Specs +# ---------------------------------------------------- +TEST_SPEC_FILE = cosProperty.spec + + +IDL_FILES = + +IDLOUTDIR = idl_output + +MODULES = \ + property_SUITE \ + generated_SUITE + +GEN_MODULES = \ + +GEN_HRL_FILES = \ + +ERL_FILES = $(MODULES:%=%.erl) + +HRL_FILES = + +GEN_FILES = \ + $(GEN_HRL_FILES:%=$(IDLOUTDIR)/%) \ + $(GEN_MODULES:%=$(IDLOUTDIR)/%.erl) + +GEN_TARGET_FILES = $(GEN_MODULES:%=$(IDLOUTDIR)/%.$(EMULATOR)) + +SUITE_TARGET_FILES = $(MODULES:%=%.$(EMULATOR)) + +TARGET_FILES = \ + $(GEN_TARGET_FILES) \ + $(SUITE_TARGET_FILES) + + +# ---------------------------------------------------- +# PROGRAMS +# ---------------------------------------------------- +LOCAL_CLASSPATH = $(ERL_TOP)lib/cosProperty/priv:$(ERL_TOP)lib/cosProperty/test +# ---------------------------------------------------- +# FLAGS +# ---------------------------------------------------- +ERL_IDL_FLAGS += -pa $(ERL_TOP)/lib/cosProperty/ebin \ + -pa $(ERL_TOP)/lib/cosProperty/src \ + -pa $(ERL_TOP)/lib/orber/ebin \ + -pa $(ERL_TOP)/lib/ic/ebin + +ERL_COMPILE_FLAGS += \ + $(ERL_IDL_FLAGS) \ + -pa $(ERL_TOP)/lib/orber/include \ + -pa $(ERL_TOP)/internal_tools/test_server/ebin \ + -pa $(ERL_TOP)/lib/cosProperty/ebin \ + -pa $(ERL_TOP)/lib/cosProperty/test/idl_output \ + -I$(ERL_TOP)/lib/orber/include \ + -I$(ERL_TOP)/lib/cosProperty/src \ + -I$(ERL_TOP)/lib/cosProperty \ + -I$(ERL_TOP)/lib/cosProperty/test/$(IDLOUTDIR) \ + -I$(ERL_TOP)/lib/test_server/include + +# ---------------------------------------------------- +# Targets +# ---------------------------------------------------- + + +tests debug opt: $(TARGET_FILES) + +clean: + rm -f idl_output/* + rm -f $(TARGET_FILES) + rm -f errs core *~ + +docs: + +# ---------------------------------------------------- +# Special Targets +# ---------------------------------------------------- + +# ---------------------------------------------------- +# Release Targets +# ---------------------------------------------------- +# We don't copy generated intermediate erlang and hrl files + +include $(ERL_TOP)/make/otp_release_targets.mk + +release_spec: + +release_docs_spec: + +release_tests_spec: tests + $(INSTALL_DIR) $(RELSYSDIR) + $(INSTALL_DATA) $(IDL_FILES) $(TEST_SPEC_FILE) \ + $(ERL_FILES) $(RELSYSDIR) + $(INSTALL_DATA) $(SUITE_TARGET_FILES) $(RELSYSDIR) +# $(INSTALL_DIR) $(RELSYSDIR)/$(IDLOUTDIR) +# $(INSTALL_DATA) $(GEN_TARGET_FILES) $(GEN_FILES) \ +# $(RELSYSDIR)/$(IDLOUTDIR) + diff --git a/lib/cosProperty/test/cosProperty.spec b/lib/cosProperty/test/cosProperty.spec new file mode 100644 index 0000000000..d3e0001eef --- /dev/null +++ b/lib/cosProperty/test/cosProperty.spec @@ -0,0 +1,20 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2000-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% +%% +{topcase, {dir, "../cosProperty_test"}}. + diff --git a/lib/cosProperty/test/generated_SUITE.erl b/lib/cosProperty/test/generated_SUITE.erl new file mode 100644 index 0000000000..80a7953949 --- /dev/null +++ b/lib/cosProperty/test/generated_SUITE.erl @@ -0,0 +1,571 @@ +%%----------------------------------------------------------------- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2004-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%----------------------------------------------------------------- +%% File : generated_SUITE.erl +%% Purpose : +%%----------------------------------------------------------------- + +-module(generated_SUITE). + +-include("test_server.hrl"). +-include_lib("orber/include/corba.hrl"). + +-define(default_timeout, ?t:minutes(3)). + +-define(match(ExpectedRes, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS) + end + end()). + +-define(nomatch(Not, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + Not -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS); + _ -> + AcTuAlReS + end + end()). + + +-define(checktc(_Op), + fun(TC) -> + case orber_tc:check_tc(TC) of + false -> + io:format("###### ERROR ERROR ######~n~p - ~p~n", [Op, TC]), + ?line exit(TC); + true -> + true + end + end). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1]). + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- +-export([]). +-compile(export_all). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["This suite is for testing IC generated files"]; +all(suite) -> + ['CosPropertyService_ConflictingProperty', 'CosPropertyService_ConstraintNotSupported', + 'CosPropertyService_FixedProperty', 'CosPropertyService_InvalidPropertyName', + 'CosPropertyService_MultipleExceptions', 'CosPropertyService_Properties', + 'CosPropertyService_Property', 'CosPropertyService_PropertyDef', + 'CosPropertyService_PropertyDefs', 'CosPropertyService_PropertyException', + 'CosPropertyService_PropertyExceptions', 'CosPropertyService_PropertyMode', + 'CosPropertyService_PropertyModes', 'CosPropertyService_PropertyNames', + 'CosPropertyService_PropertyNotFound', 'CosPropertyService_PropertyTypes', + 'CosPropertyService_ReadOnlyProperty', 'CosPropertyService_UnsupportedMode', + 'CosPropertyService_UnsupportedProperty', 'CosPropertyService_UnsupportedTypeCode', + 'CosPropertyService_PropertyNamesIterator', 'CosPropertyService_PropertiesIterator', + 'CosPropertyService_PropertySet', 'CosPropertyService_PropertySetDef', + 'CosPropertyService_PropertySetDefFactory', 'CosPropertyService_PropertySetFactory']. + + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- +init_per_testcase(_Case, Config) -> + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + + + + +%%----------------------------------------------------------------- +%% Test Case: 'CosPropertyService_ConflictingProperty' +%% Description: +%%----------------------------------------------------------------- +'CosPropertyService_ConflictingProperty'(doc) -> ["CosPropertyService_ConflictingProperty"]; +'CosPropertyService_ConflictingProperty'(suite) -> []; +'CosPropertyService_ConflictingProperty'(_) -> + ?match(true, orber_tc:check_tc('CosPropertyService_ConflictingProperty':tc())), + ?match("IDL:omg.org/CosPropertyService/ConflictingProperty:1.0", + 'CosPropertyService_ConflictingProperty':id()), + ?match("CosPropertyService_ConflictingProperty", + 'CosPropertyService_ConflictingProperty':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosPropertyService_ConstraintNotSupported' +%% Description: +%%----------------------------------------------------------------- +'CosPropertyService_ConstraintNotSupported'(doc) -> ["CosPropertyService_ConstraintNotSupported"]; +'CosPropertyService_ConstraintNotSupported'(suite) -> []; +'CosPropertyService_ConstraintNotSupported'(_) -> + ?match(true, orber_tc:check_tc('CosPropertyService_ConstraintNotSupported':tc())), + ?match("IDL:omg.org/CosPropertyService/ConstraintNotSupported:1.0", + 'CosPropertyService_ConstraintNotSupported':id()), + ?match("CosPropertyService_ConstraintNotSupported", + 'CosPropertyService_ConstraintNotSupported':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosPropertyService_FixedProperty' +%% Description: +%%----------------------------------------------------------------- +'CosPropertyService_FixedProperty'(doc) -> ["CosPropertyService_FixedProperty"]; +'CosPropertyService_FixedProperty'(suite) -> []; +'CosPropertyService_FixedProperty'(_) -> + ?match(true, orber_tc:check_tc('CosPropertyService_FixedProperty':tc())), + ?match("IDL:omg.org/CosPropertyService/FixedProperty:1.0", + 'CosPropertyService_FixedProperty':id()), + ?match("CosPropertyService_FixedProperty", + 'CosPropertyService_FixedProperty':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosPropertyService_InvalidPropertyName' +%% Description: +%%----------------------------------------------------------------- +'CosPropertyService_InvalidPropertyName'(doc) -> ["CosPropertyService_InvalidPropertyName"]; +'CosPropertyService_InvalidPropertyName'(suite) -> []; +'CosPropertyService_InvalidPropertyName'(_) -> + ?match(true, orber_tc:check_tc('CosPropertyService_InvalidPropertyName':tc())), + ?match("IDL:omg.org/CosPropertyService/InvalidPropertyName:1.0", + 'CosPropertyService_InvalidPropertyName':id()), + ?match("CosPropertyService_InvalidPropertyName", + 'CosPropertyService_InvalidPropertyName':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosPropertyService_MultipleExceptions' +%% Description: +%%----------------------------------------------------------------- +'CosPropertyService_MultipleExceptions'(doc) -> ["CosPropertyService_MultipleExceptions"]; +'CosPropertyService_MultipleExceptions'(suite) -> []; +'CosPropertyService_MultipleExceptions'(_) -> + ?match(true, orber_tc:check_tc('CosPropertyService_MultipleExceptions':tc())), + ?match("IDL:omg.org/CosPropertyService/MultipleExceptions:1.0", + 'CosPropertyService_MultipleExceptions':id()), + ?match("CosPropertyService_MultipleExceptions", + 'CosPropertyService_MultipleExceptions':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosPropertyService_Properties' +%% Description: +%%----------------------------------------------------------------- +'CosPropertyService_Properties'(doc) -> ["CosPropertyService_Properties"]; +'CosPropertyService_Properties'(suite) -> []; +'CosPropertyService_Properties'(_) -> + ?match(true, orber_tc:check_tc('CosPropertyService_Properties':tc())), + ?match("IDL:omg.org/CosPropertyService/Properties:1.0", + 'CosPropertyService_Properties':id()), + ?match("CosPropertyService_Properties", + 'CosPropertyService_Properties':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosPropertyService_Property' +%% Description: +%%----------------------------------------------------------------- +'CosPropertyService_Property'(doc) -> ["CosPropertyService_Property"]; +'CosPropertyService_Property'(suite) -> []; +'CosPropertyService_Property'(_) -> + ?match(true, orber_tc:check_tc('CosPropertyService_Property':tc())), + ?match("IDL:omg.org/CosPropertyService/Property:1.0", + 'CosPropertyService_Property':id()), + ?match("CosPropertyService_Property", + 'CosPropertyService_Property':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosPropertyService_PropertyDef' +%% Description: +%%----------------------------------------------------------------- +'CosPropertyService_PropertyDef'(doc) -> ["CosPropertyService_PropertyDef"]; +'CosPropertyService_PropertyDef'(suite) -> []; +'CosPropertyService_PropertyDef'(_) -> + ?match(true, orber_tc:check_tc('CosPropertyService_PropertyDef':tc())), + ?match("IDL:omg.org/CosPropertyService/PropertyDef:1.0", + 'CosPropertyService_PropertyDef':id()), + ?match("CosPropertyService_PropertyDef", + 'CosPropertyService_PropertyDef':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosPropertyService_PropertyDefs' +%% Description: +%%----------------------------------------------------------------- +'CosPropertyService_PropertyDefs'(doc) -> ["CosPropertyService_PropertyDefs"]; +'CosPropertyService_PropertyDefs'(suite) -> []; +'CosPropertyService_PropertyDefs'(_) -> + ?match(true, orber_tc:check_tc('CosPropertyService_PropertyDefs':tc())), + ?match("IDL:omg.org/CosPropertyService/PropertyDefs:1.0", + 'CosPropertyService_PropertyDefs':id()), + ?match("CosPropertyService_PropertyDefs", + 'CosPropertyService_PropertyDefs':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosPropertyService_PropertyException' +%% Description: +%%----------------------------------------------------------------- +'CosPropertyService_PropertyException'(doc) -> ["CosPropertyService_PropertyException"]; +'CosPropertyService_PropertyException'(suite) -> []; +'CosPropertyService_PropertyException'(_) -> + ?match(true, orber_tc:check_tc('CosPropertyService_PropertyException':tc())), + ?match("IDL:omg.org/CosPropertyService/PropertyException:1.0", + 'CosPropertyService_PropertyException':id()), + ?match("CosPropertyService_PropertyException", + 'CosPropertyService_PropertyException':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosPropertyService_PropertyExceptions' +%% Description: +%%----------------------------------------------------------------- +'CosPropertyService_PropertyExceptions'(doc) -> ["CosPropertyService_PropertyExceptions"]; +'CosPropertyService_PropertyExceptions'(suite) -> []; +'CosPropertyService_PropertyExceptions'(_) -> + ?match(true, orber_tc:check_tc('CosPropertyService_PropertyExceptions':tc())), + ?match("IDL:omg.org/CosPropertyService/PropertyExceptions:1.0", + 'CosPropertyService_PropertyExceptions':id()), + ?match("CosPropertyService_PropertyExceptions", + 'CosPropertyService_PropertyExceptions':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosPropertyService_PropertyMode' +%% Description: +%%----------------------------------------------------------------- +'CosPropertyService_PropertyMode'(doc) -> ["CosPropertyService_PropertyMode"]; +'CosPropertyService_PropertyMode'(suite) -> []; +'CosPropertyService_PropertyMode'(_) -> + ?match(true, orber_tc:check_tc('CosPropertyService_PropertyMode':tc())), + ?match("IDL:omg.org/CosPropertyService/PropertyMode:1.0", + 'CosPropertyService_PropertyMode':id()), + ?match("CosPropertyService_PropertyMode", + 'CosPropertyService_PropertyMode':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosPropertyService_PropertyModes' +%% Description: +%%----------------------------------------------------------------- +'CosPropertyService_PropertyModes'(doc) -> ["CosPropertyService_PropertyModes"]; +'CosPropertyService_PropertyModes'(suite) -> []; +'CosPropertyService_PropertyModes'(_) -> + ?match(true, orber_tc:check_tc('CosPropertyService_PropertyModes':tc())), + ?match("IDL:omg.org/CosPropertyService/PropertyModes:1.0", + 'CosPropertyService_PropertyModes':id()), + ?match("CosPropertyService_PropertyModes", + 'CosPropertyService_PropertyModes':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosPropertyService_PropertyNames' +%% Description: +%%----------------------------------------------------------------- +'CosPropertyService_PropertyNames'(doc) -> ["CosPropertyService_PropertyNames"]; +'CosPropertyService_PropertyNames'(suite) -> []; +'CosPropertyService_PropertyNames'(_) -> + ?match(true, orber_tc:check_tc('CosPropertyService_PropertyNames':tc())), + ?match("IDL:omg.org/CosPropertyService/PropertyNames:1.0", + 'CosPropertyService_PropertyNames':id()), + ?match("CosPropertyService_PropertyNames", + 'CosPropertyService_PropertyNames':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosPropertyService_PropertyNotFound' +%% Description: +%%----------------------------------------------------------------- +'CosPropertyService_PropertyNotFound'(doc) -> ["CosPropertyService_PropertyNotFound"]; +'CosPropertyService_PropertyNotFound'(suite) -> []; +'CosPropertyService_PropertyNotFound'(_) -> + ?match(true, orber_tc:check_tc('CosPropertyService_PropertyNotFound':tc())), + ?match("IDL:omg.org/CosPropertyService/PropertyNotFound:1.0", + 'CosPropertyService_PropertyNotFound':id()), + ?match("CosPropertyService_PropertyNotFound", + 'CosPropertyService_PropertyNotFound':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosPropertyService_PropertyTypes' +%% Description: +%%----------------------------------------------------------------- +'CosPropertyService_PropertyTypes'(doc) -> ["CosPropertyService_PropertyTypes"]; +'CosPropertyService_PropertyTypes'(suite) -> []; +'CosPropertyService_PropertyTypes'(_) -> + ?match(true, orber_tc:check_tc('CosPropertyService_PropertyTypes':tc())), + ?match("IDL:omg.org/CosPropertyService/PropertyTypes:1.0", + 'CosPropertyService_PropertyTypes':id()), + ?match("CosPropertyService_PropertyTypes", + 'CosPropertyService_PropertyTypes':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosPropertyService_ReadOnlyProperty' +%% Description: +%%----------------------------------------------------------------- +'CosPropertyService_ReadOnlyProperty'(doc) -> ["CosPropertyService_ReadOnlyProperty"]; +'CosPropertyService_ReadOnlyProperty'(suite) -> []; +'CosPropertyService_ReadOnlyProperty'(_) -> + ?match(true, orber_tc:check_tc('CosPropertyService_ReadOnlyProperty':tc())), + ?match("IDL:omg.org/CosPropertyService/ReadOnlyProperty:1.0", + 'CosPropertyService_ReadOnlyProperty':id()), + ?match("CosPropertyService_ReadOnlyProperty", + 'CosPropertyService_ReadOnlyProperty':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosPropertyService_UnsupportedMode' +%% Description: +%%----------------------------------------------------------------- +'CosPropertyService_UnsupportedMode'(doc) -> ["CosPropertyService_UnsupportedMode"]; +'CosPropertyService_UnsupportedMode'(suite) -> []; +'CosPropertyService_UnsupportedMode'(_) -> + ?match(true, orber_tc:check_tc('CosPropertyService_UnsupportedMode':tc())), + ?match("IDL:omg.org/CosPropertyService/UnsupportedMode:1.0", + 'CosPropertyService_UnsupportedMode':id()), + ?match("CosPropertyService_UnsupportedMode", + 'CosPropertyService_UnsupportedMode':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosPropertyService_UnsupportedProperty' +%% Description: +%%----------------------------------------------------------------- +'CosPropertyService_UnsupportedProperty'(doc) -> ["CosPropertyService_UnsupportedProperty"]; +'CosPropertyService_UnsupportedProperty'(suite) -> []; +'CosPropertyService_UnsupportedProperty'(_) -> + ?match(true, orber_tc:check_tc('CosPropertyService_UnsupportedProperty':tc())), + ?match("IDL:omg.org/CosPropertyService/UnsupportedProperty:1.0", + 'CosPropertyService_UnsupportedProperty':id()), + ?match("CosPropertyService_UnsupportedProperty", + 'CosPropertyService_UnsupportedProperty':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosPropertyService_UnsupportedTypeCode' +%% Description: +%%----------------------------------------------------------------- +'CosPropertyService_UnsupportedTypeCode'(doc) -> ["CosPropertyService_UnsupportedTypeCode"]; +'CosPropertyService_UnsupportedTypeCode'(suite) -> []; +'CosPropertyService_UnsupportedTypeCode'(_) -> + ?match(true, orber_tc:check_tc('CosPropertyService_UnsupportedTypeCode':tc())), + ?match("IDL:omg.org/CosPropertyService/UnsupportedTypeCode:1.0", + 'CosPropertyService_UnsupportedTypeCode':id()), + ?match("CosPropertyService_UnsupportedTypeCode", + 'CosPropertyService_UnsupportedTypeCode':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosPropertyService_PropertyNamesIterator' +%% Description: +%%----------------------------------------------------------------- +'CosPropertyService_PropertyNamesIterator'(doc) -> ["CosPropertyService_PropertyNamesIterator"]; +'CosPropertyService_PropertyNamesIterator'(suite) -> []; +'CosPropertyService_PropertyNamesIterator'(_) -> + ?nomatch(undefined, 'CosPropertyService_PropertyNamesIterator':oe_tc(reset)), + ?nomatch(undefined, 'CosPropertyService_PropertyNamesIterator':oe_tc(next_one)), + ?nomatch(undefined, 'CosPropertyService_PropertyNamesIterator':oe_tc(next_n)), + ?nomatch(undefined, 'CosPropertyService_PropertyNamesIterator':oe_tc(destroy)), + ?match(undefined, 'CosPropertyService_PropertyNamesIterator':oe_tc(undefined)), + ?match([_|_], 'CosPropertyService_PropertyNamesIterator':oe_get_interface()), + ?match("IDL:omg.org/CosPropertyService/PropertyNamesIterator:1.0", + 'CosPropertyService_PropertyNamesIterator':typeID()), + check_tc('CosPropertyService_PropertyNamesIterator':oe_get_interface()), + ?match(true, 'CosPropertyService_PropertyNamesIterator':oe_is_a('CosPropertyService_PropertyNamesIterator':typeID())), + ?match(false, 'CosPropertyService_PropertyNamesIterator':oe_is_a("wrong")), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosPropertyService_PropertiesIterator' +%% Description: +%%----------------------------------------------------------------- +'CosPropertyService_PropertiesIterator'(doc) -> ["CosPropertyService_PropertiesIterator"]; +'CosPropertyService_PropertiesIterator'(suite) -> []; +'CosPropertyService_PropertiesIterator'(_) -> + ?nomatch(undefined, 'CosPropertyService_PropertiesIterator':oe_tc(reset)), + ?nomatch(undefined, 'CosPropertyService_PropertiesIterator':oe_tc(next_one)), + ?nomatch(undefined, 'CosPropertyService_PropertiesIterator':oe_tc(next_n)), + ?nomatch(undefined, 'CosPropertyService_PropertiesIterator':oe_tc(destroy)), + ?match(undefined, 'CosPropertyService_PropertiesIterator':oe_tc(undefined)), + ?match([_|_], 'CosPropertyService_PropertiesIterator':oe_get_interface()), + ?match("IDL:omg.org/CosPropertyService/PropertiesIterator:1.0", + 'CosPropertyService_PropertiesIterator':typeID()), + check_tc('CosPropertyService_PropertiesIterator':oe_get_interface()), + ?match(true, 'CosPropertyService_PropertiesIterator':oe_is_a('CosPropertyService_PropertiesIterator':typeID())), + ?match(false, 'CosPropertyService_PropertiesIterator':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosPropertyService_PropertySet' +%% Description: +%%----------------------------------------------------------------- +'CosPropertyService_PropertySet'(doc) -> ["CosPropertyService_PropertySet"]; +'CosPropertyService_PropertySet'(suite) -> []; +'CosPropertyService_PropertySet'(_) -> + ?nomatch(undefined, 'CosPropertyService_PropertySet':oe_tc(define_property)), + ?nomatch(undefined, 'CosPropertyService_PropertySet':oe_tc(define_properties)), + ?nomatch(undefined, 'CosPropertyService_PropertySet':oe_tc(get_number_of_properties)), + ?nomatch(undefined, 'CosPropertyService_PropertySet':oe_tc(get_all_property_names)), + ?nomatch(undefined, 'CosPropertyService_PropertySet':oe_tc(get_property_value)), + ?nomatch(undefined, 'CosPropertyService_PropertySet':oe_tc(get_properties)), + ?nomatch(undefined, 'CosPropertyService_PropertySet':oe_tc(get_all_properties)), + ?nomatch(undefined, 'CosPropertyService_PropertySet':oe_tc(delete_property)), + ?nomatch(undefined, 'CosPropertyService_PropertySet':oe_tc(delete_properties)), + ?nomatch(undefined, 'CosPropertyService_PropertySet':oe_tc(delete_all_properties)), + ?nomatch(undefined, 'CosPropertyService_PropertySet':oe_tc(is_property_defined)), + ?match(undefined, 'CosPropertyService_PropertySet':oe_tc(undefined)), + ?match([_|_], 'CosPropertyService_PropertySet':oe_get_interface()), + ?match("IDL:omg.org/CosPropertyService/PropertySet:1.0", + 'CosPropertyService_PropertySet':typeID()), + check_tc('CosPropertyService_PropertySet':oe_get_interface()), + ?match(true, 'CosPropertyService_PropertySet':oe_is_a('CosPropertyService_PropertySet':typeID())), + ?match(false, 'CosPropertyService_PropertySet':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosPropertyService_PropertySetDef' +%% Description: +%%----------------------------------------------------------------- +'CosPropertyService_PropertySetDef'(doc) -> ["CosPropertyService_PropertySetDef"]; +'CosPropertyService_PropertySetDef'(suite) -> []; +'CosPropertyService_PropertySetDef'(_) -> + ?nomatch(undefined, 'CosPropertyService_PropertySetDef':oe_tc(get_allowed_property_types)), + ?nomatch(undefined, 'CosPropertyService_PropertySetDef':oe_tc(get_allowed_properties)), + ?nomatch(undefined, 'CosPropertyService_PropertySetDef':oe_tc(define_property_with_mode)), + ?nomatch(undefined, 'CosPropertyService_PropertySetDef':oe_tc(define_properties_with_modes)), + ?nomatch(undefined, 'CosPropertyService_PropertySetDef':oe_tc(get_property_mode)), + ?nomatch(undefined, 'CosPropertyService_PropertySetDef':oe_tc(get_property_modes)), + ?nomatch(undefined, 'CosPropertyService_PropertySetDef':oe_tc(set_property_mode)), + ?nomatch(undefined, 'CosPropertyService_PropertySetDef':oe_tc(set_property_modes)), + ?nomatch(undefined, 'CosPropertyService_PropertySetDef':oe_tc(define_property)), + ?nomatch(undefined, 'CosPropertyService_PropertySetDef':oe_tc(define_properties)), + ?nomatch(undefined, 'CosPropertyService_PropertySetDef':oe_tc(get_number_of_properties)), + ?nomatch(undefined, 'CosPropertyService_PropertySetDef':oe_tc(get_all_property_names)), + ?nomatch(undefined, 'CosPropertyService_PropertySetDef':oe_tc(get_property_value)), + ?nomatch(undefined, 'CosPropertyService_PropertySetDef':oe_tc(get_properties)), + ?nomatch(undefined, 'CosPropertyService_PropertySetDef':oe_tc(get_all_properties)), + ?nomatch(undefined, 'CosPropertyService_PropertySetDef':oe_tc(delete_property)), + ?nomatch(undefined, 'CosPropertyService_PropertySetDef':oe_tc(delete_properties)), + ?nomatch(undefined, 'CosPropertyService_PropertySetDef':oe_tc(delete_all_properties)), + ?nomatch(undefined, 'CosPropertyService_PropertySetDef':oe_tc(is_property_defined)), + ?match(undefined, 'CosPropertyService_PropertySetDef':oe_tc(undefined)), + ?match([_|_], 'CosPropertyService_PropertySetDef':oe_get_interface()), + ?match("IDL:omg.org/CosPropertyService/PropertySetDef:1.0", + 'CosPropertyService_PropertySetDef':typeID()), + check_tc('CosPropertyService_PropertySetDef':oe_get_interface()), + ?match(true, 'CosPropertyService_PropertySetDef':oe_is_a('CosPropertyService_PropertySetDef':typeID())), + ?match(true, 'CosPropertyService_PropertySetDef':oe_is_a('CosPropertyService_PropertySet':typeID())), + ?match(false, 'CosPropertyService_PropertySetDef':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosPropertyService_PropertySetDefFactory' +%% Description: +%%----------------------------------------------------------------- +'CosPropertyService_PropertySetDefFactory'(doc) -> ["CosPropertyService_PropertySetDefFactory"]; +'CosPropertyService_PropertySetDefFactory'(suite) -> []; +'CosPropertyService_PropertySetDefFactory'(_) -> + ?nomatch(undefined, 'CosPropertyService_PropertySetDefFactory':oe_tc(create_propertysetdef)), + ?nomatch(undefined, 'CosPropertyService_PropertySetDefFactory':oe_tc(create_constrained_propertysetdef)), + ?nomatch(undefined, 'CosPropertyService_PropertySetDefFactory':oe_tc(create_initial_propertysetdef)), + ?match(undefined, 'CosPropertyService_PropertySetDefFactory':oe_tc(undefined)), + ?match([_|_], 'CosPropertyService_PropertySetDefFactory':oe_get_interface()), + ?match("IDL:omg.org/CosPropertyService/PropertySetDefFactory:1.0", + 'CosPropertyService_PropertySetDefFactory':typeID()), + check_tc('CosPropertyService_PropertySetDefFactory':oe_get_interface()), + ?match(true, 'CosPropertyService_PropertySetDefFactory':oe_is_a('CosPropertyService_PropertySetDefFactory':typeID())), + ?match(false, 'CosPropertyService_PropertySetDefFactory':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosPropertyService_PropertySetFactory' +%% Description: +%%----------------------------------------------------------------- +'CosPropertyService_PropertySetFactory'(doc) -> ["CosPropertyService_PropertySetFactory"]; +'CosPropertyService_PropertySetFactory'(suite) -> []; +'CosPropertyService_PropertySetFactory'(_) -> + ?nomatch(undefined, 'CosPropertyService_PropertySetFactory':oe_tc(create_propertyset)), + ?nomatch(undefined, 'CosPropertyService_PropertySetFactory':oe_tc(create_constrained_propertyset)), + ?nomatch(undefined, 'CosPropertyService_PropertySetFactory':oe_tc(create_initial_propertyset)), + ?match(undefined, 'CosPropertyService_PropertySetFactory':oe_tc(undefined)), + ?match([_|_], 'CosPropertyService_PropertySetFactory':oe_get_interface()), + ?match("IDL:omg.org/CosPropertyService/PropertySetFactory:1.0", + 'CosPropertyService_PropertySetFactory':typeID()), + check_tc('CosPropertyService_PropertySetFactory':oe_get_interface()), + ?match(true, 'CosPropertyService_PropertySetFactory':oe_is_a('CosPropertyService_PropertySetFactory':typeID())), + ?match(false, 'CosPropertyService_PropertySetFactory':oe_is_a("wrong")), + ok. + + + +%%----------------------------------------------------------------- +%% MISC functions +%%----------------------------------------------------------------- +check_tc([]) -> + ok; +check_tc([{Op, {RetType, InParameters, OutParameters}}|T]) -> + io:format("checked - ~s~n", [Op]), + lists:all(?checktc(Op), [RetType|InParameters]), + lists:all(?checktc(Op), OutParameters), + check_tc(T). + + diff --git a/lib/cosProperty/test/property_SUITE.erl b/lib/cosProperty/test/property_SUITE.erl new file mode 100644 index 0000000000..8fed3128ef --- /dev/null +++ b/lib/cosProperty/test/property_SUITE.erl @@ -0,0 +1,747 @@ +%%---------------------------------------------------------------------- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2000-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%---------------------------------------------------------------------- +%% File : property_SUITE.erl +%% Description : +%% +%%---------------------------------------------------------------------- +-module(property_SUITE). + + +%%--------------- INCLUDES ----------------------------------- +-include_lib("orber/include/corba.hrl"). +-include_lib("orber/src/orber_iiop.hrl"). +-include_lib("cosProperty/src/cosProperty.hrl"). +-include_lib("cosProperty/include/CosPropertyService.hrl"). + +-include("test_server.hrl"). + +%%--------------- DEFINES ------------------------------------ +-define(default_timeout, ?t:minutes(20)). +-define(match(ExpectedRes, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + io:format("------ CORRECT RESULT ------~n~p~n", + [AcTuAlReS]), + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + exit(AcTuAlReS) + end + end()). + +-define(match_inverse(NotExpectedRes, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + NotExpectedRes -> + io:format("###### ERROR ERROR ######~n ~p~n", + [AcTuAlReS]), + exit(AcTuAlReS); + _ -> + io:format("------ CORRECT RESULT ------~n~p~n", + [AcTuAlReS]), + AcTuAlReS + end + end()). + + +-define(val1, #any{typecode=tk_short, value=1}). +-define(val2, #any{typecode=tk_short, value=2}). +-define(val3, #any{typecode=tk_short, value=3}). +-define(val4, #any{typecode=tk_short, value=4}). +-define(val5, #any{typecode=tk_long, value=5}). +-define(badval, #any{typecode=tk_shirt, value=5}). + +-define(id1, "id1"). +-define(id2, "id2"). +-define(id3, "id3"). +-define(id4, "id4"). +-define(id5, "id5"). +-define(badid, ""). + + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +%% Fixed exports +-export([all/1, cases/0, init_all/1, finish_all/1, + init_per_testcase/2, fin_per_testcase/2]). +%% Test cases +-export([create_setdef_api/1, create_set_api/1, define_with_mode_api/1, + define_api/1, names_iterator_api/1, properties_iterator_api/1, + app_test/1]). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["API tests for the cosProperty interfaces", ""]; +all(suite) -> {req, + [mnesia, orber], + {conf, init_all, cases(), finish_all}}. + +cases() -> + [create_setdef_api, create_set_api, define_with_mode_api, define_api, + names_iterator_api, properties_iterator_api, app_test]. + + + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- + +init_per_testcase(_Case, Config) -> + Path = code:which(?MODULE), + code:add_pathz(filename:join(filename:dirname(Path), "idl_output")), + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Path = code:which(?MODULE), + code:del_path(filename:join(filename:dirname(Path), "idl_output")), + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +init_all(Config) -> + Path = code:which(?MODULE), + code:add_pathz(filename:join(filename:dirname(Path), "idl_output")), + orber:jump_start(), + cosProperty:install(), + cosProperty:install_db(), + ?line ?match(ok, application:start(cosProperty)), + if + is_list(Config) -> + Config; + true -> + exit("Config not a list") + end. + +finish_all(Config) -> + Path = code:which(?MODULE), + code:del_path(filename:join(filename:dirname(Path), "idl_output")), + application:stop(cosProperty), + cosProperty:uninstall_db(), + cosProperty:uninstall(), + orber:jump_stop(), + Config. + +%%----------------------------------------------------------------- +%% Tests app file +%%----------------------------------------------------------------- +app_test(doc) -> []; +app_test(suite) -> []; +app_test(_Config) -> + ok=test_server:app_test(cosProperty), + ok. + + +%%----------------------------------------------------------------- +%% CosPropertyService_PropertySetDefFactory API tests +%%----------------------------------------------------------------- +create_setdef_api(doc) -> ["CosPropertyService_PropertySetDefFactory API tests.", + ""]; +create_setdef_api(suite) -> []; +create_setdef_api(_Config) -> + + ValidDefs = [#'CosPropertyService_PropertyDef' + {property_name = ?id1, + property_value = ?val1, + property_mode = normal}, + #'CosPropertyService_PropertyDef' + {property_name = ?id2, + property_value = ?val2, + property_mode = normal}], + InvalidDefs = [#'CosPropertyService_PropertyDef' + {property_name = ?id1, + property_value = ?val1, + property_mode = normal}, + #'CosPropertyService_PropertyDef' + {property_name = ?badid, + property_value = ?badval, + property_mode = normal}], + + Fac = ?match({_,pseudo,_,_,_,_}, cosProperty:start_SetDefFactory()), + + Obj1 = ?match({_,pseudo,_,_,_,_}, 'CosPropertyService_PropertySetDefFactory': + create_propertysetdef(Fac)), + 'CosPropertyService_PropertySetDef_impl':dump(), + corba:dispose(Obj1), + + + Obj2 = ?match({_,pseudo,_,_,_,_}, 'CosPropertyService_PropertySetDefFactory': + create_constrained_propertysetdef(Fac, [tk_short], ValidDefs)), + 'CosPropertyService_PropertySetDef_impl':dump(), + corba:dispose(Obj2), + + %% Both arguments correct but 'ValidDefs' contain other TC:s than + %% tk_null. + ?match({'EXCEPTION', _}, 'CosPropertyService_PropertySetDefFactory': + create_constrained_propertysetdef(Fac, [tk_null], ValidDefs)), + 'CosPropertyService_PropertySetDef_impl':dump(), + + ?match({'EXCEPTION', _}, 'CosPropertyService_PropertySetDefFactory': + create_constrained_propertysetdef(Fac, [tk_null], InvalidDefs)), + 'CosPropertyService_PropertySetDef_impl':dump(), + + %% The allowed TC not supported. + ?match({'EXCEPTION', _}, 'CosPropertyService_PropertySetDefFactory': + create_constrained_propertysetdef(Fac, [tk_noll], ValidDefs)), + 'CosPropertyService_PropertySetDef_impl':dump(), + + Obj4 = ?match({_,pseudo,_,_,_,_}, 'CosPropertyService_PropertySetDefFactory': + create_initial_propertysetdef(Fac, ValidDefs)), + 'CosPropertyService_PropertySetDef_impl':dump(), + corba:dispose(Obj4), + + ?match({'EXCEPTION', _}, 'CosPropertyService_PropertySetDefFactory': + create_initial_propertysetdef(Fac, InvalidDefs)), + + ?match(ok, cosProperty:stop_SetDefFactory(Fac)), + + ok. + + +%%----------------------------------------------------------------- +%% CosPropertyService_PropertySetFactory API tests +%%----------------------------------------------------------------- +create_set_api(doc) -> ["CosPropertyService_PropertySetFactory API tests.", + ""]; +create_set_api(suite) -> []; +create_set_api(_Config) -> + Valid = [#'CosPropertyService_Property' + {property_name = ?id1, + property_value = ?val1}, + #'CosPropertyService_Property' + {property_name = ?id2, + property_value = ?val2}], + Invalid = [#'CosPropertyService_Property' + {property_name = ?id1, + property_value = ?val1}, + #'CosPropertyService_Property' + {property_name = ?badid, + property_value = ?badval}], + + Fac = ?match({_,pseudo,_,_,_,_}, cosProperty:start_SetFactory()), + Obj1 = ?match({_,pseudo,_,_,_,_}, 'CosPropertyService_PropertySetFactory': + create_propertyset(Fac)), + 'CosPropertyService_PropertySetDef_impl':dump(), + corba:dispose(Obj1), + + + Obj2 = ?match({_,pseudo,_,_,_,_}, 'CosPropertyService_PropertySetFactory': + create_constrained_propertyset(Fac, [tk_short], Valid)), + 'CosPropertyService_PropertySetDef_impl':dump(), + corba:dispose(Obj2), + + %% Both arguments correct but 'Valid' contain other TC:s than + %% tk_null. + ?match({'EXCEPTION', _}, 'CosPropertyService_PropertySetFactory': + create_constrained_propertyset(Fac, [tk_null], Valid)), + 'CosPropertyService_PropertySetDef_impl':dump(), + + ?match({'EXCEPTION', _}, 'CosPropertyService_PropertySetFactory': + create_constrained_propertyset(Fac, [tk_null], Invalid)), + 'CosPropertyService_PropertySetDef_impl':dump(), + + %% The allowed TC not supported. + ?match({'EXCEPTION', _}, 'CosPropertyService_PropertySetFactory': + create_constrained_propertyset(Fac, [tk_noll], Valid)), + 'CosPropertyService_PropertySetDef_impl':dump(), + + Obj4 = ?match({_,pseudo,_,_,_,_}, 'CosPropertyService_PropertySetFactory': + create_initial_propertyset(Fac, Valid)), + 'CosPropertyService_PropertySetDef_impl':dump(), + corba:dispose(Obj4), + + ?match({'EXCEPTION', _}, 'CosPropertyService_PropertySetFactory': + create_initial_propertyset(Fac, Invalid)), + ?match(ok, cosProperty:stop_SetFactory(Fac)), + ok. + +%%----------------------------------------------------------------- +%% CosPropertyService_PropertySetDef API tests +%%----------------------------------------------------------------- +define_api(doc) -> ["CosPropertyService_PropertySet API tests.", + ""]; +define_api(suite) -> []; +define_api(_Config) -> + ValidDefs = [#'CosPropertyService_Property' + {property_name = ?id1, + property_value = ?val1}, + #'CosPropertyService_Property' + {property_name = ?id2, + property_value = ?val2}, + #'CosPropertyService_Property' + {property_name = ?id3, + property_value = ?val3}], + + Fac = ?match({_,pseudo,_,_,_,_}, cosProperty:start_SetFactory()), + + io:format("@@@@ Testing PropertySet returned by the factory operation create_propertyset/1 @@@@", []), + Obj = ?match({_,pseudo,_,_,_,_}, 'CosPropertyService_PropertySetFactory': + create_propertyset(Fac)), + ?match(ok, 'CosPropertyService_PropertySet':define_property(Obj, ?id1, ?val1)), + ?match(ok, 'CosPropertyService_PropertySet':define_property(Obj, ?id1, ?val1)), + + ?match(1, 'CosPropertyService_PropertySet':get_number_of_properties(Obj)), + ?match(ok, 'CosPropertyService_PropertySet': + define_properties(Obj, [#'CosPropertyService_Property'{property_name = ?id2, + property_value = ?val2}, + #'CosPropertyService_Property'{property_name = ?id3, + property_value = ?val3}])), + + ?match(3, 'CosPropertyService_PropertySet':get_number_of_properties(Obj)), + + ?match({true, [_]}, 'CosPropertyService_PropertySet':get_properties(Obj, [?id1])), + ?match({true, [_, _, _]}, 'CosPropertyService_PropertySet':get_properties(Obj, [?id1, ?id2, ?id3])), + ?match({false,[_, _, _]}, 'CosPropertyService_PropertySet':get_properties(Obj, [?id1, "wrong", ?id3])), + + ?match(?val2, 'CosPropertyService_PropertySet':get_property_value(Obj, ?id2)), + ?match(ok, 'CosPropertyService_PropertySet':delete_property(Obj, ?id1)), + + ?match(2, 'CosPropertyService_PropertySet':get_number_of_properties(Obj)), + + ?match(ok, 'CosPropertyService_PropertySet':define_property(Obj, ?id1, ?val1)), + ?match(ok, 'CosPropertyService_PropertySet':define_property(Obj, ?id2, ?val2)), + ?match(ok, 'CosPropertyService_PropertySet':define_property(Obj, ?id3, ?val3)), + + ?match(true, 'CosPropertyService_PropertySet':delete_all_properties(Obj)), + ?match(0, 'CosPropertyService_PropertySet':get_number_of_properties(Obj)), + + ?match(ok, 'CosPropertyService_PropertySet': + define_properties(Obj, [#'CosPropertyService_Property'{property_name = ?id1, + property_value = ?val1}, + #'CosPropertyService_Property'{property_name = ?id2, + property_value = ?val2}, + #'CosPropertyService_Property'{property_name = ?id3, + property_value = ?val3}])), + + ?match(3, 'CosPropertyService_PropertySet':get_number_of_properties(Obj)), + ?match(?val2, 'CosPropertyService_PropertySet':get_property_value(Obj, ?id2)), + + ?match({'EXCEPTION',{'CosPropertyService_PropertyNotFound',_}}, + 'CosPropertyService_PropertySet':get_property_value(Obj, "wrongID")), + ?match({'EXCEPTION',{'CosPropertyService_InvalidPropertyName',_}}, + 'CosPropertyService_PropertySet':get_property_value(Obj, "")), + ?match({'EXCEPTION',{'CosPropertyService_InvalidPropertyName',_}}, + 'CosPropertyService_PropertySet':is_property_defined(Obj, "")), + ?match(false, 'CosPropertyService_PropertySet':is_property_defined(Obj, "wrongID")), + ?match(true, 'CosPropertyService_PropertySet':is_property_defined(Obj, ?id1)), + + %% This function is not supported by PropertySet. + ?match({'EXCEPTION',{'NO_IMPLEMENT',_,_,_}}, + 'CosPropertyService_PropertySetDef':get_property_modes(Obj, [?id1, ?id2, ?id3])), + + ?match({'EXCEPTION',{'CosPropertyService_MultipleExceptions',_,_}}, + 'CosPropertyService_PropertySet':delete_properties(Obj, [?id1, ?id2, ?id3, "wrongID"])), + ?match(0, 'CosPropertyService_PropertySet':get_number_of_properties(Obj)), + corba:dispose(Obj), + + io:format("@@@@ Testing PropertySet returned by the factory operation create_constrained_propertyset/3 @@@@", []), + Obj2 = ?match({_,pseudo,_,_,_,_}, 'CosPropertyService_PropertySetFactory': + create_constrained_propertyset(Fac, [tk_short], ValidDefs)), + + ?match(0, 'CosPropertyService_PropertySet':get_number_of_properties(Obj2)), + ?match({'EXCEPTION', {'CosPropertyService_UnsupportedProperty',_}}, + 'CosPropertyService_PropertySet':define_property(Obj2, ?id4, ?val4)), + ?match({'EXCEPTION', {'CosPropertyService_UnsupportedTypeCode',_}}, + 'CosPropertyService_PropertySet':define_property(Obj2, ?id1, ?val5)), + ?match(ok, 'CosPropertyService_PropertySet':define_property(Obj2, ?id1, ?val1)), + ?match(1, 'CosPropertyService_PropertySet':get_number_of_properties(Obj2)), + ?match({'EXCEPTION',{'CosPropertyService_MultipleExceptions',_,_}}, + 'CosPropertyService_PropertySet': + define_properties(Obj2, [#'CosPropertyService_Property'{property_name = ?id2, + property_value = ?val2}, + #'CosPropertyService_Property'{property_name = ?id3, + property_value = ?val3}, + #'CosPropertyService_Property'{property_name = "wrongId", + property_value = ?val2}])), + ?match(ok,'CosPropertyService_PropertySet': + define_properties(Obj2, [#'CosPropertyService_Property'{property_name = ?id2, + property_value = ?val2}, + #'CosPropertyService_Property'{property_name = ?id3, + property_value = ?val3}])), + ?match(3, 'CosPropertyService_PropertySet':get_number_of_properties(Obj2)), + ?match({'EXCEPTION',{'CosPropertyService_PropertyNotFound',_}}, + 'CosPropertyService_PropertySet':get_property_value(Obj2, "wrongID")), + ?match(?val2, 'CosPropertyService_PropertySet':get_property_value(Obj2, ?id2)), + ?match({'EXCEPTION',{'CosPropertyService_InvalidPropertyName',_}}, + 'CosPropertyService_PropertySet':get_property_value(Obj2, "")), + ?match({'EXCEPTION',{'CosPropertyService_InvalidPropertyName',_}}, + 'CosPropertyService_PropertySet':is_property_defined(Obj2, "")), + ?match(false, 'CosPropertyService_PropertySet':is_property_defined(Obj2, "wrongID")), + ?match(true, 'CosPropertyService_PropertySet':is_property_defined(Obj2, ?id1)), + + + ?match({'EXCEPTION',{'CosPropertyService_PropertyNotFound',_}}, + 'CosPropertyService_PropertySet':delete_property(Obj2, "wrongID")), + ?match(3, 'CosPropertyService_PropertySet':get_number_of_properties(Obj2)), + ?match(ok, 'CosPropertyService_PropertySet':delete_property(Obj2, ?id1)), + ?match(2, 'CosPropertyService_PropertySet':get_number_of_properties(Obj2)), + + ?match(ok, 'CosPropertyService_PropertySet':delete_properties(Obj2, [?id2])), + ?match(1, 'CosPropertyService_PropertySet':get_number_of_properties(Obj2)), + + ?match({'EXCEPTION',{'CosPropertyService_MultipleExceptions',_,_}}, + 'CosPropertyService_PropertySet':delete_properties(Obj2, [?id3, "wrongID"])), + ?match(0, 'CosPropertyService_PropertySet':get_number_of_properties(Obj2)), + corba:dispose(Obj2), + + io:format("@@@@ Testing PropertySet returned by the factory operation create_initial_propertyset/2 @@@@", []), + Obj3 = ?match({_,pseudo,_,_,_,_}, 'CosPropertyService_PropertySetFactory': + create_initial_propertyset(Fac, ValidDefs)), + ?match(3, 'CosPropertyService_PropertySet':get_number_of_properties(Obj3)), + + ?match(ok, 'CosPropertyService_PropertySet':define_property(Obj3, ?id4, ?val4)), + ?match(4, 'CosPropertyService_PropertySet':get_number_of_properties(Obj3)), + + ?match(ok,'CosPropertyService_PropertySet': + define_properties(Obj3, [#'CosPropertyService_Property'{property_name = ?id5, + property_value = ?val5}])), + + ?match(5, 'CosPropertyService_PropertySet':get_number_of_properties(Obj3)), + + ?match({'EXCEPTION',{'CosPropertyService_PropertyNotFound',_}}, + 'CosPropertyService_PropertySet':get_property_value(Obj3, "wrongID")), + ?match(?val2, 'CosPropertyService_PropertySet':get_property_value(Obj3, ?id2)), + ?match({'EXCEPTION',{'CosPropertyService_InvalidPropertyName',_}}, + 'CosPropertyService_PropertySet':get_property_value(Obj3, "")), + ?match({'EXCEPTION',{'CosPropertyService_InvalidPropertyName',_}}, + 'CosPropertyService_PropertySet':is_property_defined(Obj3, "")), + ?match(false, 'CosPropertyService_PropertySet':is_property_defined(Obj3, "wrongID")), + ?match(true, 'CosPropertyService_PropertySet':is_property_defined(Obj3, ?id1)), + + ?match({'EXCEPTION',{'CosPropertyService_PropertyNotFound',_}}, + 'CosPropertyService_PropertySet':delete_property(Obj3, "wrongId")), + ?match(ok, 'CosPropertyService_PropertySet':delete_property(Obj3, ?id5)), + ?match(4, 'CosPropertyService_PropertySet':get_number_of_properties(Obj3)), + + ?match({'EXCEPTION',{'CosPropertyService_MultipleExceptions',_,_}}, + 'CosPropertyService_PropertySet':delete_properties(Obj3, [?id1, ?id2, ?id3, "wrongID"])), + ?match(1, 'CosPropertyService_PropertySet':get_number_of_properties(Obj3)), + + ?match(true, 'CosPropertyService_PropertySet':delete_all_properties(Obj3)), + ?match(0, 'CosPropertyService_PropertySet':get_number_of_properties(Obj3)), + + corba:dispose(Obj3), + ?match(ok, cosProperty:stop_SetFactory(Fac)), + + ok. + +%%----------------------------------------------------------------- +%% CosPropertyService_PropertySetDef API tests +%%----------------------------------------------------------------- +define_with_mode_api(doc) -> ["CosPropertyService_PropertySetDef API tests.", + ""]; +define_with_mode_api(suite) -> []; +define_with_mode_api(_Config) -> + ValidDefs = [#'CosPropertyService_PropertyDef' + {property_name = ?id1, + property_value = ?val1, + property_mode = normal}, + #'CosPropertyService_PropertyDef' + {property_name = ?id2, + property_value = ?val2, + property_mode = normal}, + #'CosPropertyService_PropertyDef' + {property_name = ?id3, + property_value = ?val3, + property_mode = normal}], + + Fac = ?match({_,pseudo,_,_,_,_}, cosProperty:start_SetDefFactory()), + + io:format("@@@@ Testing PropertySetDef returned by the factory operation create_propertysetdef/1 @@@@", []), + Obj = ?match({_,pseudo,_,_,_,_}, 'CosPropertyService_PropertySetDefFactory': + create_propertysetdef(Fac)), + + %% Initally no prop's created and no restrictions at all + ?match(0, 'CosPropertyService_PropertySetDef':get_number_of_properties(Obj)), + ?match({ok, []}, 'CosPropertyService_PropertySetDef':get_allowed_property_types(Obj)), + ?match({ok, []}, 'CosPropertyService_PropertySetDef':get_allowed_properties(Obj)), + + %% Add two properties. + ?match(ok, 'CosPropertyService_PropertySetDef':define_property_with_mode(Obj, ?id4, ?val4, read_only)), + ?match(ok, 'CosPropertyService_PropertySetDef':define_property_with_mode(Obj, ?id5, ?val5, normal)), + %% Try to add the same property again (shouldn't add another since using the sam Id). + ?match(ok, 'CosPropertyService_PropertySetDef':define_property_with_mode(Obj, ?id5, ?val5, normal)), + + %% Try to add another identical proprty with wrong TC. + ?match({'EXCEPTION',{'CosPropertyService_ConflictingProperty',_}}, + 'CosPropertyService_PropertySetDef':define_property_with_mode(Obj, ?id5, ?val4, normal)), + + + %% Should be two now. + ?match(2, 'CosPropertyService_PropertySetDef':get_number_of_properties(Obj)), + + ?match(read_only, 'CosPropertyService_PropertySetDef':get_property_mode(Obj, ?id4)), + ?match(normal, 'CosPropertyService_PropertySetDef':get_property_mode(Obj, ?id5)), + ?match(ok, 'CosPropertyService_PropertySetDef': + define_properties_with_modes(Obj, + [#'CosPropertyService_PropertyDef'{property_name = ?id1, + property_value = ?val1, + property_mode = normal}, + #'CosPropertyService_PropertyDef'{property_name = ?id2, + property_value = ?val2, + property_mode = normal}, + #'CosPropertyService_PropertyDef'{property_name = ?id3, + property_value = ?val3, + property_mode = normal}])), + %% Should be five now. + ?match(5, 'CosPropertyService_PropertySetDef':get_number_of_properties(Obj)), + ?match({true, [_,_]}, 'CosPropertyService_PropertySetDef':get_property_modes(Obj, [?id1, ?id3])), + ?match({false, [_,_,_]}, 'CosPropertyService_PropertySetDef':get_property_modes(Obj, [?id1, ?id3, "wrongID"])), + + ?match(ok, 'CosPropertyService_PropertySetDef':set_property_mode(Obj, ?id1, read_only)), + ?match(read_only, 'CosPropertyService_PropertySetDef':get_property_mode(Obj, ?id1)), + + ?match({'EXCEPTION',{'CosPropertyService_PropertyNotFound',_}}, + 'CosPropertyService_PropertySetDef':set_property_mode(Obj, "wrongID", read_only)), + + ?match({'EXCEPTION',{'CosPropertyService_MultipleExceptions',_,_}}, + 'CosPropertyService_PropertySetDef': + set_property_modes(Obj, + [#'CosPropertyService_PropertyMode'{property_name = ?id2, + property_mode = read_only}, + #'CosPropertyService_PropertyMode'{property_name = ?id3, + property_mode = read_only}, + #'CosPropertyService_PropertyMode'{property_name = "wrongID", + property_mode = read_only}])), + ?match(normal, 'CosPropertyService_PropertySetDef':get_property_mode(Obj, ?id2)), + ?match(ok, + 'CosPropertyService_PropertySetDef': + set_property_modes(Obj, + [#'CosPropertyService_PropertyMode'{property_name = ?id2, + property_mode = read_only}, + #'CosPropertyService_PropertyMode'{property_name = ?id3, + property_mode = read_only}])), + ?match(read_only, 'CosPropertyService_PropertySetDef':get_property_mode(Obj, ?id2)), + + corba:dispose(Obj), + + + io:format("@@@@ Testing PropertySetDef returned by the factory operation create_constrained_propertysetdef/3 @@@@", []), + Obj2 = ?match({_,pseudo,_,_,_,_}, 'CosPropertyService_PropertySetDefFactory': + create_constrained_propertysetdef(Fac, [tk_short], ValidDefs)), + + %% Initally no prop's created and the restrictions that only Properties eq. to ValidDefs + %% may be handled. + ?match(0, 'CosPropertyService_PropertySetDef':get_number_of_properties(Obj2)), + ?match({ok, [tk_short]}, 'CosPropertyService_PropertySetDef':get_allowed_property_types(Obj2)), + %% We cannot be sure in which order it's returned. Hmm, that's not really true but it + %% may change in the future. + ?match({ok, [_,_,_]}, 'CosPropertyService_PropertySetDef':get_allowed_properties(Obj2)), + %% Try to add a Property with and Id not eq. to ?id1, ?id2 or ?id3; must fail. + ?match({'EXCEPTION', {'CosPropertyService_UnsupportedProperty',_}}, + 'CosPropertyService_PropertySetDef':define_property_with_mode(Obj2, ?id4, ?val4, read_only)), + %% To be sure that nothing was updated. + ?match(0, 'CosPropertyService_PropertySetDef':get_number_of_properties(Obj2)), + %% Add a valid Property. + ?match(ok, 'CosPropertyService_PropertySetDef':define_property_with_mode(Obj2, ?id1, ?val1, normal)), + ?match(1, 'CosPropertyService_PropertySetDef':get_number_of_properties(Obj2)), + %% Add a sequence of 1 valid and one invalid Prop's + ?match({'EXCEPTION', {'CosPropertyService_MultipleExceptions',_,_}}, + 'CosPropertyService_PropertySetDef': + define_properties_with_modes(Obj2, + [#'CosPropertyService_PropertyDef'{property_name = ?id2, + property_value = ?val2, + property_mode = normal}, + #'CosPropertyService_PropertyDef'{property_name = "wrongID", + property_value = ?val2, + property_mode = normal}])), + %% One should be added. + ?match(1, 'CosPropertyService_PropertySetDef':get_number_of_properties(Obj2)), + ?match(ok, 'CosPropertyService_PropertySetDef': + define_properties_with_modes(Obj2, + [#'CosPropertyService_PropertyDef'{property_name = ?id3, + property_value = ?val3, + property_mode = normal}])), + %% Add a sequence of 1 valid Prop. + ?match(2, 'CosPropertyService_PropertySetDef':get_number_of_properties(Obj2)), + ?match(normal, 'CosPropertyService_PropertySetDef':get_property_mode(Obj2, ?id1)), + ?match(normal, 'CosPropertyService_PropertySetDef':get_property_mode(Obj2, ?id3)), + + + ?match({true, [_,_]}, 'CosPropertyService_PropertySetDef':get_property_modes(Obj2, [?id1, ?id3])), + ?match({false, [_,_,_]}, 'CosPropertyService_PropertySetDef':get_property_modes(Obj2, [?id1, ?id3, "wrongID"])), + + ?match(ok, 'CosPropertyService_PropertySetDef':set_property_mode(Obj2, ?id1, read_only)), + ?match(read_only, 'CosPropertyService_PropertySetDef':get_property_mode(Obj2, ?id1)), + ?match(ok, 'CosPropertyService_PropertySetDef': + set_property_modes(Obj2, + [#'CosPropertyService_PropertyMode'{property_name = ?id1, + property_mode = read_only}, + #'CosPropertyService_PropertyMode'{property_name = ?id3, + property_mode = read_only}])), + ?match(read_only, 'CosPropertyService_PropertySetDef':get_property_mode(Obj2, ?id1)), + ?match(read_only, 'CosPropertyService_PropertySetDef':get_property_mode(Obj2, ?id3)), + ?match({'EXCEPTION',{'CosPropertyService_MultipleExceptions',_,_}}, + 'CosPropertyService_PropertySetDef': + set_property_modes(Obj2, + [#'CosPropertyService_PropertyMode'{property_name = ?id1, + property_mode = normal}, + #'CosPropertyService_PropertyMode'{property_name = ?id3, + property_mode = normal}, + #'CosPropertyService_PropertyMode'{property_name = "wrongID", + property_mode = normal}])), + + ?match(read_only, 'CosPropertyService_PropertySetDef':get_property_mode(Obj2, ?id1)), + ?match(read_only, 'CosPropertyService_PropertySetDef':get_property_mode(Obj2, ?id3)), + corba:dispose(Obj2), + + io:format("@@@@ Testing PropertySetDef returned by the factory operation create_initial_propertysetdef/2 @@@@", []), + Obj3 = ?match({_,pseudo,_,_,_,_}, 'CosPropertyService_PropertySetDefFactory': + create_initial_propertysetdef(Fac, ValidDefs)), + + %% Initally the supplied prop's are created and no restrictions. + ?match(3, 'CosPropertyService_PropertySetDef':get_number_of_properties(Obj3)), + ?match({ok, []}, 'CosPropertyService_PropertySetDef':get_allowed_property_types(Obj3)), + ?match({ok, []}, 'CosPropertyService_PropertySetDef':get_allowed_properties(Obj3)), + + %% Add a new properties an test if they have been inserted. + ?match(ok, 'CosPropertyService_PropertySetDef':define_property_with_mode(Obj3, ?id4, ?val4, read_only)), + ?match(4, 'CosPropertyService_PropertySetDef':get_number_of_properties(Obj3)), + ?match(ok, 'CosPropertyService_PropertySetDef':define_property_with_mode(Obj3, ?id5, ?val5, read_only)), + ?match(5, 'CosPropertyService_PropertySetDef':get_number_of_properties(Obj3)), + + %% Lookup each Property's mode. + ?match(normal, 'CosPropertyService_PropertySetDef':get_property_mode(Obj3, ?id1)), + ?match(normal, 'CosPropertyService_PropertySetDef':get_property_mode(Obj3, ?id2)), + ?match(normal, 'CosPropertyService_PropertySetDef':get_property_mode(Obj3, ?id3)), + ?match(read_only, 'CosPropertyService_PropertySetDef':get_property_mode(Obj3, ?id4)), + ?match(read_only, 'CosPropertyService_PropertySetDef':get_property_mode(Obj3, ?id5)), + + ?match({true, [_,_,_,_,_]}, + 'CosPropertyService_PropertySetDef':get_property_modes(Obj3, [?id1, ?id2, ?id3, ?id4, ?id5])), + ?match({false, [_,_]}, + 'CosPropertyService_PropertySetDef':get_property_modes(Obj3, [?id1, "wrongID"])), + ?match(ok, 'CosPropertyService_PropertySetDef':set_property_mode(Obj3, ?id4, normal)), + ?match(normal, 'CosPropertyService_PropertySetDef':get_property_mode(Obj3, ?id4)), + + ?match(ok, 'CosPropertyService_PropertySetDef': + set_property_modes(Obj3, + [#'CosPropertyService_PropertyMode'{property_name = ?id1, + property_mode = read_only}, + #'CosPropertyService_PropertyMode'{property_name = ?id2, + property_mode = read_only}])), + ?match(read_only, 'CosPropertyService_PropertySetDef':get_property_mode(Obj3, ?id1)), + ?match(read_only, 'CosPropertyService_PropertySetDef':get_property_mode(Obj3, ?id2)), + ?match({'EXCEPTION',{'CosPropertyService_MultipleExceptions',_,_}}, + 'CosPropertyService_PropertySetDef': + set_property_modes(Obj3, + [#'CosPropertyService_PropertyMode'{property_name = ?id3, + property_mode = read_only}, + #'CosPropertyService_PropertyMode'{property_name = ?id4, + property_mode = read_only}, + #'CosPropertyService_PropertyMode'{property_name = "wrongID", + property_mode = read_only}])), + + ?match(normal, 'CosPropertyService_PropertySetDef':get_property_mode(Obj3, ?id3)), + ?match(normal, 'CosPropertyService_PropertySetDef':get_property_mode(Obj3, ?id4)), + + corba:dispose(Obj3), + + ?match(ok, cosProperty:stop_SetDefFactory(Fac)), + + ok. + + + +%%----------------------------------------------------------------- +%% CosPropertyService_PropertyNamesIterator API tests +%%----------------------------------------------------------------- +names_iterator_api(doc) -> ["CosPropertyService_PropertyNamesIterator API tests.", + ""]; +names_iterator_api(suite) -> []; +names_iterator_api(_Config) -> + Fac = ?match({_,pseudo,_,_,_,_}, cosProperty:start_SetFactory()), + Obj = ?match({_,pseudo,_,_,_,_}, 'CosPropertyService_PropertySetFactory': + create_propertyset(Fac)), + ?match(ok, 'CosPropertyService_PropertySet': + define_properties(Obj, [#'CosPropertyService_Property'{property_name = ?id1, + property_value = ?val1}, + #'CosPropertyService_Property'{property_name = ?id2, + property_value = ?val2}, + #'CosPropertyService_Property'{property_name = ?id3, + property_value = ?val3}])), + + ?match(3, 'CosPropertyService_PropertySetDef':get_number_of_properties(Obj)), + {_, _,ItObj} = ?match({ok, [], _}, 'CosPropertyService_PropertySetDef':get_all_property_names(Obj, 0)), + ?match({false, [_,_,_]}, 'CosPropertyService_PropertyNamesIterator':next_n(ItObj,3)), + ?match(ok, 'CosPropertyService_PropertyNamesIterator':reset(ItObj)), + ?match({false, [_,_,_]}, 'CosPropertyService_PropertyNamesIterator':next_n(ItObj,4)), + ?match(ok, 'CosPropertyService_PropertyNamesIterator':reset(ItObj)), + ?match({true, [_]}, 'CosPropertyService_PropertyNamesIterator':next_n(ItObj,1)), + ?match({true, _}, 'CosPropertyService_PropertyNamesIterator':next_one(ItObj)), + ?match({true, _}, 'CosPropertyService_PropertyNamesIterator':next_one(ItObj)), + ?match({false, _}, 'CosPropertyService_PropertyNamesIterator':next_one(ItObj)), + ?match(ok, 'CosPropertyService_PropertyNamesIterator':destroy(ItObj)), + + corba:dispose(Obj), + ok. + +%%----------------------------------------------------------------- +%% CosPropertyService_PropertiesIterator API tests +%%----------------------------------------------------------------- +properties_iterator_api(doc) -> ["CosPropertyService_PropertiesIterator API tests.", + ""]; +properties_iterator_api(suite) -> []; +properties_iterator_api(_Config) -> + Fac = ?match({_,pseudo,_,_,_,_}, cosProperty:start_SetFactory()), + Obj = ?match({_,pseudo,_,_,_,_}, 'CosPropertyService_PropertySetFactory': + create_propertyset(Fac)), + + ?match(ok, 'CosPropertyService_PropertySet': + define_properties(Obj, [#'CosPropertyService_Property'{property_name = ?id1, + property_value = ?val1}, + #'CosPropertyService_Property'{property_name = ?id2, + property_value = ?val2}, + #'CosPropertyService_Property'{property_name = ?id3, + property_value = ?val3}])), + + ?match(3, 'CosPropertyService_PropertySetDef':get_number_of_properties(Obj)), + {_, _,ItObj} = ?match({ok, [], _}, + 'CosPropertyService_PropertySetDef':get_all_properties(Obj, 0)), + ?match({false, [_,_,_]}, 'CosPropertyService_PropertiesIterator':next_n(ItObj,3)), + ?match(ok, 'CosPropertyService_PropertiesIterator':reset(ItObj)), + ?match({false, [_,_,_]}, 'CosPropertyService_PropertiesIterator':next_n(ItObj,4)), + ?match(ok, 'CosPropertyService_PropertiesIterator':reset(ItObj)), + ?match({true, [_]}, 'CosPropertyService_PropertiesIterator':next_n(ItObj,1)), + ?match({true, {'CosPropertyService_Property',_,_}}, + 'CosPropertyService_PropertiesIterator':next_one(ItObj)), + ?match({true, {'CosPropertyService_Property',_,_}}, + 'CosPropertyService_PropertiesIterator':next_one(ItObj)), + ?match({false, {'CosPropertyService_Property',_,_}}, + 'CosPropertyService_PropertiesIterator':next_one(ItObj)), + ?match(ok, 'CosPropertyService_PropertiesIterator':destroy(ItObj)), + corba:dispose(Obj), + ok. + + +%%----------------------------------------------------------------- +%% END OF MODULE +%%----------------------------------------------------------------- diff --git a/lib/cosProperty/vsn.mk b/lib/cosProperty/vsn.mk index c221e6fa4a..3d594a8329 100644 --- a/lib/cosProperty/vsn.mk +++ b/lib/cosProperty/vsn.mk @@ -1,6 +1,8 @@ -COSPROPERTY_VSN = 1.1.11 +COSPROPERTY_VSN = 1.1.12 -TICKETS = OTP-8355 +TICKETS = OTP-8543 + +TICKETS_1.1.11 = OTP-8355 TICKETS_1.1.10 = OTP-8201 diff --git a/lib/cosTime/doc/src/notes.xml b/lib/cosTime/doc/src/notes.xml index 9f23a8633c..40ebf42753 100644 --- a/lib/cosTime/doc/src/notes.xml +++ b/lib/cosTime/doc/src/notes.xml @@ -4,7 +4,7 @@ <chapter> <header> <copyright> - <year>2000</year><year>2009</year> + <year>2000</year><year>2010</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -13,12 +13,12 @@ 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. - + </legalnotice> <title>cosTime Release Notes</title> @@ -33,6 +33,22 @@ </header> <section> + <title>cosTime 1.1.9</title> + + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p> + Test suites published.</p> + <p> + Own Id: OTP-8543 Aux Id:</p> + </item> + </list> + </section> + </section> + + <section> <title>cosTime 1.1.8</title> <section> diff --git a/lib/cosTime/test/Makefile b/lib/cosTime/test/Makefile new file mode 100644 index 0000000000..fde5c4facc --- /dev/null +++ b/lib/cosTime/test/Makefile @@ -0,0 +1,135 @@ +# +# %CopyrightBegin% +# +# Copyright Ericsson AB 2000-2009. All Rights Reserved. +# +# The contents of this file are subject to the Erlang Public License, +# Version 1.1, (the "License"); you may not use this file except in +# compliance with the License. You should have received a copy of the +# Erlang Public License along with this software. If not, it can be +# retrieved online at http://www.erlang.org/. +# +# Software distributed under the License is distributed on an "AS IS" +# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +# the License for the specific language governing rights and limitations +# under the License. +# +# %CopyrightEnd% +# +# +include $(ERL_TOP)/make/target.mk +include $(ERL_TOP)/make/$(TARGET)/otp.mk + +# ---------------------------------------------------- +# Application version +# ---------------------------------------------------- +include ../vsn.mk +VSN=$(COSTIME_VSN) +# ---------------------------------------------------- +# Release directory specification +# ---------------------------------------------------- +RELSYSDIR = $(RELEASE_PATH)/cosTime_test + +# ---------------------------------------------------- +# Target Specs +# ---------------------------------------------------- +TEST_SPEC_FILE = cosTime.spec + + +IDL_FILES = + +IDLOUTDIR = idl_output + +MODULES = \ + time_SUITE \ + generated_SUITE + +GEN_MODULES = \ + +GEN_HRL_FILES = \ + +ERL_FILES = $(MODULES:%=%.erl) + +HRL_FILES = + +GEN_FILES = \ + $(GEN_HRL_FILES:%=$(IDLOUTDIR)/%) \ + $(GEN_MODULES:%=$(IDLOUTDIR)/%.erl) + +GEN_TARGET_FILES = $(GEN_MODULES:%=$(IDLOUTDIR)/%.$(EMULATOR)) + +SUITE_TARGET_FILES = $(MODULES:%=%.$(EMULATOR)) + +TARGET_FILES = \ + $(GEN_TARGET_FILES) \ + $(SUITE_TARGET_FILES) + + +# ---------------------------------------------------- +# PROGRAMS +# ---------------------------------------------------- +LOCAL_CLASSPATH = $(ERL_TOP)lib/cosTime/priv:$(ERL_TOP)lib/cosTime/test +# ---------------------------------------------------- +# FLAGS +# ---------------------------------------------------- +ERL_IDL_FLAGS += -pa $(ERL_TOP)/lib/cosTime/ebin \ + -pa $(ERL_TOP)/lib/cosTime/src \ + -pa $(ERL_TOP)/lib/cosTime/include \ + -pa $(ERL_TOP)/lib/cosNotification/ebin \ + -pa $(ERL_TOP)/lib/orber/ebin \ + -pa $(ERL_TOP)/lib/ic/ebin + +ERL_COMPILE_FLAGS += \ + $(ERL_IDL_FLAGS) \ + -pa $(ERL_TOP)/lib/orber/include \ + -pa $(ERL_TOP)/lib/cosNotification/include \ + -pa $(ERL_TOP)/internal_tools/test_server/ebin \ + -pa $(ERL_TOP)/lib/cosTime/ebin \ + -pa $(ERL_TOP)/lib/cosTime/include \ + -pa $(ERL_TOP)/lib/cosTime/test/idl_output \ + -I$(ERL_TOP)/lib/orber/include \ + -I$(ERL_TOP)/lib/cosNotification/include \ + -I$(ERL_TOP)/lib/cosTime/src \ + -I$(ERL_TOP)/lib/cosTime/include \ + -I$(ERL_TOP)/lib/cosTime \ + -I$(ERL_TOP)/lib/cosTime/test/$(IDLOUTDIR) \ + -I$(ERL_TOP)/lib/test_server/include + +# ---------------------------------------------------- +# Targets +# ---------------------------------------------------- + + +tests debug opt: $(TARGET_FILES) + +clean: + rm -f idl_output/* + rm -f $(TARGET_FILES) + rm -f errs core *~ + +docs: + +# ---------------------------------------------------- +# Special Targets +# ---------------------------------------------------- + +# ---------------------------------------------------- +# Release Targets +# ---------------------------------------------------- +# We don't copy generated intermediate erlang and hrl files + +include $(ERL_TOP)/make/otp_release_targets.mk + +release_spec: + +release_docs_spec: + +release_tests_spec: tests + $(INSTALL_DIR) $(RELSYSDIR) + $(INSTALL_DATA) $(IDL_FILES) $(TEST_SPEC_FILE) \ + $(ERL_FILES) $(RELSYSDIR) + $(INSTALL_DATA) $(SUITE_TARGET_FILES) $(RELSYSDIR) +# $(INSTALL_DIR) $(RELSYSDIR)/$(IDLOUTDIR) +# $(INSTALL_DATA) $(GEN_TARGET_FILES) $(GEN_FILES) \ +# $(RELSYSDIR)/$(IDLOUTDIR) + diff --git a/lib/cosTime/test/cosTime.spec b/lib/cosTime/test/cosTime.spec new file mode 100644 index 0000000000..3f50946043 --- /dev/null +++ b/lib/cosTime/test/cosTime.spec @@ -0,0 +1,19 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2000-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% +%% +{topcase, {dir, "../cosTime_test"}}. diff --git a/lib/cosTime/test/generated_SUITE.erl b/lib/cosTime/test/generated_SUITE.erl new file mode 100644 index 0000000000..3a2153528f --- /dev/null +++ b/lib/cosTime/test/generated_SUITE.erl @@ -0,0 +1,288 @@ +%%----------------------------------------------------------------- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2004-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%----------------------------------------------------------------- +%% File : generated_SUITE.erl +%% Purpose : +%%----------------------------------------------------------------- + +-module(generated_SUITE). + +-include("test_server.hrl"). +-include_lib("orber/include/corba.hrl"). + +-define(default_timeout, ?t:minutes(3)). + +-define(match(ExpectedRes, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS) + end + end()). + +-define(nomatch(Not, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + Not -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS); + _ -> + AcTuAlReS + end + end()). + + +-define(checktc(_Op), + fun(TC) -> + case orber_tc:check_tc(TC) of + false -> + io:format("###### ERROR ERROR ######~n~p - ~p~n", [Op, TC]), + ?line exit(TC); + true -> + true + end + end). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1]). + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- +-export([]). +-compile(export_all). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["This suite is for testing IC generated files"]; +all(suite) -> + ['TimeBase_IntervalT', 'TimeBase_UtcT', 'CosTime_TimeUnavailable', + 'CosTimerEvent_TimerEventT', 'CosTime_TIO', 'CosTime_TimeService', + 'CosTime_UTO', 'CosTimerEvent_TimerEventHandler', + 'CosTimerEvent_TimerEventService']. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- +init_per_testcase(_Case, Config) -> + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'TimeBase_IntervalT' +%% Description: +%%----------------------------------------------------------------- +'TimeBase_IntervalT'(doc) -> ["TimeBase_IntervalT"]; +'TimeBase_IntervalT'(suite) -> []; +'TimeBase_IntervalT'(_) -> + ?match(true, orber_tc:check_tc('TimeBase_IntervalT':tc())), + ?match("IDL:omg.org/TimeBase/IntervalT:1.0", + 'TimeBase_IntervalT':id()), + ?match("TimeBase_IntervalT", + 'TimeBase_IntervalT':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'TimeBase_UtcT' +%% Description: +%%----------------------------------------------------------------- +'TimeBase_UtcT'(doc) -> ["TimeBase_UtcT"]; +'TimeBase_UtcT'(suite) -> []; +'TimeBase_UtcT'(_) -> + ?match(true, orber_tc:check_tc('TimeBase_UtcT':tc())), + ?match("IDL:omg.org/TimeBase/UtcT:1.0", + 'TimeBase_UtcT':id()), + ?match("TimeBase_UtcT", + 'TimeBase_UtcT':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosTime_TimeUnavailable' +%% Description: +%%----------------------------------------------------------------- +'CosTime_TimeUnavailable'(doc) -> ["CosTime_TimeUnavailable"]; +'CosTime_TimeUnavailable'(suite) -> []; +'CosTime_TimeUnavailable'(_) -> + ?match(true, orber_tc:check_tc('CosTime_TimeUnavailable':tc())), + ?match("IDL:omg.org/CosTime/TimeUnavailable:1.0", + 'CosTime_TimeUnavailable':id()), + ?match("CosTime_TimeUnavailable", + 'CosTime_TimeUnavailable':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosTimerEvent_TimerEventT' +%% Description: +%%----------------------------------------------------------------- +'CosTimerEvent_TimerEventT'(doc) -> ["CosTimerEvent_TimerEventT"]; +'CosTimerEvent_TimerEventT'(suite) -> []; +'CosTimerEvent_TimerEventT'(_) -> + ?match(true, orber_tc:check_tc('CosTimerEvent_TimerEventT':tc())), + ?match("IDL:omg.org/CosTimerEvent/TimerEventT:1.0", + 'CosTimerEvent_TimerEventT':id()), + ?match("CosTimerEvent_TimerEventT", + 'CosTimerEvent_TimerEventT':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosTime_TIO' +%% Description: +%%----------------------------------------------------------------- +'CosTime_TIO'(doc) -> ["CosTime_TIO"]; +'CosTime_TIO'(suite) -> []; +'CosTime_TIO'(_) -> + ?nomatch(undefined, 'CosTime_TIO':oe_tc('_get_time_interval')), + ?nomatch(undefined, 'CosTime_TIO':oe_tc(spans)), + ?nomatch(undefined, 'CosTime_TIO':oe_tc(overlaps)), + ?nomatch(undefined, 'CosTime_TIO':oe_tc(time)), + ?match(undefined, 'CosTime_TIO':oe_tc(undefined)), + ?match([_|_], 'CosTime_TIO':oe_get_interface()), + ?match("IDL:omg.org/CosTime/TIO:1.0", 'CosTime_TIO':typeID()), + check_tc('CosTime_TIO':oe_get_interface()), + ?match(true, 'CosTime_TIO':oe_is_a('CosTime_TIO':typeID())), + ?match(false, 'CosTime_TIO':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosTime_TimeService' +%% Description: +%%----------------------------------------------------------------- +'CosTime_TimeService'(doc) -> ["CosTime_TimeService"]; +'CosTime_TimeService'(suite) -> []; +'CosTime_TimeService'(_) -> + ?nomatch(undefined, 'CosTime_TimeService':oe_tc(universal_time)), + ?nomatch(undefined, 'CosTime_TimeService':oe_tc(secure_universal_time)), + ?nomatch(undefined, 'CosTime_TimeService':oe_tc(new_universal_time)), + ?nomatch(undefined, 'CosTime_TimeService':oe_tc(uto_from_utc)), + ?nomatch(undefined, 'CosTime_TimeService':oe_tc(new_interval)), + ?match(undefined, 'CosTime_TimeService':oe_tc(undefined)), + ?match([_|_], 'CosTime_TimeService':oe_get_interface()), + ?match("IDL:omg.org/CosTime/TimeService:1.0", + 'CosTime_TimeService':typeID()), + check_tc('CosTime_TimeService':oe_get_interface()), + ?match(true, 'CosTime_TimeService':oe_is_a('CosTime_TimeService':typeID())), + ?match(false, 'CosTime_TimeService':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosTime_UTO' +%% Description: +%%----------------------------------------------------------------- +'CosTime_UTO'(doc) -> ["CosTime_UTO"]; +'CosTime_UTO'(suite) -> []; +'CosTime_UTO'(_) -> + ?nomatch(undefined, 'CosTime_UTO':oe_tc('_get_time')), + ?nomatch(undefined, 'CosTime_UTO':oe_tc('_get_inaccuracy')), + ?nomatch(undefined, 'CosTime_UTO':oe_tc('_get_tdf')), + ?nomatch(undefined, 'CosTime_UTO':oe_tc('_get_utc_time')), + ?nomatch(undefined, 'CosTime_UTO':oe_tc(absolute_time)), + ?nomatch(undefined, 'CosTime_UTO':oe_tc(compare_time)), + ?nomatch(undefined, 'CosTime_UTO':oe_tc(time_to_interval)), + ?nomatch(undefined, 'CosTime_UTO':oe_tc(interval)), + ?match(undefined, 'CosTime_UTO':oe_tc(undefined)), + ?match([_|_], 'CosTime_UTO':oe_get_interface()), + ?match("IDL:omg.org/CosTime/UTO:1.0", 'CosTime_UTO':typeID()), + check_tc('CosTime_UTO':oe_get_interface()), + ?match(true, 'CosTime_UTO':oe_is_a('CosTime_UTO':typeID())), + ?match(false, 'CosTime_UTO':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosTimerEvent_TimerEventHandler' +%% Description: +%%----------------------------------------------------------------- +'CosTimerEvent_TimerEventHandler'(doc) -> ["CosTimerEvent_TimerEventHandler"]; +'CosTimerEvent_TimerEventHandler'(suite) -> []; +'CosTimerEvent_TimerEventHandler'(_) -> + ?nomatch(undefined, 'CosTimerEvent_TimerEventHandler':oe_tc('_get_status')), + ?nomatch(undefined, 'CosTimerEvent_TimerEventHandler':oe_tc(time_set)), + ?nomatch(undefined, 'CosTimerEvent_TimerEventHandler':oe_tc(set_timer)), + ?nomatch(undefined, 'CosTimerEvent_TimerEventHandler':oe_tc(cancel_timer)), + ?nomatch(undefined, 'CosTimerEvent_TimerEventHandler':oe_tc(set_data)), + ?match(undefined, 'CosTimerEvent_TimerEventHandler':oe_tc(undefined)), + ?match([_|_], 'CosTimerEvent_TimerEventHandler':oe_get_interface()), + ?match("IDL:omg.org/CosTimerEvent/TimerEventHandler:1.0", + 'CosTimerEvent_TimerEventHandler':typeID()), + check_tc('CosTimerEvent_TimerEventHandler':oe_get_interface()), + ?match(true, 'CosTimerEvent_TimerEventHandler':oe_is_a('CosTimerEvent_TimerEventHandler':typeID())), + ?match(false, 'CosTimerEvent_TimerEventHandler':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosTimerEvent_TimerEventService' +%% Description: +%%----------------------------------------------------------------- +'CosTimerEvent_TimerEventService'(doc) -> ["CosTimerEvent_TimerEventService"]; +'CosTimerEvent_TimerEventService'(suite) -> []; +'CosTimerEvent_TimerEventService'(_) -> + ?nomatch(undefined, 'CosTimerEvent_TimerEventService':oe_tc(register)), + ?nomatch(undefined, 'CosTimerEvent_TimerEventService':oe_tc(unregister)), + ?nomatch(undefined, 'CosTimerEvent_TimerEventService':oe_tc(event_time)), + ?match(undefined, 'CosTimerEvent_TimerEventService':oe_tc(undefined)), + ?match([_|_], 'CosTimerEvent_TimerEventService':oe_get_interface()), + ?match("IDL:omg.org/CosTimerEvent/TimerEventService:1.0", + 'CosTimerEvent_TimerEventService':typeID()), + check_tc('CosTimerEvent_TimerEventService':oe_get_interface()), + ?match(true, 'CosTimerEvent_TimerEventService':oe_is_a('CosTimerEvent_TimerEventService':typeID())), + ?match(false, 'CosTimerEvent_TimerEventService':oe_is_a("wrong")), + ok. + + + + +%%----------------------------------------------------------------- +%% MISC functions +%%----------------------------------------------------------------- +check_tc([]) -> + ok; +check_tc([{Op, {RetType, InParameters, OutParameters}}|T]) -> + io:format("checked - ~s~n", [Op]), + lists:all(?checktc(Op), [RetType|InParameters]), + lists:all(?checktc(Op), OutParameters), + check_tc(T). + + diff --git a/lib/cosTime/test/time_SUITE.erl b/lib/cosTime/test/time_SUITE.erl new file mode 100644 index 0000000000..bb00395885 --- /dev/null +++ b/lib/cosTime/test/time_SUITE.erl @@ -0,0 +1,295 @@ +%%-------------------------------------------------------------------- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2000-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%---------------------------------------------------------------------- +%% File : time_SUITE.erl +%% Purpose : +%%---------------------------------------------------------------------- + +-module(time_SUITE). + + +%%--------------- INCLUDES ----------------------------------- +-include("../src/cosTimeApp.hrl"). + +-include("test_server.hrl"). + +%%--------------- DEFINES ------------------------------------ +-define(default_timeout, ?t:minutes(20)). +-define(match(ExpectedRes, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + io:format("------ CORRECT RESULT ------~n~p~n", + [AcTuAlReS]), + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + exit(AcTuAlReS) + end + end()). + +-define(match_inverse(NotExpectedRes, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + NotExpectedRes -> + io:format("###### ERROR ERROR ######~n ~p~n", + [AcTuAlReS]), + exit(AcTuAlReS); + _ -> + io:format("------ CORRECT RESULT ------~n~p~n", + [AcTuAlReS]), + AcTuAlReS + end + end()). + + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1, cases/0, init_all/1, finish_all/1, time_api/1, timerevent_api/1, + init_per_testcase/2, fin_per_testcase/2, + app_test/1]). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["API tests for the cosTime interfaces", ""]; +all(suite) -> {req, + [mnesia, orber], + {conf, init_all, cases(), finish_all}}. + +cases() -> + [time_api, timerevent_api, app_test]. + + + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- + +init_per_testcase(_Case, Config) -> + Path = code:which(?MODULE), + code:add_pathz(filename:join(filename:dirname(Path), "idl_output")), + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Path = code:which(?MODULE), + code:del_path(filename:join(filename:dirname(Path), "idl_output")), + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +init_all(Config) -> + Path = code:which(?MODULE), + code:add_pathz(filename:join(filename:dirname(Path), "idl_output")), + mnesia:delete_schema([node()]), + mnesia:create_schema([node()]), + orber:install([node()]), + application:start(mnesia), + application:start(orber), + cosNotificationApp:install_event(), + cosNotificationApp:install(), + cosTime:install_time(), + cosTime:install_timerevent(), + if + is_list(Config) -> + Config; + true -> + exit("Config not a list") + end. + +finish_all(Config) -> + Path = code:which(?MODULE), + code:del_path(filename:join(filename:dirname(Path), "idl_output")), + cosTime:uninstall_time(), + cosTime:uninstall_timerevent(), + cosNotificationApp:uninstall(), + cosNotificationApp:uninstall_event(), + application:stop(orber), + application:stop(mnesia), + mnesia:delete_schema([node()]), + Config. + +%%----------------------------------------------------------------- +%% Tests app file +%%----------------------------------------------------------------- +app_test(doc) -> []; +app_test(suite) -> []; +app_test(_Config) -> + ok=test_server:app_test(cosTime), + ok. + +%%----------------------------------------------------------------- +%% CosTime API tests +%%----------------------------------------------------------------- +time_api(doc) -> ["CosTime API tests.", ""]; +time_api(suite) -> []; +time_api(_Config) -> + ?line ?match(ok, application:start(cosTime)), + TS=cosTime:start_time_service(0, 500), + Time=calendar:datetime_to_gregorian_seconds({{1582,1,1},{0,0,0}}), + Inaccuracy = 1000, + Tdf =1, + Utc = #'TimeBase_UtcT'{time=Time, inacclo = ?low_TimeT(Inaccuracy), + inacchi = ?high_TimeT(Inaccuracy), tdf = Tdf}, + ?line UTO1='CosTime_TimeService':new_universal_time(TS, Time, Inaccuracy, Tdf), + ?line UTO2='CosTime_TimeService':uto_from_utc(TS, Utc), + ?line ?match(Time, 'CosTime_UTO':'_get_time'(UTO1)), + ?line ?match(Inaccuracy, 'CosTime_UTO':'_get_inaccuracy'(UTO1)), + ?line ?match(Tdf, 'CosTime_UTO':'_get_tdf'(UTO1)), + ?line ?match(Utc, 'CosTime_UTO':'_get_utc_time'(UTO1)), + + ?line ?match(Time, 'CosTime_UTO':'_get_time'(UTO2)), + ?line ?match(Inaccuracy, 'CosTime_UTO':'_get_inaccuracy'(UTO2)), + ?line ?match(Tdf, 'CosTime_UTO':'_get_tdf'(UTO2)), + ?line ?match(Utc, 'CosTime_UTO':'_get_utc_time'(UTO2)), + + TIO1='CosTime_TimeService':new_interval(TS, 2, 5), + _TIO2='CosTime_TimeService':new_interval(TS, 3, 6), + TIO3='CosTime_TimeService':new_interval(TS, 1, 3), + TIO4='CosTime_TimeService':new_interval(TS, 3, 4), + TIO5='CosTime_TimeService':new_interval(TS, 7, 8), + TIO6='CosTime_TimeService':new_interval(TS, 2, 6), + TIO7='CosTime_TimeService':new_interval(TS, 3, 7), + + ?line {_,TIO8} = ?match({'OTContained', _}, 'CosTime_TIO':overlaps(TIO1, TIO6)), + ?line {_,TIO9} = ?match({'OTContainer', _}, 'CosTime_TIO':overlaps(TIO1, TIO1)), + ?line {_,TIO10} = ?match({'OTContainer', _}, 'CosTime_TIO':overlaps(TIO1, TIO4)), + ?line {_,TIO11} = ?match({'OTOverlap', _}, 'CosTime_TIO':overlaps(TIO1, TIO3)), + ?line {_,TIO12} = ?match({'OTOverlap', _}, 'CosTime_TIO':overlaps(TIO1, TIO7)), + ?line {_,TIO13} = ?match({'OTNoOverlap', _}, 'CosTime_TIO':overlaps(TIO1, TIO5)), + + ?line ?match({'TimeBase_IntervalT',2,5},'CosTime_TIO':'_get_time_interval'(TIO8)), + ?line ?match({'TimeBase_IntervalT',2,5},'CosTime_TIO':'_get_time_interval'(TIO9)), + ?line ?match({'TimeBase_IntervalT',3,4},'CosTime_TIO':'_get_time_interval'(TIO10)), + ?line ?match({'TimeBase_IntervalT',2,3},'CosTime_TIO':'_get_time_interval'(TIO11)), + ?line ?match({'TimeBase_IntervalT',3,5},'CosTime_TIO':'_get_time_interval'(TIO12)), + ?line ?match({'TimeBase_IntervalT',5,7},'CosTime_TIO':'_get_time_interval'(TIO13)), + + ?line UTO3='CosTime_TimeService':new_universal_time(TS, 4, 2, 0), %% 2-6 + ?line UTO4='CosTime_TimeService':new_universal_time(TS, 2, 1, 0), %% 1-3 + ?line UTO5='CosTime_TimeService':new_universal_time(TS, 3, 0, 0), %% 3-3 + ?line UTO6='CosTime_TimeService':new_universal_time(TS, 9, 1, 0), %% 8-10 + ?line UTO7='CosTime_TimeService':new_universal_time(TS, 4, 3, 0), %% 1-7 + ?line UTO8='CosTime_TimeService':new_universal_time(TS, 5, 2, 0), %% 3-7 + + ?line {_,TIO14} = ?match({'OTContained', _}, 'CosTime_TIO':spans(TIO1, UTO7)), + ?line {_,TIO15} = ?match({'OTContainer', _}, 'CosTime_TIO':spans(TIO1, UTO5)), + ?line {_,TIO16} = ?match({'OTOverlap', _}, 'CosTime_TIO':spans(TIO1, UTO4)), + ?line {_,TIO17} = ?match({'OTOverlap', _}, 'CosTime_TIO':spans(TIO1, UTO8)), + ?line {_,TIO18} = ?match({'OTNoOverlap', _}, 'CosTime_TIO':spans(TIO1, UTO6)), + ?line {_,TIO19} = ?match({'OTContained', _}, 'CosTime_TIO':spans(TIO1, UTO3)), + + ?line ?match({'TimeBase_IntervalT',2,5},'CosTime_TIO':'_get_time_interval'(TIO14)), + ?line ?match({'TimeBase_IntervalT',3,3},'CosTime_TIO':'_get_time_interval'(TIO15)), + ?line ?match({'TimeBase_IntervalT',2,3},'CosTime_TIO':'_get_time_interval'(TIO16)), + ?line ?match({'TimeBase_IntervalT',3,5},'CosTime_TIO':'_get_time_interval'(TIO17)), + ?line ?match({'TimeBase_IntervalT',5,8},'CosTime_TIO':'_get_time_interval'(TIO18)), + ?line ?match({'TimeBase_IntervalT',2,5},'CosTime_TIO':'_get_time_interval'(TIO19)), + + + cosTime:stop_time_service(TS), + application:stop(cosTime), + ok. + + +%%----------------------------------------------------------------- +%% CosTimerEvent API tests +%%----------------------------------------------------------------- +timerevent_api(doc) -> ["CosTimerEvent API tests.", ""]; +timerevent_api(suite) -> []; +timerevent_api(_Config) -> + %% Init cosTime apps. + ?line ?match(ok, application:start(cosTime)), + ?line TS=cosTime:start_time_service(0, 500), + ?line TES=cosTime:start_timerevent_service(TS), + + %%----- Initialize the cosNotification application. ----- + ?line cosNotificationApp:start(), + ?line Fac = (catch cosNotificationApp:start_factory([])), + ?line {Ch, _Id1} = (catch 'CosNotifyChannelAdmin_EventChannelFactory':create_channel(Fac, [], [])), + %% Create the Admin objects + ?line {AdminSupplier, _ASID}= ?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_EventChannel':new_for_suppliers(Ch,'OR_OP')), + ?line {AdminConsumer, _ACID}= ?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_EventChannel':new_for_consumers(Ch,'OR_OP')), + + %% Create a push consumer TimerEventService will push events to. + ?line {ProxyPushConsumer,_ID10}= ?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_SupplierAdmin':obtain_notification_push_consumer(AdminSupplier, 'ANY_EVENT')), + + %% Create a pull suppliers so we can check we actually got the event. + ?line {ProxyPullSupplier,_ID1} = ?match({{_,key,_,_,_,_},_}, + 'CosNotifyChannelAdmin_ConsumerAdmin':obtain_notification_pull_supplier(AdminConsumer, 'ANY_EVENT')), + + AnyEvent = any:create(orber_tc:long(), 100), + ?line UTO=?match({_,pseudo,_,_,_,_}, 'CosTime_TimeService':new_universal_time(TS, 10*10000000,1,1)), + ?line EH=?match({_,key,_,_,_,_}, 'CosTimerEvent_TimerEventService':register(TES, ProxyPushConsumer, AnyEvent)), + + ?line ?match('ESTimeCleared','CosTimerEvent_TimerEventHandler':'_get_status'(EH)), + ?line ?match({false,_},'CosTimerEvent_TimerEventHandler':time_set(EH)), + ?line ?match(ok,'CosTimerEvent_TimerEventHandler':set_timer(EH, 'TTRelative', UTO)), + ?line ?match({true,_},'CosTimerEvent_TimerEventHandler':time_set(EH)), + ?line ?match('ESTimeSet','CosTimerEvent_TimerEventHandler':'_get_status'(EH)), + + ?line ?match({{any,tk_null,null}, false}, + 'CosNotifyChannelAdmin_ProxyPullSupplier':try_pull(ProxyPullSupplier)), + + ?line ?match(AnyEvent, 'CosNotifyChannelAdmin_ProxyPullSupplier':pull(ProxyPullSupplier)), + ?line ?match('ESTriggered','CosTimerEvent_TimerEventHandler':'_get_status'(EH)), + + %% It's allowed to send an UTO with time eq. to 0 if the server is TTRelative. + %% When TTAbsolute BAD_PARAM is raised. + ?line UTO2=?match({_,pseudo,_,_,_,_}, 'CosTime_TimeService':new_universal_time(TS, 0,1,1)), + ?line ?match({'EXCEPTION',_},'CosTimerEvent_TimerEventHandler':set_timer(EH, 'TTAbsolute', UTO2)), + ?line ?match(ok,'CosTimerEvent_TimerEventHandler':set_timer(EH, 'TTRelative', UTO2)), + ?line ?match(AnyEvent, 'CosNotifyChannelAdmin_ProxyPullSupplier':pull(ProxyPullSupplier)), + + %% TTPeriodic is defined to be relative, i.e., we can use the tactic as above. + ?line ?match(ok,'CosTimerEvent_TimerEventHandler':set_timer(EH, 'TTPeriodic', UTO2)), + + %% Sleep for UTO*2+4 secs. At this point the Timer should have delivered 2 events. + timer:sleep(24000), + %% Cancel the timer so no more events will be delivered. + ?line ?match(true,'CosTimerEvent_TimerEventHandler':cancel_timer(EH)), + + ?line ?match({AnyEvent, true}, 'CosNotifyChannelAdmin_ProxyPullSupplier':try_pull(ProxyPullSupplier)), + ?line ?match({AnyEvent, true}, 'CosNotifyChannelAdmin_ProxyPullSupplier':try_pull(ProxyPullSupplier)), + ?line ?match({{any,tk_null,null}, false}, + 'CosNotifyChannelAdmin_ProxyPullSupplier':try_pull(ProxyPullSupplier)), + + + + %% Clean up. + cosNotificationApp:stop(), + cosTime:stop_timerevent_service(TES), + cosTime:stop_time_service(TS), + application:stop(cosTime), + ok. + + diff --git a/lib/cosTime/vsn.mk b/lib/cosTime/vsn.mk index db51bf39b9..9d8057e8db 100644 --- a/lib/cosTime/vsn.mk +++ b/lib/cosTime/vsn.mk @@ -1,6 +1,8 @@ -COSTIME_VSN = 1.1.8 +COSTIME_VSN = 1.1.9 -TICKETS = OTP-8355 +TICKETS = OTP-8543 + +TICKETS_1.1.8 = OTP-8355 TICKETS_1.1.7 = OTP-8201 diff --git a/lib/cosTransactions/doc/src/notes.xml b/lib/cosTransactions/doc/src/notes.xml index 77541a9f85..7586e3c13f 100644 --- a/lib/cosTransactions/doc/src/notes.xml +++ b/lib/cosTransactions/doc/src/notes.xml @@ -34,7 +34,17 @@ <section> <title>cosTransactions 1.2.10</title> - + <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p> + Test suites published.</p> + <p> + Own Id: OTP-8543 Aux Id:</p> + </item> + </list> + </section> <section> <title>Fixed Bugs and Malfunctions</title> <list type="bulleted"> diff --git a/lib/cosTransactions/test/Makefile b/lib/cosTransactions/test/Makefile new file mode 100644 index 0000000000..8b1264d404 --- /dev/null +++ b/lib/cosTransactions/test/Makefile @@ -0,0 +1,150 @@ +# +# %CopyrightBegin% +# +# Copyright Ericsson AB 1999-2009. All Rights Reserved. +# +# The contents of this file are subject to the Erlang Public License, +# Version 1.1, (the "License"); you may not use this file except in +# compliance with the License. You should have received a copy of the +# Erlang Public License along with this software. If not, it can be +# retrieved online at http://www.erlang.org/. +# +# Software distributed under the License is distributed on an "AS IS" +# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +# the License for the specific language governing rights and limitations +# under the License. +# +# %CopyrightEnd% +# +# +include $(ERL_TOP)/make/target.mk +include $(ERL_TOP)/make/$(TARGET)/otp.mk + +#ifeq ($(TYPE),debug) +#ERL_COMPILE_FLAGS += -Ddebug -W +#endif + +# ---------------------------------------------------- +# Application version +# ---------------------------------------------------- +include ../vsn.mk +VSN=$(COSTRANSACTIONS_VSN) +# ---------------------------------------------------- +# Release directory specification +# ---------------------------------------------------- +RELSYSDIR = $(RELEASE_PATH)/cosTransactions_test + +# ---------------------------------------------------- +# Target Specs +# ---------------------------------------------------- +TEST_SPEC_FILE = cosTransactions.spec + + +IDL_FILES = \ + etrap_test.idl + +IDLOUTDIR = idl_output + +MODULES = \ + transactions_SUITE \ + etrap_test_server_impl \ + etrap_test_lib \ + generated_SUITE + +GEN_MODULES = \ + oe_etrap_test \ + etrap_test_server + +GEN_HRL_FILES = \ + oe_etrap_test.hrl \ + etrap_test_server.hrl + +ERL_FILES = $(MODULES:%=%.erl) + +HRL_FILES = \ + etrap_test_lib.hrl + +GEN_FILES = \ + $(GEN_HRL_FILES:%=$(IDLOUTDIR)/%) \ + $(GEN_MODULES:%=$(IDLOUTDIR)/%.erl) + +GEN_TARGET_FILES = $(GEN_MODULES:%=$(IDLOUTDIR)/%.$(EMULATOR)) + +SUITE_TARGET_FILES = $(MODULES:%=%.$(EMULATOR)) + +TARGET_FILES = \ + $(GEN_TARGET_FILES) \ + $(SUITE_TARGET_FILES) + + +# ---------------------------------------------------- +# PROGRAMS +# ---------------------------------------------------- +LOCAL_CLASSPATH = $(ERL_TOP)/lib/cosTransactions/priv:$(ERL_TOP)/lib/cosTransactions/test +# ---------------------------------------------------- +# FLAGS +# ---------------------------------------------------- +ERL_IDL_FLAGS += -pa $(ERL_TOP)/lib/cosTransactions/ebin\ + -pa $(ERL_TOP)/lib/orber/ebin \ + -pa $(ERL_TOP)/lib/ic/ebin + +ERL_COMPILE_FLAGS += \ + $(ERL_IDL_FLAGS) \ + -pa $(ERL_TOP)/lib/orber/include \ + -pa $(ERL_TOP)/lib/test_server/ebin \ + -pa $(ERL_TOP)/lib/cosTransactions/ebin \ + -pa $(ERL_TOP)/lib/cosTransactions/test/idl_output \ + -I$(ERL_TOP)/lib/orber/include \ + -I$(ERL_TOP)/lib/cosTransactions \ + -I$(ERL_TOP)/lib/cosTransactions/test/$(IDLOUTDIR) \ + -I$(ERL_TOP)/lib/test_server/include + +# ---------------------------------------------------- +# Targets +# ---------------------------------------------------- + + +tests debug opt: $(TARGET_FILES) + +clean: + rm -f idl_output/* + rm -f $(TARGET_FILES) + rm -f errs core *~ + +#debug: +# @${MAKE} TYPE=debug + +docs: + +# ---------------------------------------------------- +# Special Targets +# ---------------------------------------------------- + +TGT_TEST = \ + $(GEN_HRL_FILES:%=$(IDLOUTDIR)/%) \ + $(GEN_MODULES:%=$(IDLOUTDIR)/%.erl) + +$(TGT_TEST): etrap_test.idl + erlc $(ERL_IDL_FLAGS) -o$(IDLOUTDIR) \ + +'{cfgfile,"etrap_test.cfg"}' etrap_test.idl + +# ---------------------------------------------------- +# Release Targets +# ---------------------------------------------------- +# We don't copy generated intermediate erlang and hrl files + +include $(ERL_TOP)/make/otp_release_targets.mk + +release_spec: + +release_docs_spec: + +release_tests_spec: tests + $(INSTALL_DIR) $(RELSYSDIR) + $(INSTALL_DATA) $(IDL_FILES) $(TEST_SPEC_FILE) \ + $(ERL_FILES) $(HRL_FILES) $(RELSYSDIR) + $(INSTALL_DATA) $(SUITE_TARGET_FILES) $(RELSYSDIR) + $(INSTALL_DIR) $(RELSYSDIR)/$(IDLOUTDIR) + $(INSTALL_DATA) $(GEN_TARGET_FILES) $(GEN_FILES) \ + $(RELSYSDIR)/$(IDLOUTDIR) + diff --git a/lib/cosTransactions/test/cosTransactions.spec b/lib/cosTransactions/test/cosTransactions.spec new file mode 100644 index 0000000000..8ad9259964 --- /dev/null +++ b/lib/cosTransactions/test/cosTransactions.spec @@ -0,0 +1,19 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1999-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% +%% +{topcase, {dir, "../cosTransactions_test"}}. diff --git a/lib/cosTransactions/test/etrap_test.cfg b/lib/cosTransactions/test/etrap_test.cfg new file mode 100644 index 0000000000..4f2b9e125d --- /dev/null +++ b/lib/cosTransactions/test/etrap_test.cfg @@ -0,0 +1,20 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1999-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% +%% +{this, "etrap_test::server"}. +{{handle_info, "etrap_test::server"}, true}. diff --git a/lib/cosTransactions/test/etrap_test.idl b/lib/cosTransactions/test/etrap_test.idl new file mode 100644 index 0000000000..7573cc1a36 --- /dev/null +++ b/lib/cosTransactions/test/etrap_test.idl @@ -0,0 +1,38 @@ +// +// %CopyrightBegin% +// +// Copyright Ericsson AB 1999-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% +// + +#ifndef _TEST_IDL +#define _TEST_IDL +#include <../src/CosTransactions.idl> +module etrap_test { + + // interface server + interface server : + CosTransactions::Coordinator, CosTransactions::SubtransactionAwareResource, + CosTransactions::RecoveryCoordinator, CosTransactions::Control { + }; +// interface Server : +// CosTransactions::Coordinator, CosTransactions::SubtransactionAwareResource, +// CosTransactions::RecoveryCoordinator, CosTransactions::Control, +// CosTransactions::Synchronization { +// }; + +}; // End of test Module + +#endif diff --git a/lib/cosTransactions/test/etrap_test_lib.erl b/lib/cosTransactions/test/etrap_test_lib.erl new file mode 100644 index 0000000000..913a94510f --- /dev/null +++ b/lib/cosTransactions/test/etrap_test_lib.erl @@ -0,0 +1,125 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1999-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% + +-module(etrap_test_lib). + +%%--------------- INCLUDES --------------------------------------------- +-include("etrap_test_lib.hrl"). +-include_lib("cosTransactions/src/ETraP_Common.hrl"). + +%%--------------- EXPORTS ---------------------------------------------- +-export([scratch_debug_fun/0, + activate_debug_fun/5, + update_debug_info/1, + deactivate_debug_fun/3, + eval_debug_fun/4, + set_debug_context/4]). + +%%--------------- CONSTANTS/DEFINITIONS -------------------------------- +-define(DEBUG_TAB, etrap_debug). +-record(debug_info, {id, function, type, file, line}). + +%%--------------- DEBUG FUNCTIONS -------------------------------------- +%% Managing conditional debug functions +%% +%% The main idea with the debug_fun's is to allow test programs +%% to control the internal behaviour of CosTransactions. +%% +%% First should calls to ?eval_debug_fun be inserted at well +%% defined places in CosTransaction's code. E.g. in critical situations +%% of startup, transaction commit, backups etc. +%% +%% Then compile CosTransactions with the compiler option 'debug'. +%% +%% In test programs ?activate_debug_fun should be called +%% in order to bind a fun to the debug identifier stated +%% in the call to ?eval_debug_fun. + +scratch_debug_fun() -> + catch ets:delete(?DEBUG_TAB), + ets:new(?DEBUG_TAB, + [set, public, named_table, {keypos, 2}]). + +activate_debug_fun(FunId, Fun, Type, File, Line) -> + io:format("Activiating ~p RETRIES: ~p WAIT: ~p~n", + [FunId, ?tr_max_retries, ?tr_comm_failure_wait]), + Info = #debug_info{id = FunId, + function = Fun, + type = Type, + file = File, + line = Line}, + update_debug_info(Info). + +update_debug_info(Info) -> + case catch ets:insert(?DEBUG_TAB, Info) of + {'EXIT', _} -> + scratch_debug_fun(), + ets:insert(?DEBUG_TAB, Info); + _ -> + ok + end, + ok. + +deactivate_debug_fun(FunId, _File, _Line) -> + catch ets:delete(?DEBUG_TAB, FunId), + ok. + +eval_debug_fun(FunId, Env, File, Line) -> + case catch ets:lookup(?DEBUG_TAB, FunId) of + [] -> + ok; + [Info] -> + Fun = Info#debug_info.function, + case Info#debug_info.type of + transient -> + deactivate_debug_fun(FunId, File, Line); + _-> + ok + end, + io:format("Running debug fun ~p:~p (LINE: ~p)~n", [File, FunId, Line]), + Fun(Env); + {'EXIT', _R} -> + ok + end. + + +set_debug_context([], [], _, _)-> ok; +set_debug_context([], _, _, _)-> + ets:delete(?DEBUG_TAB), + exit("failed transactions_SUITE. Bad configuration."); +set_debug_context(_, [], _, _)-> + ets:delete(?DEBUG_TAB), + exit("failed transactions_SUITE Bad configuration."); +set_debug_context([RHead|RTail], [CHead|CTail], File, Line)-> + write_context(RHead, CHead, File, Line), + set_debug_context(RTail, CTail, File, Line). + +write_context(_Resource, [], _, _)-> ok; +write_context(Resource, [{Func, Fun, Type}|PTail], File, Line)-> + etrap_test_lib:activate_debug_fun({Resource, Func}, + Fun, Type, + File, Line), + write_context(Resource, PTail, File, Line); +write_context(_,_, _, _) -> + ets:delete(?DEBUG_TAB), + exit("failed transactions_SUITE. Bad configuration."). + + +%%--------------- END OF MODULE ---------------------------------------- diff --git a/lib/cosTransactions/test/etrap_test_lib.hrl b/lib/cosTransactions/test/etrap_test_lib.hrl new file mode 100644 index 0000000000..d488bf9d12 --- /dev/null +++ b/lib/cosTransactions/test/etrap_test_lib.hrl @@ -0,0 +1,100 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1999-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% + +-ifndef(ETRAP_TEST_LIB_HRL). +-define(ETRAP_TEST_LIB_HRL, true). + +-define(match(ExpectedRes, Expr, Msg), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + io:format("~n------ CORRECT RESULT ------~n~p~n~p~n", + [AcTuAlReS, Msg]), + ok; + _ -> + io:format("~n###### ERROR ERROR ######~n~p~n~p~n", + [AcTuAlReS, Msg]), + exit(AcTuAlReS) + end + end()). + +-define(match_inverse(NotExpectedRes, Expr, Msg), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + NotExpectedRes -> + io:format("~n###### ERROR ERROR ######~n ~p~n~p~n", + [AcTuAlReS, Msg]), + exit(AcTuAlReS); + _ -> + io:format("~n------ CORRECT RESULT ------~n~p~n~p~n", + [AcTuAlReS, Msg]), + ok + end + end()). + + +-define(crash_and_recover, fun(_Env)-> exit(crash_and_burn) end). + +-define(crash_no_recovery, fun(Env)-> throw({stop,normal,{Env,state}}) end). + +-define(delay(Time), fun(_Id) -> timer:sleep(Time*1000) end). + +-define(TIMEOUT, 4). +-define(SUP_TEST(Env, Name), + ['etrap_test_server', Env, + [{sup_child, true}, {persistent, true}, + {regname, {global, Name}}]]). + +-define(no_context, [[],[],[], []]). +-define(nop, []). +-define(delay_transient(Tag, Ti), + [{Tag, ?delay(Ti), transient}]). +-define(crash_transient(Tag), + [{Tag, ?crash_and_recover, transient}]). +-define(crash_permanent(Tag), + [{Tag, ?crash_no_recovery, permanent}]). + +%%----------------------------------------------------------- +%% Definition of 'Resource' action. +%% function action reply +%%----------------------------------------------------------- +%% raise #'CosTransactions_HeuristicMixed' {} +-define(rollback_mix, [{rollback, exc, ?tr_mixed}]). +-define(commit_mix, [{commit, exc, ?tr_mixed}]). +-define(prepare_mix, [{prepare, exc, ?tr_mixed}]). +%% raise #'CosTransactions_HeuristicRollback' {} +-define(rollback_rb, [{rollback, exc, ?tr_rollback}]). +-define(commit_rb, [{commit, exc, ?tr_rollback}]). +%% raise #'CosTransactions_HeuristicCommit' {} +-define(rollback_cm, [{rollback, exc, ?tr_commit}]). +-define(commit_cm, [{commit, exc, ?tr_commit}]). +%% delay reply +-define(rollback_delay, [{rollback, delay, ?TIMEOUT*2}]). +-define(commit_delay, [{commit, delay, ?TIMEOUT*2}]). +-define(prepare_delay, [{prepare, delay, ?TIMEOUT*2}]). +%% other reply than default +-define(prepare_commit, [{prepare, reply, 'VoteCommit'}]). +-define(prepare_rollback, [{prepare, stop_reply, 'VoteRollback'}]). + +-endif. + +%%-------------- EOF --------------------------------------------------- diff --git a/lib/cosTransactions/test/etrap_test_server_impl.erl b/lib/cosTransactions/test/etrap_test_server_impl.erl new file mode 100644 index 0000000000..69c823f3ca --- /dev/null +++ b/lib/cosTransactions/test/etrap_test_server_impl.erl @@ -0,0 +1,210 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1999-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(etrap_test_server_impl). + +%%--------------- INCLUDES ----------------------------------- +-include_lib("orber/include/corba.hrl"). +-include_lib("orber/include/ifr_types.hrl"). +%% Local +-include_lib("cosTransactions/src/ETraP_Common.hrl"). +-include_lib("cosTransactions/include/CosTransactions.hrl"). +%%--------------- IMPORTS------------------------------------- +%%--------------- EXPORTS------------------------------------- +-export([prepare/2, + rollback/2, + commit/2, + commit_one_phase/2, + forget/2, +% before_completion/2, +% after_completion/3, + commit_subtransaction/3, + rollback_subtransaction/2]). + + +%%--------------- gen_server specific ------------------------ +-export([init/1, terminate/2]). +-export([handle_call/3, handle_cast/2, handle_info/2, code_change/3]). + +%%------------------------------------------------------------ +%% function : init, terminate +%%------------------------------------------------------------ +init(State) -> + process_flag(trap_exit,true), + io:format("etrap_test_server:init ~p~n", [State]), + ?debug_print("STARTING etrap_test_server( ~p )~n", [State]), + {ok, State}. + +terminate(Reason, _State) -> + io:format("etrap_test_server:terminate ~p~n", [Reason]), + ?debug_print("STOPREASON etrap_test_server( ~p )~n", [Reason]), + ok. + +code_change(_OldVsn, State, _Extra) -> + {ok, State}. +handle_call(_,_, State) -> + {noreply, State}. +handle_cast(_, State) -> + {noreply, State}. +handle_info(_Info, State) -> + {noreply, State}. + +%%-- Inherit from CosTransactions::SubtransactionAwareResource -- +prepare(_Self, State) -> + case ?is_debug_compiled of + true -> + io:format("etrap_test_server:prepare ~p~n", [State]); + _-> + ok + end, +% ?debug_print("etrap_test_server:prepare ~p~n", [State]), + action(prepare, State, {reply, 'VoteCommit', State}). + +rollback(_Self, State) -> + case ?is_debug_compiled of + true -> + io:format("etrap_test_server:rollback ~p~n", [State]); + _-> + ok + end, +% ?debug_print("etrap_test_server:rollback ~p~n", [State]), + case sync_test(State) of + true -> + action(rollback, State, {reply, ok, State}); + _-> + action(rollback, State, {stop, normal, ok, State}) + end. + +commit(_Self, State) -> + case ?is_debug_compiled of + true -> + io:format("etrap_test_server:commit ~p~n", [State]); + _-> + ok + end, +% ?debug_print("etrap_test_server:commit ~p~n", [State]), + case sync_test(State) of + true -> + action(commit, State, {reply, ok, State}); + _-> + action(commit, State, {stop, normal, ok, State}) + end. + +commit_one_phase(_Self, State) -> + case ?is_debug_compiled of + true -> + io:format("etrap_test_server:commit_one_phase ~p~n", [State]); + _-> + ok + end, +% ?debug_print("etrap_test_server:commit_one_phase ~p~n", [State]), + case sync_test(State) of + true -> + {reply, ok, State}; + _-> + {stop, normal, ok, State} + end. + +forget(_Self, State) -> + case ?is_debug_compiled of + true -> + io:format("etrap_test_server:forget ~p~n", [State]); + _-> + ok + end, +% ?debug_print("etrap_test_server:forget ~p~n", [State]), + case sync_test(State) of + true -> + {reply, ok, State}; + _-> + {stop, normal, ok, State} + end. + +commit_subtransaction(_Self, State, Parent) -> + case ?is_debug_compiled of + true -> + io:format("etrap_test_server:commit_subtransaction( ~p )~n", [Parent]); + _-> + ok + end, +% ?debug_print("etrap_test_server:commit_subtransaction( ~p )~n", [Parent]), + {reply, ok, State}. +rollback_subtransaction(_Self, State) -> + case ?is_debug_compiled of + true -> + io:format("etrap_test_server:rollback_subtransaction()~n", []); + _-> + ok + end, +% ?debug_print("etrap_test_server:rollback_subtransaction()~n", []), + {reply, ok, State}. + +%before_completion(_Self, State) -> +% case ?is_debug_compiled of +% true -> +% io:format("etrap_test_server:before_completion()~n", []); +% _-> +% ok +% end, +%% ?debug_print("etrap_test_server:before_completion()~n", []), +% {reply, ok, State}. +%after_completion(_Self, State, Status) -> +% case ?is_debug_compiled of +% true -> +% io:format("etrap_test_server:after_completion( ~p )~n", [Status]); +% _-> +% ok +% end, +%% ?debug_print("etrap_test_server:after_completion( ~p )~n", [Status]), +% {stop, normal, ok, State}. + +%%--------------- LOCAL FUNCTIONS ---------------------------- +action(Key, State, Default) -> + case catch lists:keysearch(Key, 1, State) of + {value,{Key, stop_reply, R}} -> + case sync_test(State) of + true -> + {reply, R, State}; + _-> + {stop, normal, R, State} + end; + {value,{Key, reply, R}} -> + {reply, R, State}; + {value,{Key, exc, E}} -> + corba:raise(E); + {value,{Key, delay, Time}} -> + timer:sleep(Time*1000), + Default; + {value,{Key,Value}} -> + Value; + _ -> + Default + end. + +sync_test(State) -> + case catch lists:keysearch(sync, 1, State) of + {value,{sync, true}} -> + true; + _ -> + false + end. + + +%%--------------- END OF MODULE ------------------------------ + diff --git a/lib/cosTransactions/test/generated_SUITE.erl b/lib/cosTransactions/test/generated_SUITE.erl new file mode 100644 index 0000000000..cc54eb168e --- /dev/null +++ b/lib/cosTransactions/test/generated_SUITE.erl @@ -0,0 +1,564 @@ +%%----------------------------------------------------------------- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2004-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%----------------------------------------------------------------- +%% File : generated_SUITE.erl +%% Purpose : +%% Created : 27 Jan 2004 +%%----------------------------------------------------------------- + +-module(generated_SUITE). + +-include("test_server.hrl"). +-include_lib("orber/include/corba.hrl"). + +-define(default_timeout, ?t:minutes(3)). + +-define(match(ExpectedRes, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS) + end + end()). + +-define(nomatch(Not, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + Not -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS); + _ -> + AcTuAlReS + end + end()). + + +-define(checktc(_Op), + fun(TC) -> + case orber_tc:check_tc(TC) of + false -> + io:format("###### ERROR ERROR ######~n~p - ~p~n", [Op, TC]), + ?line exit(TC); + true -> + true + end + end). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1]). + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- +-export([]). +-compile(export_all). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["This suite is for testing IC generated files"]; +all(suite) -> + ['CosTransactions_Control', 'CosTransactions_Coordinator', + 'CosTransactions_HeuristicCommit', 'CosTransactions_HeuristicHazard', + 'CosTransactions_HeuristicMixed', 'CosTransactions_HeuristicRollback', + 'CosTransactions_Inactive', 'CosTransactions_InvalidControl', + 'CosTransactions_NoTransaction', 'CosTransactions_NotPrepared', + 'CosTransactions_NotSubtransaction', 'CosTransactions_RecoveryCoordinator', + 'CosTransactions_Resource', 'CosTransactions_SubtransactionAwareResource', + 'CosTransactions_SubtransactionsUnavailable', 'CosTransactions_Terminator', + 'CosTransactions_TransactionFactory', 'CosTransactions_Unavailable', + 'CosTransactions_SynchronizationUnavailable', 'CosTransactions_TransIdentity', + 'CosTransactions_PropagationContext', 'CosTransactions_otid_t', + 'CosTransactions_WrongTransaction', 'ETraP_Server']. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- +init_per_testcase(_Case, Config) -> + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosTransactions_HeuristicCommit' +%% Description: +%%----------------------------------------------------------------- +'CosTransactions_HeuristicCommit'(doc) -> ["CosTransactions_HeuristicCommit"]; +'CosTransactions_HeuristicCommit'(suite) -> []; +'CosTransactions_HeuristicCommit'(_) -> + ?match(true, orber_tc:check_tc('CosTransactions_HeuristicCommit':tc())), + ?match("IDL:omg.org/CosTransactions/HeuristicCommit:1.0", + 'CosTransactions_HeuristicCommit':id()), + ?match("CosTransactions_HeuristicCommit", + 'CosTransactions_HeuristicCommit':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosTransactions_HeuristicHazard' +%% Description: +%%----------------------------------------------------------------- +'CosTransactions_HeuristicHazard'(doc) -> ["CosTransactions_HeuristicHazard"]; +'CosTransactions_HeuristicHazard'(suite) -> []; +'CosTransactions_HeuristicHazard'(_) -> + ?match(true, orber_tc:check_tc('CosTransactions_HeuristicHazard':tc())), + ?match("IDL:omg.org/CosTransactions/HeuristicHazard:1.0", + 'CosTransactions_HeuristicHazard':id()), + ?match("CosTransactions_HeuristicHazard", + 'CosTransactions_HeuristicHazard':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosTransactions_HeuristicMixed' +%% Description: +%%----------------------------------------------------------------- +'CosTransactions_HeuristicMixed'(doc) -> ["CosTransactions_HeuristicMixed"]; +'CosTransactions_HeuristicMixed'(suite) -> []; +'CosTransactions_HeuristicMixed'(_) -> + ?match(true, orber_tc:check_tc('CosTransactions_HeuristicMixed':tc())), + ?match("IDL:omg.org/CosTransactions/HeuristicMixed:1.0", + 'CosTransactions_HeuristicMixed':id()), + ?match("CosTransactions_HeuristicMixed", + 'CosTransactions_HeuristicMixed':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosTransactions_HeuristicRollback' +%% Description: +%%----------------------------------------------------------------- +'CosTransactions_HeuristicRollback'(doc) -> ["CosTransactions_HeuristicRollback"]; +'CosTransactions_HeuristicRollback'(suite) -> []; +'CosTransactions_HeuristicRollback'(_) -> + ?match(true, orber_tc:check_tc('CosTransactions_HeuristicRollback':tc())), + ?match("IDL:omg.org/CosTransactions/HeuristicRollback:1.0", + 'CosTransactions_HeuristicRollback':id()), + ?match("CosTransactions_HeuristicRollback", + 'CosTransactions_HeuristicRollback':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosTransactions_Inactive' +%% Description: +%%----------------------------------------------------------------- +'CosTransactions_Inactive'(doc) -> ["CosTransactions_Inactive"]; +'CosTransactions_Inactive'(suite) -> []; +'CosTransactions_Inactive'(_) -> + ?match(true, orber_tc:check_tc('CosTransactions_Inactive':tc())), + ?match("IDL:omg.org/CosTransactions/Inactive:1.0", + 'CosTransactions_Inactive':id()), + ?match("CosTransactions_Inactive", + 'CosTransactions_Inactive':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosTransactions_InvalidControl' +%% Description: +%%----------------------------------------------------------------- +'CosTransactions_InvalidControl'(doc) -> ["CosTransactions_InvalidControl"]; +'CosTransactions_InvalidControl'(suite) -> []; +'CosTransactions_InvalidControl'(_) -> + ?match(true, orber_tc:check_tc('CosTransactions_InvalidControl':tc())), + ?match("IDL:omg.org/CosTransactions/InvalidControl:1.0", + 'CosTransactions_InvalidControl':id()), + ?match("CosTransactions_InvalidControl", + 'CosTransactions_InvalidControl':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosTransactions_NoTransaction' +%% Description: +%%----------------------------------------------------------------- +'CosTransactions_NoTransaction'(doc) -> ["CosTransactions_NoTransaction"]; +'CosTransactions_NoTransaction'(suite) -> []; +'CosTransactions_NoTransaction'(_) -> + ?match(true, orber_tc:check_tc('CosTransactions_NoTransaction':tc())), + ?match("IDL:omg.org/CosTransactions/NoTransaction:1.0", + 'CosTransactions_NoTransaction':id()), + ?match("CosTransactions_NoTransaction", + 'CosTransactions_NoTransaction':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosTransactions_NotPrepared' +%% Description: +%%----------------------------------------------------------------- +'CosTransactions_NotPrepared'(doc) -> ["CosTransactions_NotPrepared"]; +'CosTransactions_NotPrepared'(suite) -> []; +'CosTransactions_NotPrepared'(_) -> + ?match(true, orber_tc:check_tc('CosTransactions_NotPrepared':tc())), + ?match("IDL:omg.org/CosTransactions/NotPrepared:1.0", + 'CosTransactions_NotPrepared':id()), + ?match("CosTransactions_NotPrepared", + 'CosTransactions_NotPrepared':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosTransactions_NotSubtransaction' +%% Description: +%%----------------------------------------------------------------- +'CosTransactions_NotSubtransaction'(doc) -> ["CosTransactions_NotSubtransaction"]; +'CosTransactions_NotSubtransaction'(suite) -> []; +'CosTransactions_NotSubtransaction'(_) -> + ?match(true, orber_tc:check_tc('CosTransactions_NotSubtransaction':tc())), + ?match("IDL:omg.org/CosTransactions/NotSubtransaction:1.0", + 'CosTransactions_NotSubtransaction':id()), + ?match("CosTransactions_NotSubtransaction", + 'CosTransactions_NotSubtransaction':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosTransactions_SubtransactionsUnavailable' +%% Description: +%%----------------------------------------------------------------- +'CosTransactions_SubtransactionsUnavailable'(doc) -> ["CosTransactions_SubtransactionsUnavailable"]; +'CosTransactions_SubtransactionsUnavailable'(suite) -> []; +'CosTransactions_SubtransactionsUnavailable'(_) -> + ?match(true, orber_tc:check_tc('CosTransactions_SubtransactionsUnavailable':tc())), + ?match("IDL:omg.org/CosTransactions/SubtransactionsUnavailable:1.0", + 'CosTransactions_SubtransactionsUnavailable':id()), + ?match("CosTransactions_SubtransactionsUnavailable", + 'CosTransactions_SubtransactionsUnavailable':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosTransactions_Unavailable' +%% Description: +%%----------------------------------------------------------------- +'CosTransactions_Unavailable'(doc) -> ["CosTransactions_Unavailable"]; +'CosTransactions_Unavailable'(suite) -> []; +'CosTransactions_Unavailable'(_) -> + ?match(true, orber_tc:check_tc('CosTransactions_Unavailable':tc())), + ?match("IDL:omg.org/CosTransactions/Unavailable:1.0", + 'CosTransactions_Unavailable':id()), + ?match("CosTransactions_Unavailable", + 'CosTransactions_Unavailable':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosTransactions_SynchronizationUnavailable' +%% Description: +%%----------------------------------------------------------------- +'CosTransactions_SynchronizationUnavailable'(doc) -> ["CosTransactions_SynchronizationUnavailable"]; +'CosTransactions_SynchronizationUnavailable'(suite) -> []; +'CosTransactions_SynchronizationUnavailable'(_) -> + ?match(true, orber_tc:check_tc('CosTransactions_SynchronizationUnavailable':tc())), + ?match("IDL:omg.org/CosTransactions/SynchronizationUnavailable:1.0", + 'CosTransactions_SynchronizationUnavailable':id()), + ?match("CosTransactions_SynchronizationUnavailable", + 'CosTransactions_SynchronizationUnavailable':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosTransactions_TransIdentity' +%% Description: +%%----------------------------------------------------------------- +'CosTransactions_TransIdentity'(doc) -> ["CosTransactions_TransIdentity"]; +'CosTransactions_TransIdentity'(suite) -> []; +'CosTransactions_TransIdentity'(_) -> + ?match(true, orber_tc:check_tc('CosTransactions_TransIdentity':tc())), + ?match("IDL:omg.org/CosTransactions/TransIdentity:1.0", + 'CosTransactions_TransIdentity':id()), + ?match("CosTransactions_TransIdentity", + 'CosTransactions_TransIdentity':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosTransactions_PropagationContext' +%% Description: +%%----------------------------------------------------------------- +'CosTransactions_PropagationContext'(doc) -> ["CosTransactions_PropagationContext"]; +'CosTransactions_PropagationContext'(suite) -> []; +'CosTransactions_PropagationContext'(_) -> + ?match(true, orber_tc:check_tc('CosTransactions_PropagationContext':tc())), + ?match("IDL:omg.org/CosTransactions/PropagationContext:1.0", + 'CosTransactions_PropagationContext':id()), + ?match("CosTransactions_PropagationContext", + 'CosTransactions_PropagationContext':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosTransactions_otid_t' +%% Description: +%%----------------------------------------------------------------- +'CosTransactions_otid_t'(doc) -> ["CosTransactions_otid_t"]; +'CosTransactions_otid_t'(suite) -> []; +'CosTransactions_otid_t'(_) -> + ?match(true, orber_tc:check_tc('CosTransactions_otid_t':tc())), + ?match("IDL:omg.org/CosTransactions/otid_t:1.0", + 'CosTransactions_otid_t':id()), + ?match("CosTransactions_otid_t", + 'CosTransactions_otid_t':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosTransactions_WrongTransaction' +%% Description: +%%----------------------------------------------------------------- +'CosTransactions_WrongTransaction'(doc) -> ["CosTransactions_WrongTransaction"]; +'CosTransactions_WrongTransaction'(suite) -> []; +'CosTransactions_WrongTransaction'(_) -> + ?match(true, orber_tc:check_tc('CosTransactions_WrongTransaction':tc())), + ?match("IDL:omg.org/CosTransactions/WrongTransaction:1.0", + 'CosTransactions_WrongTransaction':id()), + ?match("CosTransactions_WrongTransaction", + 'CosTransactions_WrongTransaction':name()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosTransactions_Control' +%% Description: +%%----------------------------------------------------------------- +'CosTransactions_Control'(doc) -> ["CosTransactions_Control"]; +'CosTransactions_Control'(suite) -> []; +'CosTransactions_Control'(_) -> + ?nomatch(undefined, 'CosTransactions_Control':oe_tc(get_terminator)), + ?nomatch(undefined, 'CosTransactions_Control':oe_tc(get_coordinator)), + ?match(undefined, 'CosTransactions_Control':oe_tc(undefined)), + ?match([_|_], 'CosTransactions_Control':oe_get_interface()), + ?match("IDL:omg.org/CosTransactions/Control:1.0", + 'CosTransactions_Control':typeID()), + check_tc('CosTransactions_Control':oe_get_interface()), + ?match(true, 'CosTransactions_Control':oe_is_a('CosTransactions_Control':typeID())), + ?match(false, 'CosTransactions_Control':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosTransactions_Coordinator' +%% Description: +%%----------------------------------------------------------------- +'CosTransactions_Coordinator'(doc) -> ["CosTransactions_Coordinator"]; +'CosTransactions_Coordinator'(suite) -> []; +'CosTransactions_Coordinator'(_) -> + ?nomatch(undefined, 'CosTransactions_Coordinator':oe_tc(get_status)), + ?nomatch(undefined, 'CosTransactions_Coordinator':oe_tc(get_parent_status)), + ?nomatch(undefined, 'CosTransactions_Coordinator':oe_tc(get_top_level_status)), + ?nomatch(undefined, 'CosTransactions_Coordinator':oe_tc(is_same_transaction)), + ?nomatch(undefined, 'CosTransactions_Coordinator':oe_tc(is_related_transaction)), + ?nomatch(undefined, 'CosTransactions_Coordinator':oe_tc(is_ancestor_transaction)), + ?nomatch(undefined, 'CosTransactions_Coordinator':oe_tc(is_descendant_transaction)), + ?nomatch(undefined, 'CosTransactions_Coordinator':oe_tc(is_top_level_transaction)), + ?nomatch(undefined, 'CosTransactions_Coordinator':oe_tc(hash_transaction)), + ?nomatch(undefined, 'CosTransactions_Coordinator':oe_tc(hash_top_level_tran)), + ?nomatch(undefined, 'CosTransactions_Coordinator':oe_tc(register_resource)), + ?nomatch(undefined, 'CosTransactions_Coordinator':oe_tc(register_subtran_aware)), + ?nomatch(undefined, 'CosTransactions_Coordinator':oe_tc(rollback_only)), + ?nomatch(undefined, 'CosTransactions_Coordinator':oe_tc(get_transaction_name)), + ?nomatch(undefined, 'CosTransactions_Coordinator':oe_tc(create_subtransaction)), + ?nomatch(undefined, 'CosTransactions_Coordinator':oe_tc(get_txcontext)), + ?match(undefined, 'CosTransactions_Coordinator':oe_tc(undefined)), + ?match([_|_], 'CosTransactions_Coordinator':oe_get_interface()), + ?match("IDL:omg.org/CosTransactions/Coordinator:1.0", + 'CosTransactions_Coordinator':typeID()), + check_tc('CosTransactions_Coordinator':oe_get_interface()), + ?match(true, 'CosTransactions_Coordinator':oe_is_a('CosTransactions_Coordinator':typeID())), + ?match(false, 'CosTransactions_Coordinator':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosTransactions_RecoveryCoordinator' +%% Description: +%%----------------------------------------------------------------- +'CosTransactions_RecoveryCoordinator'(doc) -> ["CosTransactions_RecoveryCoordinator"]; +'CosTransactions_RecoveryCoordinator'(suite) -> []; +'CosTransactions_RecoveryCoordinator'(_) -> + ?nomatch(undefined, 'CosTransactions_RecoveryCoordinator':oe_tc(replay_completion)), + ?match(undefined, 'CosTransactions_RecoveryCoordinator':oe_tc(undefined)), + ?match([_|_], 'CosTransactions_RecoveryCoordinator':oe_get_interface()), + ?match("IDL:omg.org/CosTransactions/RecoveryCoordinator:1.0", + 'CosTransactions_RecoveryCoordinator':typeID()), + check_tc('CosTransactions_RecoveryCoordinator':oe_get_interface()), + ?match(true, 'CosTransactions_RecoveryCoordinator':oe_is_a('CosTransactions_RecoveryCoordinator':typeID())), + ?match(false, 'CosTransactions_RecoveryCoordinator':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosTransactions_Resource' +%% Description: +%%----------------------------------------------------------------- +'CosTransactions_Resource'(doc) -> ["CosTransactions_Resource"]; +'CosTransactions_Resource'(suite) -> []; +'CosTransactions_Resource'(_) -> + ?nomatch(undefined, 'CosTransactions_Resource':oe_tc(prepare)), + ?nomatch(undefined, 'CosTransactions_Resource':oe_tc(rollback)), + ?nomatch(undefined, 'CosTransactions_Resource':oe_tc(commit)), + ?nomatch(undefined, 'CosTransactions_Resource':oe_tc(commit_one_phase)), + ?nomatch(undefined, 'CosTransactions_Resource':oe_tc(forget)), + ?match(undefined, 'CosTransactions_Resource':oe_tc(undefined)), + ?match([_|_], 'CosTransactions_Resource':oe_get_interface()), + ?match("IDL:omg.org/CosTransactions/Resource:1.0", + 'CosTransactions_Resource':typeID()), + check_tc('CosTransactions_Resource':oe_get_interface()), + ?match(true, 'CosTransactions_Resource':oe_is_a('CosTransactions_Resource':typeID())), + ?match(false, 'CosTransactions_Resource':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosTransactions_SubtransactionAwareResource' +%% Description: +%%----------------------------------------------------------------- +'CosTransactions_SubtransactionAwareResource'(doc) -> ["CosTransactions_SubtransactionAwareResource"]; +'CosTransactions_SubtransactionAwareResource'(suite) -> []; +'CosTransactions_SubtransactionAwareResource'(_) -> + ?nomatch(undefined, 'CosTransactions_SubtransactionAwareResource':oe_tc(commit_subtransaction)), + ?nomatch(undefined, 'CosTransactions_SubtransactionAwareResource':oe_tc(rollback_subtransaction)), + ?nomatch(undefined, 'CosTransactions_SubtransactionAwareResource':oe_tc(prepare)), + ?nomatch(undefined, 'CosTransactions_SubtransactionAwareResource':oe_tc(rollback)), + ?nomatch(undefined, 'CosTransactions_SubtransactionAwareResource':oe_tc(commit)), + ?nomatch(undefined, 'CosTransactions_SubtransactionAwareResource':oe_tc(commit_one_phase)), + ?nomatch(undefined, 'CosTransactions_SubtransactionAwareResource':oe_tc(forget)), + ?match(undefined, 'CosTransactions_SubtransactionAwareResource':oe_tc(undefined)), + ?match([_|_], 'CosTransactions_SubtransactionAwareResource':oe_get_interface()), + ?match("IDL:omg.org/CosTransactions/SubtransactionAwareResource:1.0", + 'CosTransactions_SubtransactionAwareResource':typeID()), + check_tc('CosTransactions_SubtransactionAwareResource':oe_get_interface()), + ?match(true, 'CosTransactions_SubtransactionAwareResource':oe_is_a('CosTransactions_SubtransactionAwareResource':typeID())), + ?match(true, 'CosTransactions_SubtransactionAwareResource':oe_is_a('CosTransactions_Resource':typeID())), + ?match(false, 'CosTransactions_SubtransactionAwareResource':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosTransactions_Terminator' +%% Description: +%%----------------------------------------------------------------- +'CosTransactions_Terminator'(doc) -> ["CosTransactions_Terminator"]; +'CosTransactions_Terminator'(suite) -> []; +'CosTransactions_Terminator'(_) -> + ?nomatch(undefined, 'CosTransactions_Terminator':oe_tc(commit)), + ?nomatch(undefined, 'CosTransactions_Terminator':oe_tc(rollback)), + ?match(undefined, 'CosTransactions_Terminator':oe_tc(undefined)), + ?match([_|_], 'CosTransactions_Terminator':oe_get_interface()), + ?match("IDL:omg.org/CosTransactions/Terminator:1.0", + 'CosTransactions_Terminator':typeID()), + check_tc('CosTransactions_Terminator':oe_get_interface()), + ?match(true, 'CosTransactions_Terminator':oe_is_a('CosTransactions_Terminator':typeID())), + ?match(false, 'CosTransactions_Terminator':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosTransactions_TransactionFactory' +%% Description: +%%----------------------------------------------------------------- +'CosTransactions_TransactionFactory'(doc) -> ["CosTransactions_TransactionFactory"]; +'CosTransactions_TransactionFactory'(suite) -> []; +'CosTransactions_TransactionFactory'(_) -> + ?nomatch(undefined, 'CosTransactions_TransactionFactory':oe_tc(create)), + ?nomatch(undefined, 'CosTransactions_TransactionFactory':oe_tc(recreate)), + ?match(undefined, 'CosTransactions_TransactionFactory':oe_tc(undefined)), + ?match([_|_], 'CosTransactions_TransactionFactory':oe_get_interface()), + ?match("IDL:omg.org/CosTransactions/TransactionFactory:1.0", + 'CosTransactions_TransactionFactory':typeID()), + check_tc('CosTransactions_TransactionFactory':oe_get_interface()), + ?match(true, 'CosTransactions_TransactionFactory':oe_is_a('CosTransactions_TransactionFactory':typeID())), + ?match(false, 'CosTransactions_TransactionFactory':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'ETraP_Server' +%% Description: +%%----------------------------------------------------------------- +'ETraP_Server'(doc) -> ["ETraP_Server"]; +'ETraP_Server'(suite) -> []; +'ETraP_Server'(_) -> + ?nomatch(undefined, 'ETraP_Server':oe_tc(get_status)), + ?nomatch(undefined, 'ETraP_Server':oe_tc(get_parent_status)), + ?nomatch(undefined, 'ETraP_Server':oe_tc(get_top_level_status)), + ?nomatch(undefined, 'ETraP_Server':oe_tc(is_same_transaction)), + ?nomatch(undefined, 'ETraP_Server':oe_tc(is_related_transaction)), + ?nomatch(undefined, 'ETraP_Server':oe_tc(is_ancestor_transaction)), + ?nomatch(undefined, 'ETraP_Server':oe_tc(is_descendant_transaction)), + ?nomatch(undefined, 'ETraP_Server':oe_tc(is_top_level_transaction)), + ?nomatch(undefined, 'ETraP_Server':oe_tc(hash_transaction)), + ?nomatch(undefined, 'ETraP_Server':oe_tc(hash_top_level_tran)), + ?nomatch(undefined, 'ETraP_Server':oe_tc(register_resource)), + ?nomatch(undefined, 'ETraP_Server':oe_tc(register_subtran_aware)), + ?nomatch(undefined, 'ETraP_Server':oe_tc(rollback_only)), + ?nomatch(undefined, 'ETraP_Server':oe_tc(get_transaction_name)), + ?nomatch(undefined, 'ETraP_Server':oe_tc(create_subtransaction)), + ?nomatch(undefined, 'ETraP_Server':oe_tc(get_txcontext)), + ?nomatch(undefined, 'ETraP_Server':oe_tc(prepare)), + ?nomatch(undefined, 'ETraP_Server':oe_tc(rollback)), + ?nomatch(undefined, 'ETraP_Server':oe_tc(commit)), + ?nomatch(undefined, 'ETraP_Server':oe_tc(commit_one_phase)), + ?nomatch(undefined, 'ETraP_Server':oe_tc(forget)), + ?nomatch(undefined, 'ETraP_Server':oe_tc(replay_completion)), + ?nomatch(undefined, 'ETraP_Server':oe_tc(get_terminator)), + ?nomatch(undefined, 'ETraP_Server':oe_tc(get_coordinator)), + ?match(undefined, 'ETraP_Server':oe_tc(undefined)), + ?match([_|_], 'ETraP_Server':oe_get_interface()), + ?match("IDL:omg.org/ETraP/Server:1.0", + 'ETraP_Server':typeID()), + check_tc('ETraP_Server':oe_get_interface()), + ?match(true, 'ETraP_Server':oe_is_a('ETraP_Server':typeID())), + ?match(true, 'ETraP_Server':oe_is_a('CosTransactions_Coordinator':typeID())), + ?match(true, 'ETraP_Server':oe_is_a('CosTransactions_Resource':typeID())), + ?match(true, 'ETraP_Server':oe_is_a('CosTransactions_RecoveryCoordinator':typeID())), + ?match(true, 'ETraP_Server':oe_is_a('CosTransactions_Control':typeID())), + ?match(false, 'ETraP_Server':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% MISC functions +%%----------------------------------------------------------------- +check_tc([]) -> + ok; +check_tc([{Op, {RetType, InParameters, OutParameters}}|T]) -> + io:format("checked - ~s~n", [Op]), + lists:all(?checktc(Op), [RetType|InParameters]), + lists:all(?checktc(Op), OutParameters), + check_tc(T). + + diff --git a/lib/cosTransactions/test/transactions_SUITE.erl b/lib/cosTransactions/test/transactions_SUITE.erl new file mode 100644 index 0000000000..8385d5a0fb --- /dev/null +++ b/lib/cosTransactions/test/transactions_SUITE.erl @@ -0,0 +1,395 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1999-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +-module(transactions_SUITE). + +%%--------------- INCLUDES ----------------------------------- +-include_lib("orber/include/corba.hrl"). +-include_lib("orber/include/ifr_types.hrl"). + +%% Local +-include_lib("cosTransactions/src/ETraP_Common.hrl"). +-include_lib("cosTransactions/include/CosTransactions.hrl"). +-include("etrap_test_lib.hrl"). + +-include("test_server.hrl"). + +-define(default_timeout, ?t:minutes(20)). + + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1, cases/0, init_all/1, finish_all/1, resource_api/1, etrap_api/1, + init_per_testcase/2, fin_per_testcase/2, app_test/1]). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["API tests for the cosTransactions interfaces", ""]; +all(suite) -> {req, + [mnesia, orber], + {conf, init_all, cases(), finish_all}}. + +cases() -> + [etrap_api, resource_api, app_test]. + + + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- + +init_per_testcase(_Case, Config) -> + Path = code:which(?MODULE), + code:add_pathz(filename:join(filename:dirname(Path), "idl_output")), + 'oe_CosTransactions':'oe_register'(), + 'oe_etrap_test':'oe_register'(), + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + 'oe_etrap_test':'oe_unregister'(), + 'oe_CosTransactions':'oe_unregister'(), + Path = code:which(?MODULE), + code:del_path(filename:join(filename:dirname(Path), "idl_output")), + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +init_all(Config) -> + mnesia:delete_schema([node()]), + mnesia:create_schema([node()]), + orber:install([node()]), + application:start(mnesia), + application:start(orber), + if + is_list(Config) -> + Config; + true -> + exit("Config not a list") + end. + +finish_all(Config) -> + application:stop(orber), + application:stop(mnesia), + mnesia:delete_schema([node()]), + Config. + +%%----------------------------------------------------------------- +%% Tests app file +%%----------------------------------------------------------------- +app_test(doc) -> []; +app_test(suite) -> []; +app_test(_Config) -> + ok=test_server:app_test(cosTransactions), + ok. + +%%----------------------------------------------------------------- +%% API tests +%%----------------------------------------------------------------- +etrap_api(doc) -> ["ETraP_Server tests", ""]; +etrap_api(suite) -> []; +etrap_api(_Config) -> + ?line ?match(ok, application:start(cosTransactions), + "Starting the cosTransactions application"), + ?line TrFac = cosTransactions:start_factory(), + %% Start a new transaction: + %% RootCoord + %% / \ + %% SubCoord1 SubCoord2 + Control = 'CosTransactions_TransactionFactory':create(TrFac, 0), + Term = 'CosTransactions_Control':get_terminator(Control), + Coord = 'CosTransactions_Control':get_coordinator(Control), + SubCont1 = 'CosTransactions_Coordinator':create_subtransaction(Coord), + SubCont2 = 'CosTransactions_Coordinator':create_subtransaction(Coord), + SubCoord1 = 'CosTransactions_Control':get_coordinator(SubCont1), + SubCoord2 = 'CosTransactions_Control':get_coordinator(SubCont2), + + + %%------ Test CosTransactions::Coordinator ------ + ?line ?match(true, + 'CosTransactions_Coordinator':is_same_transaction(Coord, Coord), + "'CosTransactions_Coordinator':is_same_transaction"), + ?line ?match(false, + 'CosTransactions_Coordinator':is_same_transaction(Coord, SubCoord1), + "'CosTransactions_Coordinator':is_same_transaction"), + ?line ?match(true, + 'CosTransactions_Coordinator':is_descendant_transaction(Coord, Coord), + "'CosTransactions_Coordinator':is_descendant_transaction"), + ?line ?match(false, + 'CosTransactions_Coordinator':is_descendant_transaction(Coord, SubCoord1), + "'CosTransactions_Coordinator':is_descendant_transaction"), + ?line ?match(true, + 'CosTransactions_Coordinator':is_descendant_transaction(SubCoord1, Coord), + "'CosTransactions_Coordinator':is_descendant_transaction"), + ?line ?match(false, + 'CosTransactions_Coordinator':is_descendant_transaction(SubCoord1, SubCoord2), + "'CosTransactions_Coordinator':is_descendant_transaction"), + ?line ?match(true, + 'CosTransactions_Coordinator':is_top_level_transaction(Coord), + "'CosTransactions_Coordinator':is_top_level_transaction"), + ?line ?match(false, + 'CosTransactions_Coordinator':is_top_level_transaction(SubCoord2), + "'CosTransactions_Coordinator':is_top_level_transaction"), + + RootHash = 'CosTransactions_Coordinator':hash_transaction(Coord), + RepeatHash= 'CosTransactions_Coordinator':hash_transaction(Coord), + RootHash2 = 'CosTransactions_Coordinator':hash_top_level_tran(SubCoord1), + RootHash3 = 'CosTransactions_Coordinator':hash_top_level_tran(Coord), + _SubHash = 'CosTransactions_Coordinator':hash_transaction(SubCoord2), + ?line ?match(RootHash, RepeatHash, + "'CosTransactions_Coordinator':hash_transaction"), + ?line ?match(RootHash, RootHash2, + "'CosTransactions_Coordinator':hash_top_level_tran"), + ?line ?match(RootHash, RootHash3, + "'CosTransactions_Coordinator':hash_top_level_tran"), +% ?line ?match_inverse(RootHash, SubHash, +% "'CosTransactions_Coordinator':hash_transaction"), + + ?line ?match('StatusActive', + 'CosTransactions_Coordinator':get_status(Coord), + "'CosTransactions_Coordinator':get_status"), + ?line ?match('StatusActive', + 'CosTransactions_Coordinator':get_status(SubCoord1), + "'CosTransactions_Coordinator':get_status"), + ?line ?match('StatusActive', + 'CosTransactions_Coordinator':get_parent_status(Coord), + "'CosTransactions_Coordinator':get_parent_status"), + ?line ?match('StatusActive', + 'CosTransactions_Coordinator':get_parent_status(SubCoord1), + "'CosTransactions_Coordinator':get_parent_status"), + ?line ?match('StatusActive', + 'CosTransactions_Coordinator':get_top_level_status(Coord), + "'CosTransactions_Coordinator':get_top_level_status"), + ?line ?match('StatusActive', + 'CosTransactions_Coordinator':get_top_level_status(SubCoord1), + "'CosTransactions_Coordinator':get_top_level_status"), + + %% Create a CosTransactions::Resource to experiments with. + %% Start a new transaction: + %% RootCoord + %% / \ + %% SubCoord1 SubCoord2 + %% / + %% Resource + N1 = 'ETraP_Common':create_name("test"), + O1 = etrap_test_server:oe_create(?nop, {global, N1}), + _RC1 = 'CosTransactions_Coordinator':register_resource(SubCoord1, O1), +% 'CosTransactions_Coordinator':register_synchronization(SubCoord1, O1), + + ?line ?match('VoteCommit', + 'CosTransactions_Resource':prepare(SubCoord1), + "'CosTransactions_Coordinator':prepare"), + %% The Transaction are no longer in 'StatusActive' state. No new + %% "members" allowed. + ?line ?match('StatusPrepared', + 'CosTransactions_Coordinator':get_status(SubCoord1), + "'CosTransactions_Coordinator':get_status"), +% ?line ?match({'EXCEPTION', ?tr_inactive}, +% 'CosTransactions_Coordinator':register_synchronization(SubCoord1, O1), +% "'CosTransactions_Coordinator':register_synchronization"), + ?line ?match({'EXCEPTION', ?tr_inactive}, + 'CosTransactions_Coordinator':register_resource(SubCoord1, O1), + "'CosTransactions_Coordinator':register_resource"), + ?line ?match({'EXCEPTION', ?tr_inactive}, + 'CosTransactions_Coordinator':create_subtransaction(SubCoord1), + "'CosTransactions_Coordinator':create_subtransaction"), + + catch corba:dispose(SubCoord1), + catch corba:dispose(SubCoord2), + catch corba:dispose(SubCont1), + catch corba:dispose(SubCont2), + catch corba:dispose(Term), + catch corba:dispose(Control), + catch corba:dispose(Coord), + catch corba:dispose(O1), + + ?line cosTransactions:stop_factory(TrFac), + ?line application:stop(cosTransactions), + ok. + +%%----------------------------------------------------------------- +%% API tests +%%----------------------------------------------------------------- +resource_api(doc) -> ["cosTransactions API tests", ""]; +resource_api(suite) -> []; +resource_api(_Config) -> + ?line ?match(ok, application:start(cosTransactions), + "Starting the cosTransactions application"), + ?line TrFac = cosTransactions:start_factory([{typecheck, true}]), + + ?line ?match({'EXCEPTION', #'TRANSACTION_ROLLEDBACK'{completion_status=?COMPLETED_YES}}, + run(TrFac, 0, {?nop, ?nop, ?nop, ?prepare_rollback}), + "TESTCASE #1: Prepare rollback Resource 4"), + ?line ?match({'EXCEPTION', ?tr_mixed}, + run(TrFac, 0, {?nop, ?nop, ?commit_mix, ?nop}), + "TESTCASE #2: Heuristic Mixed exception Resource 3"), + ?line ?match(ok, + run(TrFac, 0, {?nop, ?nop, ?nop, ?nop}), + "TESTCASE #3: Normal completion. No errors."), + ?line ?match(ok, + run(TrFac, 0, {?nop, ?nop, ?nop, ?commit_cm}), + "TESTCASE #4: Heuristic Commit Exception Resource 4"), + ?line ?match({'EXCEPTION', #'TRANSACTION_ROLLEDBACK'{completion_status=?COMPLETED_YES}}, + run(TrFac, 0, {?nop, ?rollback_rb, ?nop, ?prepare_rollback}), + "TESTCASE #5: Heuristic Rollbac Resource 2, Resource 4 reply 'VoteRollback'"), + ?line ?match({'EXCEPTION', #'TRANSACTION_ROLLEDBACK'{completion_status=?COMPLETED_YES}}, + run(TrFac, 0, {?nop, ?nop, ?prepare_rollback, ?rollback_rb}), + "TESTCASE #6: Heuristic Rollbac Resource 4, Resource 3 reply 'VoteRollback'"), + ?line ?match(ok, + run(TrFac, 0, {?nop, ?nop, ?commit_delay, ?nop}), + "TESTCASE #7: Resource 3 delay during commit. No timeout."), + ?line ?match(ok, + run(TrFac, 0, {?nop, ?nop, ?prepare_delay, ?nop}), + "TESTCASE #8: Resource 3 delay during prepare. No timeout."), + ?line ?match(ok, + run(TrFac, ?TIMEOUT, {?nop, ?commit_delay, ?nop, ?nop}), + "TESTCASE #9: Resource 3 delay during commit. Timeout."), + ?line ?match({'EXCEPTION', #'TRANSACTION_ROLLEDBACK'{completion_status=?COMPLETED_YES}}, + run(TrFac, ?TIMEOUT, {?nop, ?prepare_delay, ?nop, ?nop}), + "TESTCASE #10: Resource 3 delay during prepare. Timeout."), + case ?is_debug_compiled of + true -> + %% Testing the Coordinators (root and sub). + ?line ?match(ok, + run(TrFac, 0, {?nop, ?nop, ?nop, ?nop, [?nop, ?nop,?crash_transient(commit), ?nop]}), + "TESTCASE #11: SubCoord 3 crash transient during commit."), + ?line ?match({'EXCEPTION', #'TRANSACTION_ROLLEDBACK'{}}, + run(TrFac, 0, {?nop, ?nop, ?nop, ?nop, [?nop, ?nop,?crash_transient(send_prepare), ?nop]}), + "TESTCASE #12: SubCoord 3 crash transient during send prepare."), + ?line ?match({'EXCEPTION', ?tr_hazard}, + run(TrFac, 0, {?nop, ?nop, ?nop, ?nop, [?nop, ?nop,?crash_permanent(commit), ?nop]}), + "TESTCASE #13: SubCoord 3 crash permanent during commit."), + ?line ?match({'EXCEPTION', #'TRANSACTION_ROLLEDBACK'{}}, + run(TrFac, 0, {?nop, ?nop, ?nop, ?nop, [?nop, ?nop,?crash_permanent(send_prepare), ?nop]}), + "TESTCASE #14: SubCoord 3 crash permanent during prepare."), + ?line ?match({'EXCEPTION', #'TRANSACTION_ROLLEDBACK'{}}, + run(TrFac, 0, {?nop, ?nop, ?nop, ?nop, [?nop, ?crash_transient(send_prepare), ?crash_transient(commit), ?nop]}), + "TESTCASE #15: SubCoord 2 crash transient during prepare. SubCoord 3 crash transient during commit"), + ?line ?match({'EXCEPTION', #'TRANSACTION_ROLLEDBACK'{completion_status=?COMPLETED_YES}}, + run(TrFac, 0, {?nop, ?nop, ?nop, ?nop, [?crash_transient(send_prepare), ?nop, ?nop, ?nop]}), + "TESTCASE #16: RootCoord crash transient during send prepare."), + ?line ?match({'EXCEPTION', #'TRANSACTION_ROLLEDBACK'{}}, + run(TrFac, 0, {?nop, ?nop, ?nop, ?nop, [?nop, ?crash_transient(prepare1), ?nop, ?nop]}), + "TESTCASE #17: SubCoord 1 crash transient during prepare1."), + ?line ?match({'EXCEPTION', ?tr_mixed}, + run(TrFac, 0, {?nop, ?prepare_mix, ?nop, ?nop, [?nop, ?nop, ?crash_transient(prepare2), ?nop]}), + "TESTCASE #18: SubCoord 3 crash transient during prepare2. Resource 2 raise Heuristic Mixed during prepare"), + ?line ?match({'EXCEPTION', ?tr_mixed}, + run(TrFac, 0, {?nop, ?commit_mix, ?nop, ?nop, [?nop, ?nop, ?crash_transient(commit2), ?nop]}), + "TESTCASE #19: Resource 2 raise Heurist mixed during commit. SubCoord crash transient commit2"), + ?line ?match({'EXCEPTION', ?tr_mixed}, + run(TrFac, 0, {?nop, ?rollback_cm, ?nop, ?prepare_rollback, [?nop, ?crash_transient(rollback2), ?nop, ?nop]}), + "TESTCASE #20: Resource 2 raise Heuristic Commit during rollback. Resource 4 'VoteRollback'. SubCoord 2 crash transient rollback2."), + ?line ?match({'EXCEPTION', ?tr_mixed}, + run(TrFac, 0, {?nop, ?nop, ?nop, ?commit_mix, [?nop, ?nop, ?crash_transient(send_forget1), ?nop]}), + "TESTCASE #21: Resource 4 raise Heuristic Mixed during commit. SubCoord 2 crash transient send_forget1."), + ?line ?match({'EXCEPTION', ?tr_mixed}, + run(TrFac, 0, {?nop, ?nop, ?nop, ?commit_mix, [?crash_transient(send_forget1), ?nop, ?nop, ?nop]}), + "TESTCASE #22: Resource 4 raise Heuristic Mixed during commit. Root Coord crash transient send_forget1."), + ?line ?match({'EXCEPTION', ?tr_mixed}, + run(TrFac, 0, {?nop, ?nop, ?nop, ?commit_mix, [?crash_transient(send_forget3), ?nop, ?crash_transient(send_forget1), ?nop]}), + "TESTCASE #23: Resource 4 raise Heuristic Mixed during commit. Root Coord crash transient send_forget3. SubCoord 3 crash transient send_forget1."), + ?line ?match({'EXCEPTION', #'TRANSACTION_ROLLEDBACK'{completion_status=?COMPLETED_YES}}, + run(TrFac, ?TIMEOUT, {?nop, ?nop, ?nop, ?nop, [?delay_transient(root_delay, ?TIMEOUT*2), ?nop, ?nop, ?nop]}), + "TESTCASE #24: Delay RootCoord. Timeout."), + %% Testing the Terminator. + ?line ?match({'EXCEPTION', ?tr_mixed}, + run(TrFac, ?TIMEOUT, {?nop, ?prepare_mix, ?nop, ?nop, [?nop, ?nop, ?nop, ?crash_transient(commit_heuristic1)]}), + "TESTCASE #25: Terminator crash transient after received and logged Heuristic mix."), + ?line ?match(ok, + run(TrFac, ?TIMEOUT, {?nop, ?nop, ?nop, ?nop, [?nop, ?nop, ?nop, ?crash_transient(commit_ok2)]}), + "TESTCASE #26: Terminator crash transient after received and logged 'ok'."); + _ -> + ok + end, + + ?line cosTransactions:stop_factory(TrFac), + ?line application:stop(cosTransactions), + ok. + +%%----------------------------------------------------------------- +%% Internal functions +%%----------------------------------------------------------------- + +run(TrFac, Time, Spec) -> + Control = 'CosTransactions_TransactionFactory':create(TrFac, Time), + Term = 'CosTransactions_Control':get_terminator(Control), + Coord = 'CosTransactions_Control':get_coordinator(Control), + SubCont1 = 'CosTransactions_Coordinator':create_subtransaction(Coord), + SubCont2 = 'CosTransactions_Coordinator':create_subtransaction(Coord), + SubCoord1 = 'CosTransactions_Control':get_coordinator(SubCont1), + SubCoord2 = 'CosTransactions_Control':get_coordinator(SubCont2), + %% Start resources/participants. + {O1, O2, O3, O4, Ctx} = start_resources(Spec), + + %% Get generated names to use for debugging. + CoordN = 'CosTransactions_Coordinator':get_transaction_name(Coord), + SubC1N = 'CosTransactions_Coordinator':get_transaction_name(SubCoord1), + SubC2N = 'CosTransactions_Coordinator':get_transaction_name(SubCoord2), + + ?set_debug_context([CoordN, SubC1N, SubC2N, Term], Ctx), + + %% Register the resources as participants. + _RC1 = 'CosTransactions_Coordinator':register_resource(SubCoord1, O1), + _RC2 = 'CosTransactions_Coordinator':register_resource(SubCoord1, O2), + _RC3 = 'CosTransactions_Coordinator':register_resource(SubCoord2, O3), + _RC4 = 'CosTransactions_Coordinator':register_resource(SubCoord2, O4), + + 'CosTransactions_Coordinator':register_subtran_aware(SubCoord1, O4), +% 'CosTransactions_Coordinator':register_synchronization(SubCoord1, O2), + +% Reply = (catch 'CosTransactions_Terminator':commit(Term, true)), + Reply = (catch 'ETraP_Common':send_stubborn('CosTransactions_Terminator', + commit, [Term, true], + ?tr_max_retries, + ?tr_comm_failure_wait)), + + catch corba:dispose(SubCoord1), + catch corba:dispose(SubCoord2), + catch corba:dispose(SubCont1), + catch corba:dispose(SubCont2), + catch corba:dispose(Term), + catch corba:dispose(Control), + catch corba:dispose(Coord), + catch corba:dispose(O1), + catch corba:dispose(O2), + catch corba:dispose(O3), + catch corba:dispose(O4), + Reply. + + + +start_resources({A1, A2, A3, A4})-> + start_resources({A1, A2, A3, A4, ?no_context}); +start_resources({A1, A2, A3, A4, Ctx})-> + N1 = 'ETraP_Common':create_name("test"), + N2 = 'ETraP_Common':create_name("test"), + N3 = 'ETraP_Common':create_name("test"), + N4 = 'ETraP_Common':create_name("test"), + {_,_,O1} = supervisor:start_child(?SUPERVISOR_NAME, ?SUP_TEST(A1, N1)), + {_,_,O2} = supervisor:start_child(?SUPERVISOR_NAME, ?SUP_TEST(A2, N2)), +% {_,_,O2} = supervisor:start_child(?SUPERVISOR_NAME, ?SUP_TEST([{sync,true}|A2], N2)), + {_,_,O3} = supervisor:start_child(?SUPERVISOR_NAME, ?SUP_TEST(A3, N3)), + {_,_,O4} = supervisor:start_child(?SUPERVISOR_NAME, ?SUP_TEST(A4, N4)), + {O1, O2, O3, O4, Ctx}. diff --git a/lib/cosTransactions/vsn.mk b/lib/cosTransactions/vsn.mk index b45f192f45..34775be7e4 100644 --- a/lib/cosTransactions/vsn.mk +++ b/lib/cosTransactions/vsn.mk @@ -1,6 +1,7 @@ COSTRANSACTIONS_VSN = 1.2.10 -TICKETS = OTP-8489 +TICKETS = OTP-8489 \ + OTP-8543 TICKETS_1.2.9 = OTP-8355 diff --git a/lib/hipe/cerl/erl_bif_types.erl b/lib/hipe/cerl/erl_bif_types.erl index 81ca837e45..213f98dcc0 100644 --- a/lib/hipe/cerl/erl_bif_types.erl +++ b/lib/hipe/cerl/erl_bif_types.erl @@ -851,6 +851,9 @@ type(erlang, hd, 1, Xs) -> type(erlang, integer_to_list, 1, Xs) -> strict(arg_types(erlang, integer_to_list, 1), Xs, fun (_) -> t_string() end); +type(erlang, integer_to_list, 2, Xs) -> + strict(arg_types(erlang, integer_to_list, 2), Xs, + fun (_) -> t_string() end); type(erlang, info, 1, Xs) -> type(erlang, system_info, 1, Xs); % alias type(erlang, iolist_size, 1, Xs) -> strict(arg_types(erlang, iolist_size, 1), Xs, @@ -1056,6 +1059,9 @@ type(erlang, list_to_float, 1, Xs) -> type(erlang, list_to_integer, 1, Xs) -> strict(arg_types(erlang, list_to_integer, 1), Xs, fun (_) -> t_integer() end); +type(erlang, list_to_integer, 2, Xs) -> + strict(arg_types(erlang, list_to_integer, 2), Xs, + fun (_) -> t_integer() end); type(erlang, list_to_pid, 1, Xs) -> strict(arg_types(erlang, list_to_pid, 1), Xs, fun (_) -> t_pid() end); type(erlang, list_to_tuple, 1, Xs) -> @@ -3498,6 +3504,8 @@ arg_types(erlang, iolist_size, 1) -> [t_sup(t_iolist(), t_binary())]; arg_types(erlang, integer_to_list, 1) -> [t_integer()]; +arg_types(erlang, integer_to_list, 2) -> + [t_integer(), t_from_range(2, 36)]; arg_types(erlang, is_alive, 0) -> []; arg_types(erlang, is_atom, 1) -> @@ -3558,6 +3566,8 @@ arg_types(erlang, list_to_float, 1) -> [t_list(t_byte())]; arg_types(erlang, list_to_integer, 1) -> [t_list(t_byte())]; +arg_types(erlang, list_to_integer, 2) -> + [t_list(t_byte()), t_from_range(2, 36)]; arg_types(erlang, list_to_pid, 1) -> [t_string()]; arg_types(erlang, list_to_tuple, 1) -> diff --git a/lib/kernel/doc/src/inet.xml b/lib/kernel/doc/src/inet.xml index f502b30c8d..2ae230152c 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>2009</year> + <year>1997</year><year>2010</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -13,12 +13,12 @@ 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. - + </legalnotice> <title>inet</title> @@ -221,7 +221,7 @@ fe80::204:acff:fe17:bf38 </desc> </func> <func> - <name>getopts(Socket, Options) -> OptionValues | {error, posix()}</name> + <name>getopts(Socket, Options) -> {ok, OptionValues} | {error, posix()}</name> <fsummary>Get one or more options for a socket</fsummary> <type> <v>Socket = term()</v> diff --git a/lib/mnesia/doc/src/Mnesia_chap5.xmlsrc b/lib/mnesia/doc/src/Mnesia_chap5.xmlsrc index 3ec0aa37f5..1c7e3662e1 100644 --- a/lib/mnesia/doc/src/Mnesia_chap5.xmlsrc +++ b/lib/mnesia/doc/src/Mnesia_chap5.xmlsrc @@ -4,7 +4,7 @@ <chapter> <header> <copyright> - <year>1997</year><year>2009</year> + <year>1997</year><year>2010</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -13,12 +13,12 @@ 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. - + </legalnotice> <title>Miscellaneous Mnesia Features</title> @@ -885,16 +885,16 @@ ok <item>Removes the subscription on events of type <c>Event-Category</c></item> </taglist> - <p><c>Event-Category</c> may either be the atom <c>system</c>, or + <p><c>Event-Category</c> may either be the atom <c>system</c>, the atom <c>activity</c>, or one of the tuples <c>{table, Tab, simple}</c>, <c>{table, Tab, detailed}</c>. The old event-category <c>{table, Tab}</c> is the same event-category as <c>{table, Tab, simple}</c>. The subscribe functions activate a subscription of events. The events are delivered as messages to the process evaluating the <c>mnesia:subscribe/1</c> function. The syntax of - system events is <c>{mnesia_system_event, Event}</c> and - <c>{mnesia_table_event, Event}</c> for table events. What system - events and table events means is described below. - </p> + system events is <c>{mnesia_system_event, Event}</c>, + <c>{mnesia_activity_event, Event}</c> for activity events, and + <c>{mnesia_table_event, Event}</c> for table events. What the various + event types mean is described below.</p> <p>All system events are subscribed by Mnesia's gen_event handler. The default gen_event handler is <c>mnesia_event</c>. But it may be changed by using the application @@ -1039,8 +1039,26 @@ ok </section> <section> + <title>Activity Events</title> + <p>Currently, there is only one type of activity event:</p> + <taglist> + <tag><c>{complete, ActivityID}</c></tag> + <item> + <p>This event occurs when a transaction that caused a modification to the database + has completed. It is useful for determining when a set of table events + (see below) caused by a given activity have all been sent. Once the this event + has been received, it is guaranteed that no further table events with the same + ActivityID will be received. Note that this event may still be received even + if no table events with a corresponding ActivityID were received, depending on + the tables to which the receiving process is subscribed.</p> + <p>Dirty operations always only contain one update and thus no activity event is sent.</p> + </item> + </taglist> + </section> + + <section> <title>Table Events</title> - <p>Another category of events are table events, which are + <p>The final category of events are table events, which are events related to table updates. There are two types of table events simple and detailed. </p> diff --git a/lib/mnesia/doc/src/mnesia.xml b/lib/mnesia/doc/src/mnesia.xml index d76471d922..5d3bcf830e 100644 --- a/lib/mnesia/doc/src/mnesia.xml +++ b/lib/mnesia/doc/src/mnesia.xml @@ -1135,7 +1135,7 @@ mnesia:create_table(person, </list> <p>If two processes perform <c>mnesia:dirty_update_counter/3</c> simultaneously, both updates will take effect without the - risk of loosing one of the updates. The new value + risk of losing one of the updates. The new value <c>NewVal</c> of the counter is returned.</p> <p>If <c>Key</c> don't exits, a new record is created with the value <c>Incr</c> if it is larger than 0, otherwise it is set to 0.</p> diff --git a/lib/mnesia/src/mnesia_monitor.erl b/lib/mnesia/src/mnesia_monitor.erl index 5df5df4969..5bd93d6b9b 100644 --- a/lib/mnesia/src/mnesia_monitor.erl +++ b/lib/mnesia/src/mnesia_monitor.erl @@ -256,6 +256,7 @@ init([Parent]) -> ?ets_new_table(mnesia_gvar, [set, public, named_table]), ?ets_new_table(mnesia_stats, [set, public, named_table]), set(subscribers, []), + set(activity_subscribers, []), mnesia_lib:verbose("~p starting: ~p~n", [?MODULE, self()]), Version = mnesia:system_info(version), set(version, Version), diff --git a/lib/mnesia/src/mnesia_subscr.erl b/lib/mnesia/src/mnesia_subscr.erl index afd1704dec..93d4a86f7f 100644 --- a/lib/mnesia/src/mnesia_subscr.erl +++ b/lib/mnesia/src/mnesia_subscr.erl @@ -1,19 +1,19 @@ %% %% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1997-2009. All Rights Reserved. -%% +%% +%% Copyright Ericsson AB 1997-2010. All Rights Reserved. +%% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in %% compliance with the License. You should have received a copy of the %% Erlang Public License along with this software. If not, it can be %% retrieved online at http://www.erlang.org/. -%% +%% %% Software distributed under the License is distributed on an "AS IS" %% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See %% the License for the specific language governing rights and limitations %% under the License. -%% +%% %% %CopyrightEnd% %% @@ -30,7 +30,8 @@ subscribers/0, report_table_event/4, report_table_event/5, - report_table_event/6 + report_table_event/6, + report_activity/1 ]). %% gen_server callbacks @@ -91,6 +92,8 @@ set_debug_level(Level, OldEnv) -> subscribe(ClientPid, system) -> change_subscr(activate, ClientPid, system); +subscribe(ClientPid, activity) -> + change_subscr(activate, ClientPid, activity); subscribe(ClientPid, {table, Tab}) -> change_subscr(activate, ClientPid, {table, Tab, simple}); subscribe(ClientPid, {table, Tab, simple}) -> @@ -102,6 +105,8 @@ subscribe(_ClientPid, What) -> unsubscribe(ClientPid, system) -> change_subscr(deactivate, ClientPid, system); +unsubscribe(ClientPid, activity) -> + change_subscr(deactivate, ClientPid, activity); unsubscribe(ClientPid, {table, Tab}) -> change_subscr(deactivate, ClientPid, {table, Tab, simple}); unsubscribe(ClientPid, {table, Tab, simple}) -> @@ -120,6 +125,15 @@ change_subscr(Kind, ClientPid, What) -> subscribers() -> [whereis(mnesia_event) | mnesia_lib:val(subscribers)]. +report_activity({dirty, _pid}) -> + ok; +report_activity(Tid) -> + case ?catch_val(activity_subscribers) of + {'EXIT', _} -> ok; + Subscribers -> + deliver(Subscribers, {mnesia_activity_event, {complete, Tid}}) + end. + report_table_event(Tab, Tid, Obj, Op) -> case ?catch_val({Tab, commit_work}) of {'EXIT', _} -> ok; @@ -300,6 +314,9 @@ code_change(_OldVsn, State, _Extra) -> do_change({activate, ClientPid, system}, SubscrTab) when is_pid(ClientPid) -> Var = subscribers, activate(ClientPid, system, Var, subscribers(), SubscrTab); +do_change({activate, ClientPid, activity}, SubscrTab) when is_pid(ClientPid) -> + Var = activity_subscribers, + activate(ClientPid, activity, Var, mnesia_lib:val(Var), SubscrTab); do_change({activate, ClientPid, {table, Tab, How}}, SubscrTab) when is_pid(ClientPid) -> case ?catch_val({Tab, where_to_read}) of Node when Node == node() -> @@ -313,6 +330,9 @@ do_change({activate, ClientPid, {table, Tab, How}}, SubscrTab) when is_pid(Clien do_change({deactivate, ClientPid, system}, SubscrTab) -> Var = subscribers, deactivate(ClientPid, system, Var, SubscrTab); +do_change({deactivate, ClientPid, activity}, SubscrTab) -> + Var = activity_subscribers, + deactivate(ClientPid, activity, Var, SubscrTab); do_change({deactivate, ClientPid, {table, Tab, How}}, SubscrTab) -> Var = {Tab, commit_work}, deactivate(ClientPid, {table, Tab, How}, Var, SubscrTab); @@ -345,7 +365,7 @@ do_change(_, _) -> activate(ClientPid, What, Var, OldSubscribers, SubscrTab) -> Old = - if Var == subscribers -> + if Var == subscribers orelse Var == activity_subscribers -> OldSubscribers; true -> case lists:keysearch(subscribers, 1, OldSubscribers) of @@ -379,6 +399,9 @@ activate(ClientPid, What, Var, OldSubscribers, SubscrTab) -> add_subscr(subscribers, _What, Pid) -> mnesia_lib:add(subscribers, Pid), {ok, node()}; +add_subscr(activity_subscribers, _What, Pid) -> + mnesia_lib:add(activity_subscribers, Pid), + {ok, node()}; add_subscr({Tab, commit_work}, What, Pid) -> Commit = mnesia_lib:val({Tab, commit_work}), case lists:keysearch(subscribers, 1, Commit) of @@ -427,6 +450,8 @@ deactivate(ClientPid, What, Var, SubscrTab) -> del_subscr(subscribers, _What, Pid) -> mnesia_lib:del(subscribers, Pid); +del_subscr(activity_subscribers, _What, Pid) -> + mnesia_lib:del(activity_subscribers, Pid); del_subscr({Tab, commit_work}, What, Pid) -> Commit = mnesia_lib:val({Tab, commit_work}), case lists:keysearch(subscribers, 1, Commit) of @@ -473,6 +498,8 @@ do_handle_exit([{ClientPid, What} | Tail]) -> case What of system -> del_subscr(subscribers, What, ClientPid); + activity -> + del_subscr(activity_subscribers, What, ClientPid); {_, Tab, _Level} -> del_subscr({Tab, commit_work}, What, ClientPid) end, diff --git a/lib/mnesia/src/mnesia_tm.erl b/lib/mnesia/src/mnesia_tm.erl index d42109c3da..f3ffac5493 100644 --- a/lib/mnesia/src/mnesia_tm.erl +++ b/lib/mnesia/src/mnesia_tm.erl @@ -1733,7 +1733,9 @@ do_commit(Tid, C, DumperMode) -> R = do_snmp(Tid, C#commit.snmp), R2 = do_update(Tid, ram_copies, C#commit.ram_copies, R), R3 = do_update(Tid, disc_copies, C#commit.disc_copies, R2), - do_update(Tid, disc_only_copies, C#commit.disc_only_copies, R3). + R4 = do_update(Tid, disc_only_copies, C#commit.disc_only_copies, R3), + mnesia_subscr:report_activity(Tid), + R4. %% Update the items do_update(Tid, Storage, [Op | Ops], OldRes) -> diff --git a/lib/odbc/configure.in b/lib/odbc/configure.in index 24e286c290..94e8a214d4 100644 --- a/lib/odbc/configure.in +++ b/lib/odbc/configure.in @@ -1,3 +1,21 @@ +dnl +dnl %CopyrightBegin% +dnl +dnl Copyright Ericsson AB 2005-2010. 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 +dnl compliance with the License. You should have received a copy of the +dnl Erlang Public License along with this software. If not, it can be +dnl retrieved online at http://www.erlang.org/. +dnl +dnl Software distributed under the License is distributed on an "AS IS" +dnl basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +dnl the License for the specific language governing rights and limitations +dnl under the License. +dnl +dnl %CopyrightEnd% +dnl dnl define([AC_CACHE_LOAD], )dnl dnl define([AC_CACHE_SAVE], )dnl @@ -25,6 +43,11 @@ else host_os=win32 fi +AC_ARG_WITH(odbc, +[ --with-odbc=PATH specify location of ODBC include and lib + --with-odbc use ODBC (default) + --without-odbc don't use ODBC]) + if test "$with_odbc" = "no"; then rm -f "$ERL_TOP/lib/odbc/SKIP" @@ -116,7 +139,7 @@ AC_SUBST(TARGET_FLAGS) case $host_os in darwin*) TARGET_FLAGS="-DUNIX" - if test ! -d "$with_odbc" || test "$with_odbc" = "yes" ; then + if test ! -d "$with_odbc" || test "$with_odbc" = "yes"; then ODBC_LIB= -L"/usr/lib" ODBC_INCLUDE="-I/usr/lib/include" else @@ -129,7 +152,7 @@ AC_SUBST(TARGET_FLAGS) win32|cygwin) TARGET_FLAGS="-DWIN32" AC_CHECK_LIB(ws2_32, main) - if test ! -d "$with_odbc"; then + if test ! -d "$with_odbc" || test "$with_odbc" = "yes"; then ODBC_LIB="" ODBC_INCLUDE="" else @@ -147,7 +170,7 @@ AC_SUBST(TARGET_FLAGS) echo "$msg" > "$ERL_TOP/lib/odbc/SKIP" odbc_lib_link_success=wont_try ;; - no- ) + no-yes | no- ) AC_CHECK_SIZEOF(void *) AC_MSG_CHECKING([for odbc in standard locations]) for rdir in /usr/local/odbc /usr/local /usr/odbc \ @@ -177,7 +200,7 @@ AC_SUBST(TARGET_FLAGS) fi ;; - no-*) + *) ODBC_LIB=-L"$with_odbc/lib" ODBC_INCLUDE="-I$with_odbc/include" AC_CHECK_LIB(odbc, SQLAllocHandle,[ODBC_LIB="$ODBC_LIB -lodbc"; odbc_lib_link_success=yes]) diff --git a/lib/orber/doc/src/notes.xml b/lib/orber/doc/src/notes.xml index f97d7ac1fa..1013d370e4 100644 --- a/lib/orber/doc/src/notes.xml +++ b/lib/orber/doc/src/notes.xml @@ -35,6 +35,17 @@ <section> <title>Orber 3.6.16</title> <section> + <title>Improvements and New Features</title> + <list type="bulleted"> + <item> + <p> + Test suites published.</p> + <p> + Own Id: OTP-8543 Aux Id:</p> + </item> + </list> + </section> + <section> <title>Fixed Bugs and Malfunctions</title> <list type="bulleted"> <item> diff --git a/lib/orber/test/Makefile b/lib/orber/test/Makefile new file mode 100644 index 0000000000..4601e84d2c --- /dev/null +++ b/lib/orber/test/Makefile @@ -0,0 +1,228 @@ +# +# %CopyrightBegin% +# +# Copyright Ericsson AB 1997-2010. All Rights Reserved. +# +# The contents of this file are subject to the Erlang Public License, +# Version 1.1, (the "License"); you may not use this file except in +# compliance with the License. You should have received a copy of the +# Erlang Public License along with this software. If not, it can be +# retrieved online at http://www.erlang.org/. +# +# Software distributed under the License is distributed on an "AS IS" +# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +# the License for the specific language governing rights and limitations +# under the License. +# +# %CopyrightEnd% +# +# +include $(ERL_TOP)/make/target.mk +include $(ERL_TOP)/make/$(TARGET)/otp.mk + +# ---------------------------------------------------- +# Application version +# ---------------------------------------------------- +include ../vsn.mk +VSN=$(ORBER_VSN) +# ---------------------------------------------------- +# Release directory specification +# ---------------------------------------------------- +RELSYSDIR = $(RELEASE_PATH)/orber_test + +# ---------------------------------------------------- +# Target Specs +# ---------------------------------------------------- +TEST_SPEC_FILE = orber.spec + + +IDL_FILES = \ + orber_test.idl \ + iiop_test.idl \ + orber_test_server.idl + +IDLOUTDIR = idl_output + +MODULES = \ + cdrcoding_11_SUITE \ + cdrcoding_10_SUITE \ + cdrcoding_12_SUITE \ + cdrlib_SUITE \ + corba_SUITE \ + iop_ior_11_SUITE \ + iop_ior_10_SUITE \ + iop_ior_12_SUITE \ + iiop_module_do_test_impl \ + iiop_module_test_impl \ + lname_SUITE \ + naming_context_SUITE \ + orber_SUITE \ + orber_test_server_impl \ + orber_test_timeout_server_impl \ + orber_test_lib \ + csiv2_SUITE \ + multi_ORB_SUITE \ + data_types_SUITE \ + tc_SUITE \ + generated_SUITE \ + orber_web_SUITE \ + interceptors_SUITE \ + orber_acl_SUITE \ + orber_firewall_ipv4_in_SUITE \ + orber_firewall_ipv6_in_SUITE \ + orber_firewall_ipv4_out_SUITE \ + orber_firewall_ipv6_out_SUITE \ + orber_nat_SUITE + +GEN_MOD_ORBER = \ + oe_orber_test \ + Module_Except1 \ + Module_Except2 \ + Module_Except3 \ + Module_Except4 \ + Module_HEADER \ + Module_I1 \ + Module_I2 \ + Module_Struct0 \ + Module_Struct1 \ + Module_Struct2 \ + Module_Union \ + Module_Union1 \ + Module_Union2 + +GEN_HRL_ORBER = \ + oe_orber_test.hrl \ + Module.hrl \ + Module_I1.hrl \ + Module_I2.hrl + +GEN_MOD_IIOP = \ + oe_iiop_test \ + iiop_module_Except1 \ + iiop_module_Struct1 \ + iiop_module_Union1 \ + iiop_module_do_test \ + iiop_module_test \ + iiop_module_test_retval + +GEN_HRL_IIOP = \ + oe_iiop_test.hrl \ + iiop_module.hrl \ + iiop_module_do_test.hrl \ + iiop_module_test.hrl + +GEN_MOD_TEST_SERVER = \ + oe_orber_test_server \ + orber_test_server \ + orber_test_server_ComplexUserDefinedException \ + orber_test_server_UserDefinedException \ + orber_test_server_struc \ + orber_test_server_uni \ + orber_test_server_uni_d \ + orber_test_timeout_server \ + orber_parent_inherrit + +GEN_HRL_TEST_SERVER = \ + oe_orber_test_server.hrl \ + orber_test_server.hrl \ + orber_test_timeout_server.hrl + +GEN_MODULES = $(GEN_MOD_ORBER) $(GEN_MOD_IIOP) \ + $(GEN_MOD_TEST_SERVER) + +ERL_FILES = $(MODULES:%=%.erl) + +HRL_FILES = + +GEN_HRL_FILES = $(GEN_HRL_ORBER) $(GEN_HRL_IIOP) \ + $(GEN_HRL_TEST_SERVER) + +GEN_FILES = \ + $(GEN_HRL_FILES:%=$(IDLOUTDIR)/%) \ + $(GEN_MODULES:%=$(IDLOUTDIR)/%.erl) + +GEN_TARGET_FILES = $(GEN_MODULES:%=$(IDLOUTDIR)/%.$(EMULATOR)) + +SUITE_TARGET_FILES = $(MODULES:%=%.$(EMULATOR)) + +TARGET_FILES = \ + $(GEN_TARGET_FILES) \ + $(SUITE_TARGET_FILES) + +# ---------------------------------------------------- +# FLAGS +# ---------------------------------------------------- +ERL_IDL_FLAGS += -pa $(ERL_TOP)/lib/orber/ebin -pa $(ERL_TOP)/lib/ic/ebin + +ERL_COMPILE_FLAGS += $(ERL_IDL_FLAGS) \ + -pa $(ERL_TOP)/lib/test_server/ebin \ + -pa $(ERL_TOP)/lib/ic/ebin \ + -pa $(ERL_TOP)/lib/orber/ebin \ + -I$(ERL_TOP)/lib/orber \ + -I$(ERL_TOP)/lib/orber/test/$(IDLOUTDIR) \ + -I$(ERL_TOP)/lib/test_server/include + +# ---------------------------------------------------- +# Targets +# ---------------------------------------------------- +tests debug opt: $(TARGET_FILES) + +clean: + rm -f idl_output/* + rm -f $(TARGET_FILES) + rm -f errs core *~ + + +docs: + +# ---------------------------------------------------- +# Special Targets +# ---------------------------------------------------- + +# +# Each IDL file produces many target files so no pattern +# rule can be used. +# +TGT_ORBER = \ + $(GEN_HRL_ORBER:%=$(IDLOUTDIR)/%) \ + $(GEN_MOD_ORBER:%=$(IDLOUTDIR)/%.erl) +TGT_IIOP = \ + $(GEN_HRL_IIOP:%=$(IDLOUTDIR)/%) \ + $(GEN_MOD_IIOP:%=$(IDLOUTDIR)/%.erl) + +TGT_TEST_SERVER = \ + $(GEN_HRL_TEST_SERVER:%=$(IDLOUTDIR)/%) \ + $(GEN_MOD_TEST_SERVER:%=$(IDLOUTDIR)/%.erl) + +$(TGT_ORBER): orber_test.idl + erlc $(ERL_IDL_FLAGS) -o$(IDLOUTDIR) orber_test.idl + +$(TGT_IIOP): iiop_test.idl + erlc $(ERL_IDL_FLAGS) -o$(IDLOUTDIR) \ + +'{preproc_flags,"-I../COSS/CosNaming"}' iiop_test.idl + +$(TGT_TEST_SERVER): orber_test_server.idl + erlc $(ERL_IDL_FLAGS) -o$(IDLOUTDIR) \ + +'{cfgfile,"orber_test_server.cfg"}' orber_test_server.idl + +# ---------------------------------------------------- +# Release Targets +# ---------------------------------------------------- +# We don't copy generated intermediate erlang and hrl files + +include $(ERL_TOP)/make/otp_release_targets.mk + +release_spec: + +release_docs_spec: + +release_tests_spec: tests + $(INSTALL_DIR) $(RELSYSDIR) + $(INSTALL_DATA) $(IDL_FILES) $(TEST_SPEC_FILE) \ + $(ERL_FILES) $(RELSYSDIR) + $(INSTALL_DATA) $(SUITE_TARGET_FILES) $(RELSYSDIR) + chmod -f -R u+w $(RELSYSDIR) + $(INSTALL_DIR) $(RELSYSDIR)/$(IDLOUTDIR) + $(INSTALL_DATA) $(GEN_TARGET_FILES) $(GEN_FILES) \ + $(RELSYSDIR)/$(IDLOUTDIR) + diff --git a/lib/orber/test/cdrcoding_10_SUITE.erl b/lib/orber/test/cdrcoding_10_SUITE.erl new file mode 100644 index 0000000000..d5d030538f --- /dev/null +++ b/lib/orber/test/cdrcoding_10_SUITE.erl @@ -0,0 +1,616 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1999-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% +%% +%% +%%----------------------------------------------------------------- +%% +%% Description: +%% Test suite for the CDR encode/decode functions +%% +%%----------------------------------------------------------------- +-module(cdrcoding_10_SUITE). + + +-include("idl_output/Module.hrl"). +-include("test_server.hrl"). +-include_lib("orber/include/corba.hrl"). +-include_lib("orber/src/orber_iiop.hrl"). + +-define(default_timeout, ?t:minutes(20)). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1]). + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- +-export([]). +-compile(export_all). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["Description", "more description"]; +all(suite) -> {req, + [mnesia], + {conf, init_all, cases(), finish_all}}. + +cases() -> + [types, reply, cancel_request, close_connection, message_error]. +%% request, locate_request, locate_reply]. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- + +init_per_testcase(_Case, Config) -> + Path = code:which(?MODULE), + code:add_pathz(filename:join(filename:dirname(Path), "idl_output")), + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Path = code:which(?MODULE), + code:del_path(filename:join(filename:dirname(Path), "idl_output")), + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +init_all(Config) when is_list(Config) -> + orber:jump_start(0), + if + is_list(Config) -> + Config; + true -> + exit("Config not a list") + end. + +finish_all(Config) when is_list(Config) -> + orber:jump_stop(), + Config. + +%%----------------------------------------------------------------- +%% Test Case: type encoding tests +%% Description: Just testing the complex types, the others are +%% tested in the cdrlib SUITE. +%%----------------------------------------------------------------- +types(doc) -> ["Description", "more description"]; +types(suite) -> [do_register, null_type, void_type, principal_type, + objref_type, struct_type, union_type, string_type, + array_type, any_type, typecode_type, alias_type, + exception_type, do_unregister]. +%types(Config) when list(Config) -> +% 'oe_orber_test':'oe_register'(), +% null_type(), +% void_type(), +% principal_type(), +% objref_type(), +% struct_type(), +% union_type(), +% string_type(), +% array_type(), +% any_type(), +% typecode_type(), +% alias_type(), +% exception_type(), +% 'oe_orber_test':'oe_unregister'(), +% ok. + +do_register(doc) -> []; +do_register(suite) -> []; +do_register(Config) when is_list(Config) -> + io:format("Pwd: ~p, mod: ~p~n",[c:pwd(), c:m('oe_orber_test')]), + 'oe_orber_test':'oe_register'(), + ok. +do_unregister(doc) -> []; +do_unregister(suite) -> []; +do_unregister(Config) when is_list(Config) -> + 'oe_orber_test':'oe_unregister'(), + ok. +%%----------------------------------------------------------------- +%% Encode/decode test of type: null +%%----------------------------------------------------------------- +null_type(doc) -> []; +null_type(suite) -> []; +null_type(Config) when is_list(Config) -> + ?line B = cdr_encode:enc_type(#giop_env{version = {1, 0}}, 'tk_null', 'null'), + ?line {'null', <<>>, _} = cdr_decode:dec_type('tk_null', {1, 0}, B, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Encode/decode test of type: void +%%----------------------------------------------------------------- +void_type(doc) -> []; +void_type(suite) -> []; +void_type(Config) when is_list(Config) -> + ?line B = cdr_encode:enc_type(#giop_env{version = {1, 0}}, 'tk_void', 'ok'), + ?line {'ok', <<>>, _} = cdr_decode:dec_type('tk_void', {1, 0}, B, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Encode/decode test of type: principal +%%----------------------------------------------------------------- +principal_type(doc) -> []; +principal_type(suite) -> []; +principal_type(Config) when is_list(Config) -> + ?line B0 = cdr_encode:enc_type(#giop_env{version = {1, 0}}, 'tk_Principal', "principal"), + ?line {"principal", <<>>, _} = cdr_decode:dec_type('tk_Principal', {1, 0}, B0, 0, big), + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 0}}, 'tk_Principal', ""), + ?line {"", <<>>, _} = cdr_decode:dec_type('tk_Principal', {1, 0}, B1, 0, big), + ?line B2 = cdr_encode:enc_type(#giop_env{version = {1, 0}}, 'tk_Principal', "principal"), + ?line {"principal", <<>>, _} = + cdr_decode:dec_type('tk_Principal', {1, 0}, B2, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Encode/decode test of type: object reference +%%----------------------------------------------------------------- +version() -> #'IIOP_Version'{major=1,minor=0}. + +objref(0) -> + PB = #'IIOP_ProfileBody_1_0'{iiop_version=version(), + host="my.hostname.org", + port=4040, + object_key="ExternalKey: which is an arbitary octet sequence"}, + TP = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB}, + #'IOP_IOR'{type_id="IDL:Module/Interface:1.0", profiles=[TP]}; +objref(1) -> + K = corba_fake_mk_objkey("IDL:Module/Interface:1.0", key, + list_to_pid("<0.100.0>")), + PB = #'IIOP_ProfileBody_1_0'{iiop_version=version(), + host="my.hostname.org", + port=4040, + object_key=K}, + TP = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB}, + #'IOP_IOR'{type_id="IDL:Module/Interface:1.0", profiles=[TP]}; +objref(2) -> + K = corba_fake_mk_objkey("IDL:Module/Interface:1.0", registered, + list_to_atom("orber_nameservice")), + PB = #'IIOP_ProfileBody_1_0'{iiop_version=version(), + host="my.hostname.org", + port=4040, + object_key=K}, + TP = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB}, + #'IOP_IOR'{type_id="IDL:Module/Interface:1.0", profiles=[TP]}. + +objref_type(doc) -> []; +objref_type(suite) -> []; +objref_type(Config) when is_list(Config) -> + T = {'tk_objref', "IDL:Module/Interface:1.0", "Interface"}, + Objref0 = objref(0), + ?line B0 = cdr_encode:enc_type(#giop_env{version = {1, 0}}, T, Objref0), + ?line {Objref0, <<>>, _} = cdr_decode:dec_type(T, {1, 0}, B0, 0, big), + Objref1 = objref(1), + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 0}}, T, Objref1), + ?line {Objref1, <<>>, _} = cdr_decode:dec_type(T, {1, 0}, B1, 0, big), + Objref2 = objref(2), + ?line B2 = cdr_encode:enc_type(#giop_env{version = {1, 0}}, T, Objref2), + ?line {Objref2, <<>>, _} = cdr_decode:dec_type(T, {1, 0}, B2, 0, big), + ok. + + + +%%----------------------------------------------------------------- +%% Encode/decode test of type: struct +%%----------------------------------------------------------------- +struct_type(doc) -> []; +struct_type(suite) -> []; +struct_type(Config) when is_list(Config) -> + T0 = {'tk_struct',"IDL:Module/Struct0:1.0", "Module_Struct0", + [{"long", 'tk_long'}, {"short", 'tk_short'}, {"character", 'tk_char'}]}, + S0 = #'Module_Struct0'{l=-4711, s=17, c=$a}, + ?line B0 = cdr_encode:enc_type({1, 0}, T0, S0), + ?line {S0, <<>>, _} = cdr_decode:dec_type(T0, {1, 0}, B0, 0, big), + + T1 = {'tk_struct', "IDL:Module/Struct1:1.0", "Module_Struct1", + [{"string", {'tk_string', 0}}, {"ushort", 'tk_ushort'}, {"ulong", 'tk_ulong'}]}, + S1 = #'Module_Struct1'{s="Hi !!!!", us=17, ul=4711}, + ?line B1 = cdr_encode:enc_type({1, 0}, T1, S1), + ?line {S1, <<>>, _} = cdr_decode:dec_type(T1, {1, 0}, B1, 0, big), + + T2 = {'tk_struct', "IDL:Module/Struct2:1.0", "Module_Struct2", + [{"long_sequence", {'tk_sequence', 'tk_long', 0}}, + {"enum", {'tk_enum', "IDL:Module/Enum:1.0", "Module_Enum", ["horse", "pig", "cow"]}}, + {"octet", 'tk_octet'}]}, + S2 = #'Module_Struct2'{long_sequence=[4711, 350000, 0, -3030, -600000], e=cow, o=$X}, + ?line B2 = cdr_encode:enc_type({1, 0}, T2, S2), + ?line {S2, <<>>, _} = cdr_decode:dec_type(T2, {1, 0}, B2, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Encode/decode test of type: union +%%----------------------------------------------------------------- +union_type(doc) -> []; +union_type(suite) -> []; +union_type(Config) when is_list(Config) -> + T0 = {'tk_union', "IDL:Module/Union:1.0", "Union", 'tk_short', 2, + [{0, "First", 'tk_short'}, + {1, "Second", {'tk_string', 0}}, + {2, "Third", 'tk_char'}]}, + S0 = #'Module_Union'{label=1, value="Foo Bar !"}, + ?line B0 = cdr_encode:enc_type({1, 0}, T0, S0), + ?line {S0, <<>>, _} = cdr_decode:dec_type(T0, {1, 0}, B0, 0, big), + S1 = #'Module_Union'{label=0, value=-17}, + ?line B1 = cdr_encode:enc_type({1, 0}, T0, S1), + ?line {S1, <<>>, _} = cdr_decode:dec_type(T0, {1, 0}, B1, 0, big), + S2 = #'Module_Union'{label=2, value=$X}, + ?line B2 = cdr_encode:enc_type({1, 0}, T0, S2), + ?line {S2, <<>>, _} = cdr_decode:dec_type(T0, {1, 0}, B2, 0, big), + T1 = {'tk_union', "IDL:Module/Union1:1.0", "Union1", + {'tk_enum', "IDL:Module/Enum:1.0", + "Module_Enum", ["horse", "pig", "cow"]}, "pig", + [{"horse", "First", 'tk_ushort'}, + {"pig", "Second", {'tk_sequence', {'tk_string', 0}, 0}}, + {"cow", "Third", {'tk_enum', "IDL:Module/Enum1:1.0", + "Module_Enum1", ["orange", "banana", "apple"]}}]}, + S3 = #'Module_Union1'{label=pig, value=["Foo", "Bar", "!"]}, + ?line B3 = cdr_encode:enc_type({1, 0}, T1, S3), + ?line {S3, <<>>, _} = cdr_decode:dec_type(T1, {1, 0}, B3, 0, big), + S4 = #'Module_Union1'{label=cow, value=apple}, + ?line B4 = cdr_encode:enc_type({1, 0}, T1, S4), + ?line {S4, <<>>, _} = cdr_decode:dec_type(T1, {1, 0}, B4, 0, big), + S5 = #'Module_Union1'{label=horse, value=17}, + ?line B5 = cdr_encode:enc_type({1, 0}, T1, S5), + ?line {S5, <<>>, _} = cdr_decode:dec_type(T1, {1, 0}, B5, 0, big), + T2 = {'tk_union', "IDL:Module/Union2:1.0", "Union2", + {'tk_enum', "IDL:Module/Enum:1.0", + "Module_Enum", ["horse", "pig", "cow"]}, "pig", + [{"horse", "First", {'tk_array', 'tk_long', 3}}, + {"pig", "Second", + {'tk_union', "IDL:Module/Union:1.0", "Union", 'tk_short', 2, + [{0, "First", 'tk_short'}, + {1, "Second", {'tk_string', 0}}, + {2, "Third", 'tk_char'}]}}, + {"cow", "Third", {'tk_union', "IDL:Module/Union1:1.0", "Union1", + {'tk_enum', "IDL:Module/Enum:1.0", + "Module_Enum", ["horse", "pig", "cow"]}, "pig", + [{"horse", "First", 'tk_ushort'}, + {"pig", "Second", {'tk_sequence', + {'tk_string', 0}, 0}}, + {"cow", "Third", {'tk_enum', + "IDL:Module/Enum1:1.0", + "Module_Enum1", + ["orange", "banana", + "apple"]}}]}}]}, + S6 = #'Module_Union2'{label=pig, value=#'Module_Union'{label=0, value=-17}}, + ?line B6 = cdr_encode:enc_type({1, 0}, T2, S6), + ?line {S6, <<>>, _} = cdr_decode:dec_type(T2, {1, 0}, B6, 0, big), + S7 = #'Module_Union2'{label=cow, value=#'Module_Union1'{label=pig, + value=["Foo", "Bar", "!"]}}, + ?line B7 = cdr_encode:enc_type({1, 0}, T2, S7), + ?line {S7, <<>>, _} = cdr_decode:dec_type(T2, {1, 0}, B7, 0, big), + S8 = #'Module_Union2'{label=horse, value={-17, 1234567890, -987654321}}, + ?line B8 = cdr_encode:enc_type({1, 0}, T2, S8), + ?line {S8, <<>>, _} = cdr_decode:dec_type(T2, {1, 0}, B8, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Encode/decode test of type: string +%%----------------------------------------------------------------- +string_type(doc) -> []; +string_type(suite) -> []; +string_type(Config) when is_list(Config) -> + S0 = "Foo Bar ???", + ?line B0 = cdr_encode:enc_type({1, 0}, {'tk_string', 0}, S0), + ?line {S0, <<>>, _} = cdr_decode:dec_type({'tk_string', 0}, {1, 0}, B0, 0, big), + S1 = "Yes, Foo Bar !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! more than 5000 characters", + ?line B1 = cdr_encode:enc_type({1, 0}, {'tk_string', 0}, S1), + ?line {S1, <<>>, _} = cdr_decode:dec_type({'tk_string', 0}, {1, 0}, B1, 0, big), + S2 = "", + ?line B2 = cdr_encode:enc_type({1, 0}, {'tk_string', 0}, S2), + ?line {S2, <<>>, _} = cdr_decode:dec_type({'tk_string', 0}, {1, 0}, B2, 0, big), + S3 = "\0", + ?line B3 = cdr_encode:enc_type({1, 0}, {'tk_string', 0}, S3), + ?line {S3, <<>>, _} = cdr_decode:dec_type({'tk_string', 0}, {1, 0}, B3, 0, big), + S4 = "~n", + ?line B4 = cdr_encode:enc_type({1, 0}, {'tk_string', 0}, S4), + ?line {S4, <<>>, _} = cdr_decode:dec_type({'tk_string', 0}, {1, 0}, B4, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Encode/decode test of type: array +%%----------------------------------------------------------------- +array_type(doc) -> []; +array_type(suite) -> []; +array_type(Config) when is_list(Config) -> + T0 = {'tk_array', 'tk_long', 5}, + S0 = {-100, 0, 30000, -900100900, 123456789}, + ?line B0 = cdr_encode:enc_type(#giop_env{version = {1, 0}}, T0, S0), + ?line {S0, <<>>, _} = cdr_decode:dec_type(T0, {1, 0}, B0, 0, big), + T1 = {'tk_array', {'tk_enum', "IDL:Module/Enum:1.0", "Module_Enum", ["horse", "pig", "cow"]}, 2}, + S1 = {pig, cow}, + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 0}}, T1, S1), + ?line {S1, <<>>, _} = cdr_decode:dec_type(T1, {1, 0}, B1, 0, big), + T2 = {'tk_array', {'tk_union', "IDL:Module/Union:1.0", "Union", + {'tk_enum', "IDL:Module/Enum:1.0", "Module_Enum", ["horse", "pig", "cow"]}, "pig", + [{"horse", "First", 'tk_ushort'}, + {"pig", "Second", {'tk_sequence', {'tk_string', 0}, 0}}, + {"cow", "Third", {'tk_enum', "IDL:Module/Enum1:1.0", + "Module_Enum1", ["orange", "banana", "apple"]}}]}, 2}, + S2 = {#'Module_Union'{label=cow, value=banana}, #'Module_Union'{label=pig, value=["This", "is", "a", "test", ""]}}, + ?line B2 = cdr_encode:enc_type(#giop_env{version = {1, 0}}, T2, S2), + ?line {S2, <<>>, _} = cdr_decode:dec_type(T2, {1, 0}, B2, 0, big), + T3 = {'tk_array', {'tk_objref', "IDL:Module/Interface:1.0", "Interface"}, 3}, + S3 = {objref(0), objref(1), objref(2)}, + ?line B3 = cdr_encode:enc_type(#giop_env{version = {1, 0}}, T3, S3), + ?line {S3, <<>>, _} = cdr_decode:dec_type(T3, {1, 0}, B3, 0, big), + ok. +%%----------------------------------------------------------------- +%% Encode/decode test of type: TypeCode +%%----------------------------------------------------------------- +any_type(doc) -> []; +any_type(suite) -> []; +any_type(Config) when is_list(Config) -> + T = 'tk_any', + TC = {'tk_struct', "IDL:Module/Struct2:1.0", "Module_Struct2", + [{"long_sequence", {'tk_sequence', 'tk_long', 0}}, + {"enum", {'tk_enum', "IDL:Module/Enum:1.0", "Module_Enum", + ["horse", "pig", "cow"]}}, + {"octet", 'tk_octet'}]}, + S = #'Module_Struct2'{long_sequence=[4711, 350000, 0, -3030, -600000], + e=cow, o=$X}, + Any = #any{typecode=TC,value=S}, + ?line B = cdr_encode:enc_type(#giop_env{version = {1, 0}}, T,Any), + ?line {Any, <<>>, _} = cdr_decode:dec_type(T, {1, 0}, B, 0, big), + TC1 = {'tk_array', {'tk_union', "IDL:Module/Union:1.0", "Union", + {'tk_enum', "IDL:Module/Enum:1.0", "Module_Enum", + ["horse", "pig", "cow"]}, 1, + [{"horse", "First", 'tk_ushort'}, + {"pig", "Second", {'tk_sequence', {'tk_string', 0}, 0}}, + {"cow", "Third", {'tk_enum', "IDL:Module/Enum1:1.0", + "Module_Enum1", ["orange", "banana", + "apple"]}}]},2}, + S1 = {#'Module_Union'{label=cow, value=banana}, #'Module_Union'{label=pig, value=["This", "is", "a", "test", ""]}}, + Any1 = #any{typecode=TC1,value=S1}, + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 0}}, T,Any1), + ?line {Any1, <<>>, _} = cdr_decode:dec_type(T, {1, 0}, B1, 0, big), + ok. + + +%%----------------------------------------------------------------- +%% Encode/decode test of type: TypeCode +%%----------------------------------------------------------------- +typecode_type(doc) -> []; +typecode_type(suite) -> []; +typecode_type(Config) when is_list(Config) -> + T = 'tk_TypeCode', + TC = {'tk_array', {'tk_union', "IDL:Module/Union:1.0", "Union", + {'tk_enum', "IDL:Module/Enum:1.0", "Module_Enum", + ["horse", "pig", "cow"]}, 1, + [{"horse", "First", 'tk_ushort'}, + {"pig", "Second", {'tk_sequence', {'tk_string', 0}, 0}}, + {"cow", "Third", {'tk_enum', "IDL:Module/Enum1:1.0", + "Module_Enum1", ["orange", "banana", + "apple"]}}]}, 10}, + ?line B = cdr_encode:enc_type(#giop_env{version = {1, 0}}, T,TC), + ?line {TC, <<>>, _} = cdr_decode:dec_type(T, {1, 0}, B, 0, big), + TC1 = {'tk_union', "IDL:Module/Union2:1.0", "Union2", + {'tk_enum', "IDL:Module/Enum:1.0", + "Module_Enum", ["horse", "pig", "cow"]}, 2, + [{"horse", "First", 'tk_long'}, + {"pig", "Second", + {'tk_union', "IDL:Module/Union:1.0", "Union", 'tk_short', 2, + [{0, "First", 'tk_short'}, + {1, "Second", {'tk_string', 0}}, + {2, "Third", 'tk_char'}]}}, + {"cow", "Third", {'tk_union', "IDL:Module/Union1:1.0", "Union1", + {'tk_enum', "IDL:Module/Enum:1.0", + "Module_Enum", ["horse", "pig", "cow"]}, 2, + [{"horse", "First", 'tk_ushort'}, + {"pig", "Second", {'tk_sequence', + {'tk_string', 0}, 0}}, + {"cow", "Third", {'tk_enum', + "IDL:Module/Enum1:1.0", + "Module_Enum1", + ["orange", "banana", + "apple"]}}]}}]}, + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 0}}, T, TC1), + ?line {TC1, <<>>, _} = cdr_decode:dec_type(T, {1, 0}, B1, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Encode/decode test of type: TypeCode +%%----------------------------------------------------------------- +alias_type(doc) -> []; +alias_type(suite) -> []; +alias_type(Config) when is_list(Config) -> + T = {'tk_alias', "IDL:Module/Alias:1.0", "Alias", + {'tk_struct', "IDL:Module/Struct2:1.0", "Module_Struct2", + [{"long_sequence", {'tk_sequence', 'tk_long', 0}}, + {"enum", {'tk_enum', "IDL:Module/Enum:1.0", "Module_Enum", + ["horse", "pig", "cow"]}}, + {"octet", 'tk_octet'}]}}, + S = #'Module_Struct2'{long_sequence=[4711, 350000, 0, -3030, -600000], + e=cow, o=$X}, + ?line B = cdr_encode:enc_type(#giop_env{version = {1, 0}}, T,S), + ?line {S, <<>>, _} = cdr_decode:dec_type(T, {1, 0}, B, 0, big), + T1 = {'tk_alias', "IDL:Module/Alias1:1.0", "Alias1", + {'tk_sequence', {'tk_union', "IDL:Module/Union:1.0", "Union", + {'tk_enum', "IDL:Module/Enum:1.0", "Module_Enum", + ["horse", "pig", "cow"]}, 2, + [{"horse", "First", 'tk_ushort'}, + {"pig", "Second", {'tk_sequence', {'tk_string', 0}, 0}}, + {"cow", "Third", {'tk_enum', "IDL:Module/Enum1:1.0", + "Module_Enum1", ["orange", "banana", + "apple"]}}]},0}}, + S1 = [#'Module_Union'{label=cow, value=banana}, #'Module_Union'{label=pig, value=["This", "is", "a", "test", ""]}], + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 0}}, T1, S1), + ?line {S1, <<>>, _} = cdr_decode:dec_type(T1, {1, 0}, B1, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Encode/decode test of type: exception +%%----------------------------------------------------------------- +exception_type(doc) -> []; +exception_type(suite) -> []; +exception_type(Config) when is_list(Config) -> + system_exceptions(), + user_exceptions(), + ok. + +system_exceptions() -> + E = #'UNKNOWN'{completion_status=?COMPLETED_YES}, + {system_exception, T, E} = orber_exceptions:get_def(E), + ?line B = cdr_encode:enc_type(#giop_env{version = {1, 0}}, T,E), + ?line {E, _} = cdr_decode:dec_system_exception({1, 0}, B, 0, big), + E1 = #'INV_OBJREF'{completion_status=?COMPLETED_NO}, + {system_exception, T1, E1} = orber_exceptions:get_def(E1), + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 0}}, T1,E1), + ?line {E1, _} = cdr_decode:dec_system_exception({1, 0}, B1, 0, big), + E2 = #'BAD_OPERATION'{completion_status=?COMPLETED_NO}, + {system_exception, T2, E2} = orber_exceptions:get_def(E2), + ?line B2 = cdr_encode:enc_type(#giop_env{version = {1, 0}}, T2,E2), + ?line {E2, _} = cdr_decode:dec_system_exception({1, 0}, B2, 0, big), + E3 = #'INTF_REPOS'{completion_status=?COMPLETED_MAYBE}, + {system_exception, T3, E3} = orber_exceptions:get_def(E3), + ?line B3 = cdr_encode:enc_type(#giop_env{version = {1, 0}}, T3,E3), + ?line {E3, _} = cdr_decode:dec_system_exception({1, 0}, B3, 0, big), + ok. + +user_exceptions() -> + E = #'Module_Except1'{rest_of_name=["I","am","testing","exceptions"], why="Error"}, + {user_exception, T, E} = orber_exceptions:get_def(E), + ?line B = cdr_encode:enc_type(#giop_env{version = {1, 0}}, T, E), + ?line {E, _} = cdr_decode:dec_user_exception({1, 0}, B, 0, big), + E1 = #'Module_Except2'{e=banana, + s=#'Module_Struct2'{long_sequence=[12,-4040, + 1234567898], + e=horse, + o=$a}}, + {user_exception, T1, E1} = orber_exceptions:get_def(E1), + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 0}}, T1, E1), + ?line {E1, _} = cdr_decode:dec_user_exception({1, 0}, B1, 0, big), + E2 = #'Module_Except3'{u=#'Module_Union1'{label=pig,value=["high","and","low"]},s=1313, o=objref(0)}, + {user_exception, T2, E2} = orber_exceptions:get_def(E2), + ?line B2 = cdr_encode:enc_type(#giop_env{version = {1, 0}}, T2, E2), + ?line {E2, _} = cdr_decode:dec_user_exception({1, 0}, B2, 0, big), + E3 = #'Module_Except4'{}, + {user_exception, T3, E3} = orber_exceptions:get_def(E3), + ?line B3 = cdr_encode:enc_type(#giop_env{version = {1, 0}}, T3, E3), + ?line {E3, _} = cdr_decode:dec_user_exception({1, 0}, B3, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Test Case: request encoding test +%% Description: Precondition the stack must be started so the +%% objectkey is valid. +%%----------------------------------------------------------------- +%request(suite) -> []; +%request(_) -> +% exit(not_implemented). + +%%----------------------------------------------------------------- +%% Test Case: reply encoding test +%% Description: +%%----------------------------------------------------------------- +reply(doc) -> ["Description", "more description"]; +reply(suite) -> []; +reply(Config) when is_list(Config) -> + R = #reply_header{service_context=[], request_id=1, + reply_status='no_exception'}, + ?line B = cdr_encode:enc_reply( + #giop_env{version = {1, 0}, request_id = 1, + reply_status = 'no_exception', + tc = {'tk_long', [], [{'tk_sequence', + {'tk_string', 0}, 0}]}, + result = 1200, parameters = [["foo","Bar"]], + ctx = []}), + ?line {R, 1200, [["foo","Bar"]]} = + cdr_decode:dec_message({'tk_long', [], [{'tk_sequence', {'tk_string', 0},0}]}, + B), + ok. + +%%----------------------------------------------------------------- +%% Test Case: cancel_request encoding test +%% Description: +%%----------------------------------------------------------------- +cancel_request(doc) -> ["Description", "more description"]; +cancel_request(suite) -> []; +cancel_request(Config) when is_list(Config) -> + R = #cancel_request_header{request_id=1}, + ?line B = cdr_encode:enc_cancel_request(#giop_env{version = {1, 0}, + request_id = 1}), + ?line R = cdr_decode:dec_message([], B), + ok. + +%%----------------------------------------------------------------- +%% Test Case: locate_request encoding test +%% Description: +%%----------------------------------------------------------------- +locate_request(doc) -> ["Description", "more description"]; +locate_request(suite) -> []; +locate_request(Config) when is_list(Config) -> + io:format("Function not imlpemented yet"), + exit(not_implemented). + +%%----------------------------------------------------------------- +%% Test Case: locate_reply encoding test +%% Description: +%%----------------------------------------------------------------- +locate_reply(doc) -> ["Description", "more description"]; +locate_reply(suite) -> []; +locate_reply(Config) when is_list(Config) -> + io:format("Function not imlpemented yet"), + exit(not_implemented). + +%%----------------------------------------------------------------- +%% Test Case: close_connection encoding test +%% Description: +%%----------------------------------------------------------------- +close_connection(doc) -> ["Description", "more description"]; +close_connection(suite) -> []; +close_connection(Config) when is_list(Config) -> + ?line B = cdr_encode:enc_close_connection(#giop_env{version = {1, 0}}), + ?line 'close_connection' = cdr_decode:dec_message([], B), + ok. + +%%----------------------------------------------------------------- +%% Test Case: message_error encoding test +%% Description: +%%----------------------------------------------------------------- +message_error(doc) -> ["Description", "more description"]; +message_error(suite) -> []; +message_error(Config) when is_list(Config) -> + ?line B = cdr_encode:enc_message_error(#giop_env{version = {1, 0}}), + ?line 'message_error' = cdr_decode:dec_message([], B), + ok. + + + +%%----------------------------------------------------------------- +%% Internal functions +%%----------------------------------------------------------------- +corba_fake_mk_objkey(Id, 'key', Pid) when is_pid(Pid) -> + Key = make_objkey(), + {list_to_binary(Id), 'key', Key, term_to_binary(undefined), + term_to_binary(undefined), term_to_binary(undefined)}; +corba_fake_mk_objkey(Id, 'key', RegName) when is_atom(RegName) -> + Key = term_to_binary(RegName), + {list_to_binary(Id), 'key', Key, term_to_binary(undefined), + term_to_binary(undefined), term_to_binary(undefined)}; +corba_fake_mk_objkey(Id, 'registered', RegName) when is_atom(RegName) -> + {list_to_binary(Id), 'registered', RegName, term_to_binary(undefined), + term_to_binary(undefined), term_to_binary(undefined)}. + +make_objkey() -> + term_to_binary({now(), node()}). diff --git a/lib/orber/test/cdrcoding_11_SUITE.erl b/lib/orber/test/cdrcoding_11_SUITE.erl new file mode 100644 index 0000000000..d62fe6eb3a --- /dev/null +++ b/lib/orber/test/cdrcoding_11_SUITE.erl @@ -0,0 +1,615 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1997-2010. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%----------------------------------------------------------------- +%% +%% Description: +%% Test suite for the CDR encode/decode functions +%% +%%----------------------------------------------------------------- +-module(cdrcoding_11_SUITE). + + +-include("idl_output/Module.hrl"). +-include("test_server.hrl"). +-include_lib("orber/include/corba.hrl"). +-include_lib("orber/src/orber_iiop.hrl"). + +-define(default_timeout, ?t:minutes(5)). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1]). + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- +-export([]). +-compile(export_all). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["Description", "more description"]; +all(suite) -> {req, + [mnesia], + {conf, init_all, cases(), finish_all}}. + +cases() -> + [types, reply, cancel_request, close_connection, message_error]. +%% request, locate_request, locate_reply]. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- + +init_per_testcase(_Case, Config) -> + Path = code:which(?MODULE), + code:add_pathz(filename:join(filename:dirname(Path), "idl_output")), + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Path = code:which(?MODULE), + code:del_path(filename:join(filename:dirname(Path), "idl_output")), + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +init_all(Config) when is_list(Config) -> + orber:jump_start(0), + if + is_list(Config) -> + Config; + true -> + exit("Config not a list") + end. + +finish_all(Config) when is_list(Config) -> + orber:jump_stop(), + Config. + +%%----------------------------------------------------------------- +%% Test Case: type encoding tests +%% Description: Just testing the complex types, the others are +%% tested in the cdrlib SUITE. +%%----------------------------------------------------------------- +types(doc) -> ["Description", "more description"]; +types(suite) -> [do_register, null_type, void_type, principal_type, + objref_type, struct_type, union_type, string_type, + array_type, any_type, typecode_type, alias_type, + exception_type, do_unregister]. +%types(Config) when list(Config) -> +% 'oe_orber_test':'oe_register'(), +% null_type(), +% void_type(), +% principal_type(), +% objref_type(), +% struct_type(), +% union_type(), +% string_type(), +% array_type(), +% any_type(), +% typecode_type(), +% alias_type(), +% exception_type(), +% 'oe_orber_test':'oe_unregister'(), +% ok. + +do_register(doc) -> []; +do_register(suite) -> []; +do_register(Config) when is_list(Config) -> + 'oe_orber_test':'oe_register'(), + ok. +do_unregister(doc) -> []; +do_unregister(suite) -> []; +do_unregister(Config) when is_list(Config) -> + 'oe_orber_test':'oe_unregister'(), + ok. +%%----------------------------------------------------------------- +%% Encode/decode test of type: null +%%----------------------------------------------------------------- +null_type(doc) -> []; +null_type(suite) -> []; +null_type(Config) when is_list(Config) -> + ?line B = cdr_encode:enc_type(#giop_env{version = {1, 1}}, 'tk_null', 'null'), + ?line {'null', <<>>, _} = cdr_decode:dec_type('tk_null', {1, 1}, B, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Encode/decode test of type: void +%%----------------------------------------------------------------- +void_type(doc) -> []; +void_type(suite) -> []; +void_type(Config) when is_list(Config) -> + ?line B = cdr_encode:enc_type(#giop_env{version = {1, 1}}, 'tk_void', 'ok'), + ?line {'ok', <<>>, _} = cdr_decode:dec_type('tk_void', {1, 1}, B, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Encode/decode test of type: principal +%%----------------------------------------------------------------- +principal_type(doc) -> []; +principal_type(suite) -> []; +principal_type(Config) when is_list(Config) -> + ?line B0 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, 'tk_Principal', "principal"), + ?line {"principal", <<>>, _} = cdr_decode:dec_type('tk_Principal', {1, 1}, B0, 0, big), + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, 'tk_Principal', ""), + ?line {"", <<>>, _} = cdr_decode:dec_type('tk_Principal', {1, 1}, B1, 0, big), + ?line B2 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, 'tk_Principal', "principal"), + ?line {"principal", <<>>, _} = + cdr_decode:dec_type('tk_Principal', {1, 1}, B2, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Encode/decode test of type: object reference +%%----------------------------------------------------------------- +version() -> #'IIOP_Version'{major=1,minor=1}. + +objref(0) -> + PB = #'IIOP_ProfileBody_1_1'{iiop_version=version(), + host="my.hostname.org", + port=4040, + object_key="ExternalKey: which is an arbitary octet sequence", + components=[]}, + TP = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB}, + #'IOP_IOR'{type_id="IDL:Module/Interface:1.0", profiles=[TP]}; +objref(1) -> + K = corba_fake_mk_objkey("IDL:Module/Interface:1.0", key, + list_to_pid("<0.100.0>")), + PB = #'IIOP_ProfileBody_1_1'{iiop_version=version(), + host="my.hostname.org", + port=4040, + object_key=K, components=[]}, + TP = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB}, + #'IOP_IOR'{type_id="IDL:Module/Interface:1.0", profiles=[TP]}; +objref(2) -> + K = corba_fake_mk_objkey("IDL:Module/Interface:1.0", registered, + list_to_atom("orber_nameservice")), + PB = #'IIOP_ProfileBody_1_1'{iiop_version=version(), + host="my.hostname.org", + port=4040, + object_key=K, components=[]}, + TP = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB}, + #'IOP_IOR'{type_id="IDL:Module/Interface:1.0", profiles=[TP]}. + +objref_type(doc) -> []; +objref_type(suite) -> []; +objref_type(Config) when is_list(Config) -> + T = {'tk_objref', "IDL:Module/Interface:1.0", "Interface"}, + Objref0 = objref(0), + ?line B0 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T, Objref0), + ?line {Objref0, <<>>, _} = cdr_decode:dec_type(T, {1, 1}, B0, 0, big), + Objref1 = objref(1), + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T, Objref1), + ?line {Objref1, <<>>, _} = cdr_decode:dec_type(T, {1, 1}, B1, 0, big), + Objref2 = objref(2), + ?line B2 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T, Objref2), + ?line {Objref2, <<>>, _} = cdr_decode:dec_type(T, {1, 1}, B2, 0, big), + ok. + + + +%%----------------------------------------------------------------- +%% Encode/decode test of type: struct +%%----------------------------------------------------------------- +struct_type(doc) -> []; +struct_type(suite) -> []; +struct_type(Config) when is_list(Config) -> + T0 = {'tk_struct',"IDL:Module/Struct0:1.0", "Module_Struct0", + [{"long", 'tk_long'}, {"short", 'tk_short'}, {"character", 'tk_char'}]}, + S0 = #'Module_Struct0'{l=-4711, s=17, c=$a}, + ?line B0 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T0, S0), + ?line {S0, <<>>, _} = cdr_decode:dec_type(T0, {1, 1}, B0, 0, big), + + T1 = {'tk_struct', "IDL:Module/Struct1:1.0", "Module_Struct1", + [{"string", {'tk_string', 0}}, {"ushort", 'tk_ushort'}, {"ulong", 'tk_ulong'}]}, + S1 = #'Module_Struct1'{s="Hi !!!!", us=17, ul=4711}, + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T1, S1), + ?line {S1, <<>>, _} = cdr_decode:dec_type(T1, {1, 1}, B1, 0, big), + + T2 = {'tk_struct', "IDL:Module/Struct2:1.0", "Module_Struct2", + [{"long_sequence", {'tk_sequence', 'tk_long', 0}}, + {"enum", {'tk_enum', "IDL:Module/Enum:1.0", "Module_Enum", ["horse", "pig", "cow"]}}, + {"octet", 'tk_octet'}]}, + S2 = #'Module_Struct2'{long_sequence=[4711, 350000, 0, -3030, -600000], e=cow, o=$X}, + ?line B2 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T2, S2), + ?line {S2, <<>>, _} = cdr_decode:dec_type(T2, {1, 1}, B2, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Encode/decode test of type: union +%%----------------------------------------------------------------- +union_type(doc) -> []; +union_type(suite) -> []; +union_type(Config) when is_list(Config) -> + T0 = {'tk_union', "IDL:Module/Union:1.0", "Union", 'tk_short', 2, + [{0, "First", 'tk_short'}, + {1, "Second", {'tk_string', 0}}, + {2, "Third", 'tk_char'}]}, + S0 = #'Module_Union'{label=1, value="Foo Bar !"}, + ?line B0 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T0, S0), + ?line {S0, <<>>, _} = cdr_decode:dec_type(T0, {1, 1}, B0, 0, big), + S1 = #'Module_Union'{label=0, value=-17}, + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T0, S1), + ?line {S1, <<>>, _} = cdr_decode:dec_type(T0, {1, 1}, B1, 0, big), + S2 = #'Module_Union'{label=2, value=$X}, + ?line B2 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T0, S2), + ?line {S2, <<>>, _} = cdr_decode:dec_type(T0, {1, 1}, B2, 0, big), + T1 = {'tk_union', "IDL:Module/Union1:1.0", "Union1", + {'tk_enum', "IDL:Module/Enum:1.0", + "Module_Enum", ["horse", "pig", "cow"]}, "pig", + [{"horse", "First", 'tk_ushort'}, + {"pig", "Second", {'tk_sequence', {'tk_string', 0}, 0}}, + {"cow", "Third", {'tk_enum', "IDL:Module/Enum1:1.0", + "Module_Enum1", ["orange", "banana", "apple"]}}]}, + S3 = #'Module_Union1'{label=pig, value=["Foo", "Bar", "!"]}, + ?line B3 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T1, S3), + ?line {S3, <<>>, _} = cdr_decode:dec_type(T1, {1, 1}, B3, 0, big), + S4 = #'Module_Union1'{label=cow, value=apple}, + ?line B4 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T1, S4), + ?line {S4, <<>>, _} = cdr_decode:dec_type(T1, {1, 1}, B4, 0, big), + S5 = #'Module_Union1'{label=horse, value=17}, + ?line B5 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T1, S5), + ?line {S5, <<>>, _} = cdr_decode:dec_type(T1, {1, 1}, B5, 0, big), + T2 = {'tk_union', "IDL:Module/Union2:1.0", "Union2", + {'tk_enum', "IDL:Module/Enum:1.0", + "Module_Enum", ["horse", "pig", "cow"]}, "pig", + [{"horse", "First", {'tk_array', 'tk_long', 3}}, + {"pig", "Second", + {'tk_union', "IDL:Module/Union:1.0", "Union", 'tk_short', 2, + [{0, "First", 'tk_short'}, + {1, "Second", {'tk_string', 0}}, + {2, "Third", 'tk_char'}]}}, + {"cow", "Third", {'tk_union', "IDL:Module/Union1:1.0", "Union1", + {'tk_enum', "IDL:Module/Enum:1.0", + "Module_Enum", ["horse", "pig", "cow"]}, "pig", + [{"horse", "First", 'tk_ushort'}, + {"pig", "Second", {'tk_sequence', + {'tk_string', 0}, 0}}, + {"cow", "Third", {'tk_enum', + "IDL:Module/Enum1:1.0", + "Module_Enum1", + ["orange", "banana", + "apple"]}}]}}]}, + S6 = #'Module_Union2'{label=pig, value=#'Module_Union'{label=0, value=-17}}, + ?line B6 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T2, S6), + ?line {S6, <<>>, _} = cdr_decode:dec_type(T2, {1, 1}, B6, 0, big), + S7 = #'Module_Union2'{label=cow, value=#'Module_Union1'{label=pig, + value=["Foo", "Bar", "!"]}}, + ?line B7 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T2, S7), + ?line {S7, <<>>, _} = cdr_decode:dec_type(T2, {1, 1}, B7, 0, big), + S8 = #'Module_Union2'{label=horse, value={-17, 1234567890, -987654321}}, + ?line B8 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T2, S8), + ?line {S8, <<>>, _} = cdr_decode:dec_type(T2, {1, 1}, B8, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Encode/decode test of type: string +%%----------------------------------------------------------------- +string_type(doc) -> []; +string_type(suite) -> []; +string_type(Config) when is_list(Config) -> + S0 = "Foo Bar ???", + ?line B0 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, {'tk_string', 0}, S0), + ?line {S0, <<>>, _} = cdr_decode:dec_type({'tk_string', 0}, {1, 1}, B0, 0, big), + S1 = "Yes, Foo Bar !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! more than 5000 characters", + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, {'tk_string', 0}, S1), + ?line {S1, <<>>, _} = cdr_decode:dec_type({'tk_string', 0}, {1, 1}, B1, 0, big), + S2 = "", + ?line B2 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, {'tk_string', 0}, S2), + ?line {S2, <<>>, _} = cdr_decode:dec_type({'tk_string', 0}, {1, 1}, B2, 0, big), + S3 = "\0", + ?line B3 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, {'tk_string', 0}, S3), + ?line {S3, <<>>, _} = cdr_decode:dec_type({'tk_string', 0}, {1, 1}, B3, 0, big), + S4 = "~n", + ?line B4 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, {'tk_string', 0}, S4), + ?line {S4, <<>>, _} = cdr_decode:dec_type({'tk_string', 0}, {1, 1}, B4, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Encode/decode test of type: array +%%----------------------------------------------------------------- +array_type(doc) -> []; +array_type(suite) -> []; +array_type(Config) when is_list(Config) -> + T0 = {'tk_array', 'tk_long', 5}, + S0 = {-100, 0, 30000, -900100900, 123456789}, + ?line B0 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T0, S0), + ?line {S0, <<>>, _} = cdr_decode:dec_type(T0, {1, 1}, B0, 0, big), + T1 = {'tk_array', {'tk_enum', "IDL:Module/Enum:1.0", "Module_Enum", ["horse", "pig", "cow"]}, 2}, + S1 = {pig, cow}, + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T1, S1), + ?line {S1, <<>>, _} = cdr_decode:dec_type(T1, {1, 1}, B1, 0, big), + T2 = {'tk_array', {'tk_union', "IDL:Module/Union:1.0", "Union", + {'tk_enum', "IDL:Module/Enum:1.0", "Module_Enum", ["horse", "pig", "cow"]}, "pig", + [{"horse", "First", 'tk_ushort'}, + {"pig", "Second", {'tk_sequence', {'tk_string', 0}, 0}}, + {"cow", "Third", {'tk_enum', "IDL:Module/Enum1:1.0", + "Module_Enum1", ["orange", "banana", "apple"]}}]}, 2}, + S2 = {#'Module_Union'{label=cow, value=banana}, #'Module_Union'{label=pig, value=["This", "is", "a", "test", ""]}}, + ?line B2 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T2, S2), + ?line {S2, <<>>, _} = cdr_decode:dec_type(T2, {1, 1}, B2, 0, big), + T3 = {'tk_array', {'tk_objref', "IDL:Module/Interface:1.0", "Interface"}, 3}, + S3 = {objref(0), objref(1), objref(2)}, + ?line B3 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T3, S3), + ?line {S3, <<>>, _} = cdr_decode:dec_type(T3, {1, 1}, B3, 0, big), + ok. +%%----------------------------------------------------------------- +%% Encode/decode test of type: TypeCode +%%----------------------------------------------------------------- +any_type(doc) -> []; +any_type(suite) -> []; +any_type(Config) when is_list(Config) -> + T = 'tk_any', + TC = {'tk_struct', "IDL:Module/Struct2:1.0", "Module_Struct2", + [{"long_sequence", {'tk_sequence', 'tk_long', 0}}, + {"enum", {'tk_enum', "IDL:Module/Enum:1.0", "Module_Enum", + ["horse", "pig", "cow"]}}, + {"octet", 'tk_octet'}]}, + S = #'Module_Struct2'{long_sequence=[4711, 350000, 0, -3030, -600000], + e=cow, o=$X}, + Any = #any{typecode=TC,value=S}, + ?line B = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T,Any), + ?line {Any, <<>>, _} = cdr_decode:dec_type(T, {1, 1}, B, 0, big), + TC1 = {'tk_array', {'tk_union', "IDL:Module/Union:1.0", "Union", + {'tk_enum', "IDL:Module/Enum:1.0", "Module_Enum", + ["horse", "pig", "cow"]}, 1, + [{"horse", "First", 'tk_ushort'}, + {"pig", "Second", {'tk_sequence', {'tk_string', 0}, 0}}, + {"cow", "Third", {'tk_enum', "IDL:Module/Enum1:1.0", + "Module_Enum1", ["orange", "banana", + "apple"]}}]},2}, + S1 = {#'Module_Union'{label=cow, value=banana}, #'Module_Union'{label=pig, value=["This", "is", "a", "test", ""]}}, + Any1 = #any{typecode=TC1,value=S1}, + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T,Any1), + ?line {Any1, <<>>, _} = cdr_decode:dec_type(T, {1, 1}, B1, 0, big), + ok. + + +%%----------------------------------------------------------------- +%% Encode/decode test of type: TypeCode +%%----------------------------------------------------------------- +typecode_type(doc) -> []; +typecode_type(suite) -> []; +typecode_type(Config) when is_list(Config) -> + T = 'tk_TypeCode', + TC = {'tk_array', {'tk_union', "IDL:Module/Union:1.0", "Union", + {'tk_enum', "IDL:Module/Enum:1.0", "Module_Enum", + ["horse", "pig", "cow"]}, 1, + [{"horse", "First", 'tk_ushort'}, + {"pig", "Second", {'tk_sequence', {'tk_string', 0}, 0}}, + {"cow", "Third", {'tk_enum', "IDL:Module/Enum1:1.0", + "Module_Enum1", ["orange", "banana", + "apple"]}}]}, 10}, + ?line B = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T,TC), + ?line {TC, <<>>, _} = cdr_decode:dec_type(T, {1, 1}, B, 0, big), + TC1 = {'tk_union', "IDL:Module/Union2:1.0", "Union2", + {'tk_enum', "IDL:Module/Enum:1.0", + "Module_Enum", ["horse", "pig", "cow"]}, 2, + [{"horse", "First", 'tk_long'}, + {"pig", "Second", + {'tk_union', "IDL:Module/Union:1.0", "Union", 'tk_short', 2, + [{0, "First", 'tk_short'}, + {1, "Second", {'tk_string', 0}}, + {2, "Third", 'tk_char'}]}}, + {"cow", "Third", {'tk_union', "IDL:Module/Union1:1.0", "Union1", + {'tk_enum', "IDL:Module/Enum:1.0", + "Module_Enum", ["horse", "pig", "cow"]}, 2, + [{"horse", "First", 'tk_ushort'}, + {"pig", "Second", {'tk_sequence', + {'tk_string', 0}, 0}}, + {"cow", "Third", {'tk_enum', + "IDL:Module/Enum1:1.0", + "Module_Enum1", + ["orange", "banana", + "apple"]}}]}}]}, + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T, TC1), + ?line {TC1, <<>>, _} = cdr_decode:dec_type(T, {1, 1}, B1, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Encode/decode test of type: TypeCode +%%----------------------------------------------------------------- +alias_type(doc) -> []; +alias_type(suite) -> []; +alias_type(Config) when is_list(Config) -> + T = {'tk_alias', "IDL:Module/Alias:1.0", "Alias", + {'tk_struct', "IDL:Module/Struct2:1.0", "Module_Struct2", + [{"long_sequence", {'tk_sequence', 'tk_long', 0}}, + {"enum", {'tk_enum', "IDL:Module/Enum:1.0", "Module_Enum", + ["horse", "pig", "cow"]}}, + {"octet", 'tk_octet'}]}}, + S = #'Module_Struct2'{long_sequence=[4711, 350000, 0, -3030, -600000], + e=cow, o=$X}, + ?line B = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T,S), + ?line {S, <<>>, _} = cdr_decode:dec_type(T, {1, 1}, B, 0, big), + T1 = {'tk_alias', "IDL:Module/Alias1:1.0", "Alias1", + {'tk_sequence', {'tk_union', "IDL:Module/Union:1.0", "Union", + {'tk_enum', "IDL:Module/Enum:1.0", "Module_Enum", + ["horse", "pig", "cow"]}, 2, + [{"horse", "First", 'tk_ushort'}, + {"pig", "Second", {'tk_sequence', {'tk_string', 0}, 0}}, + {"cow", "Third", {'tk_enum', "IDL:Module/Enum1:1.0", + "Module_Enum1", ["orange", "banana", + "apple"]}}]},0}}, + S1 = [#'Module_Union'{label=cow, value=banana}, #'Module_Union'{label=pig, value=["This", "is", "a", "test", ""]}], + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T1, S1), + ?line {S1, <<>>, _} = cdr_decode:dec_type(T1, {1, 1}, B1, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Encode/decode test of type: exception +%%----------------------------------------------------------------- +exception_type(doc) -> []; +exception_type(suite) -> []; +exception_type(Config) when is_list(Config) -> + system_exceptions(), + user_exceptions(), + ok. + +system_exceptions() -> + E = #'UNKNOWN'{completion_status=?COMPLETED_YES}, + {system_exception, T, E} = orber_exceptions:get_def(E), + ?line B = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T,E), + ?line {E, _} = cdr_decode:dec_system_exception({1, 1}, B, 0, big), + E1 = #'INV_OBJREF'{completion_status=?COMPLETED_NO}, + {system_exception, T1, E1} = orber_exceptions:get_def(E1), + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T1,E1), + ?line {E1, _} = cdr_decode:dec_system_exception({1, 1}, B1, 0, big), + E2 = #'BAD_OPERATION'{completion_status=?COMPLETED_NO}, + {system_exception, T2, E2} = orber_exceptions:get_def(E2), + ?line B2 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T2,E2), + ?line {E2, _} = cdr_decode:dec_system_exception({1, 1}, B2, 0, big), + E3 = #'INTF_REPOS'{completion_status=?COMPLETED_MAYBE}, + {system_exception, T3, E3} = orber_exceptions:get_def(E3), + ?line B3 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T3,E3), + ?line {E3, _} = cdr_decode:dec_system_exception({1, 1}, B3, 0, big), + ok. + +user_exceptions() -> + E = #'Module_Except1'{rest_of_name=["I","am","testing","exceptions"], why="Error"}, + {user_exception, T, E} = orber_exceptions:get_def(E), + ?line B = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T, E), + ?line {E, _} = cdr_decode:dec_user_exception({1, 1}, B, 0, big), + E1 = #'Module_Except2'{e=banana, + s=#'Module_Struct2'{long_sequence=[12,-4040, + 1234567898], + e=horse, + o=$a}}, + {user_exception, T1, E1} = orber_exceptions:get_def(E1), + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T1, E1), + ?line {E1, _} = cdr_decode:dec_user_exception({1, 1}, B1, 0, big), + E2 = #'Module_Except3'{u=#'Module_Union1'{label=pig,value=["high","and","low"]},s=1313, o=objref(0)}, + {user_exception, T2, E2} = orber_exceptions:get_def(E2), + ?line B2 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T2, E2), + ?line {E2, _} = cdr_decode:dec_user_exception({1, 1}, B2, 0, big), + E3 = #'Module_Except4'{}, + {user_exception, T3, E3} = orber_exceptions:get_def(E3), + ?line B3 = cdr_encode:enc_type(#giop_env{version = {1, 1}}, T3, E3), + ?line {E3, _} = cdr_decode:dec_user_exception({1, 1}, B3, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Test Case: request encoding test +%% Description: Precondition the stack must be started so the +%% objectkey is valid. +%%----------------------------------------------------------------- +%request(suite) -> []; +%request(_) -> +% exit(not_implemented). + +%%----------------------------------------------------------------- +%% Test Case: reply encoding test +%% Description: +%%----------------------------------------------------------------- +reply(doc) -> ["Description", "more description"]; +reply(suite) -> []; +reply(Config) when is_list(Config) -> + R = #reply_header{service_context=[], request_id=1, + reply_status='no_exception'}, + ?line B = cdr_encode:enc_reply(#giop_env{version = {1, 1}, request_id = 1, + reply_status = 'no_exception', + tc = {'tk_long', [], [{'tk_sequence', + {'tk_string', 0}, 0}]}, + result = 1200, parameters = [["foo","Bar"]], + ctx = []}), + ?line {R, 1200, [["foo","Bar"]]} = + cdr_decode:dec_message({'tk_long', [], [{'tk_sequence', {'tk_string', 0},0}]}, + B), + ok. + +%%----------------------------------------------------------------- +%% Test Case: cancel_request encoding test +%% Description: +%%----------------------------------------------------------------- +cancel_request(doc) -> ["Description", "more description"]; +cancel_request(suite) -> []; +cancel_request(Config) when is_list(Config) -> + R = #cancel_request_header{request_id=1}, + ?line B = cdr_encode:enc_cancel_request(#giop_env{version = {1, 1}, + request_id = 1}), + ?line R = cdr_decode:dec_message([], B), + ok. + +%%----------------------------------------------------------------- +%% Test Case: locate_request encoding test +%% Description: +%%----------------------------------------------------------------- +locate_request(doc) -> ["Description", "more description"]; +locate_request(suite) -> []; +locate_request(Config) when is_list(Config) -> + io:format("Function not imlpemented yet"), + exit(not_implemented). + +%%----------------------------------------------------------------- +%% Test Case: locate_reply encoding test +%% Description: +%%----------------------------------------------------------------- +locate_reply(doc) -> ["Description", "more description"]; +locate_reply(suite) -> []; +locate_reply(Config) when is_list(Config) -> + io:format("Function not imlpemented yet"), + exit(not_implemented). + +%%----------------------------------------------------------------- +%% Test Case: close_connection encoding test +%% Description: +%%----------------------------------------------------------------- +close_connection(doc) -> ["Description", "more description"]; +close_connection(suite) -> []; +close_connection(Config) when is_list(Config) -> + ?line B = cdr_encode:enc_close_connection(#giop_env{version = {1, 1}}), + ?line 'close_connection' = cdr_decode:dec_message([], B), + ok. + +%%----------------------------------------------------------------- +%% Test Case: message_error encoding test +%% Description: +%%----------------------------------------------------------------- +message_error(doc) -> ["Description", "more description"]; +message_error(suite) -> []; +message_error(Config) when is_list(Config) -> + ?line B = cdr_encode:enc_message_error(#giop_env{version = {1, 1}}), + ?line 'message_error' = cdr_decode:dec_message([], B), + ok. + + + +%%----------------------------------------------------------------- +%% Internal functions +%%----------------------------------------------------------------- +corba_fake_mk_objkey(Id, 'key', Pid) when is_pid(Pid) -> + Key = make_objkey(), + {list_to_binary(Id), 'key', Key, term_to_binary(undefined), + term_to_binary(undefined), term_to_binary(undefined)}; +corba_fake_mk_objkey(Id, 'key', RegName) when is_atom(RegName) -> + Key = term_to_binary(RegName), + {list_to_binary(Id), 'key', Key, term_to_binary(undefined), + term_to_binary(undefined), term_to_binary(undefined)}; +corba_fake_mk_objkey(Id, 'registered', RegName) when is_atom(RegName) -> + {list_to_binary(Id), 'registered', RegName, term_to_binary(undefined), + term_to_binary(undefined), term_to_binary(undefined)}. + +make_objkey() -> + term_to_binary({now(), node()}). diff --git a/lib/orber/test/cdrcoding_12_SUITE.erl b/lib/orber/test/cdrcoding_12_SUITE.erl new file mode 100644 index 0000000000..18e8eaa08a --- /dev/null +++ b/lib/orber/test/cdrcoding_12_SUITE.erl @@ -0,0 +1,603 @@ +%%---------------------------------------------------------------------- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2000-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% +%% +%% +%%----------------------------------------------------------------- +%% +%% Description: +%% Test suite for the CDR encode/decode functions +%% +%%----------------------------------------------------------------- + +-module(cdrcoding_12_SUITE). + +-include("idl_output/Module.hrl"). +-include("test_server.hrl"). +-include_lib("orber/include/corba.hrl"). +-include_lib("orber/src/orber_iiop.hrl"). + +-define(default_timeout, ?t:minutes(5)). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1]). + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- +-export([]). +-compile(export_all). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["Description", "more description"]; +all(suite) -> {req, + [mnesia], + {conf, init_all, cases(), finish_all}}. + +cases() -> + [types, reply, cancel_request, close_connection, message_error]. +%% request, locate_request, locate_reply]. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- + +init_per_testcase(_Case, Config) -> + Path = code:which(?MODULE), + code:add_pathz(filename:join(filename:dirname(Path), "idl_output")), + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Path = code:which(?MODULE), + code:del_path(filename:join(filename:dirname(Path), "idl_output")), + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +init_all(Config) when is_list(Config) -> + orber:jump_start(0), + if + is_list(Config) -> + Config; + true -> + exit("Config not a list") + end. + +finish_all(Config) when is_list(Config) -> + orber:jump_stop(), + Config. + +%%----------------------------------------------------------------- +%% Test Case: type encoding tests +%% Description: Just testing the complex types, the others are +%% tested in the cdrlib SUITE. +%%----------------------------------------------------------------- +types(doc) -> ["Description", "more description"]; +types(suite) -> [do_register, null_type, void_type, principal_type, + objref_type, struct_type, union_type, string_type, + array_type, any_type, typecode_type, alias_type, + exception_type, do_unregister]. + +do_register(doc) -> []; +do_register(suite) -> []; +do_register(Config) when is_list(Config) -> + 'oe_orber_test':'oe_register'(), + ok. +do_unregister(doc) -> []; +do_unregister(suite) -> []; +do_unregister(Config) when is_list(Config) -> + 'oe_orber_test':'oe_unregister'(), + ok. +%%----------------------------------------------------------------- +%% Encode/decode test of type: null +%%----------------------------------------------------------------- +null_type(doc) -> []; +null_type(suite) -> []; +null_type(Config) when is_list(Config) -> + ?line B = cdr_encode:enc_type(#giop_env{version = {1, 2}}, 'tk_null', 'null'), + ?line {'null', <<>>, _} = cdr_decode:dec_type('tk_null', {1, 2}, B, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Encode/decode test of type: void +%%----------------------------------------------------------------- +void_type(doc) -> []; +void_type(suite) -> []; +void_type(Config) when is_list(Config) -> + ?line B = cdr_encode:enc_type(#giop_env{version = {1, 2}}, 'tk_void', 'ok'), + ?line {'ok', <<>>, _} = cdr_decode:dec_type('tk_void', {1, 2}, B, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Encode/decode test of type: principal +%%----------------------------------------------------------------- +principal_type(doc) -> []; +principal_type(suite) -> []; +principal_type(Config) when is_list(Config) -> + ?line B0 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, 'tk_Principal', "principal"), + ?line {"principal", <<>>, _} = cdr_decode:dec_type('tk_Principal', {1, 2}, B0, 0, big), + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, 'tk_Principal', ""), + ?line {"", <<>>, _} = cdr_decode:dec_type('tk_Principal', {1, 2}, B1, 0, big), + ?line B2 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, 'tk_Principal', "principal"), + ?line {"principal", <<>>, _} = + cdr_decode:dec_type('tk_Principal', {1, 2}, B2, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Encode/decode test of type: object reference +%%----------------------------------------------------------------- +version() -> #'IIOP_Version'{major=1,minor=2}. + +objref(0) -> + PB = #'IIOP_ProfileBody_1_1'{iiop_version=version(), + host="my.hostname.org", + port=4040, + object_key="ExternalKey: which is an arbitary octet sequence", + components=[]}, + TP = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB}, + #'IOP_IOR'{type_id="IDL:Module/Interface:1.0", profiles=[TP]}; +objref(1) -> + K = corba_fake_mk_objkey("IDL:Module/Interface:1.0", key, + list_to_pid("<0.100.0>")), + PB = #'IIOP_ProfileBody_1_1'{iiop_version=version(), + host="my.hostname.org", + port=4040, + object_key=K, components=[]}, + TP = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB}, + #'IOP_IOR'{type_id="IDL:Module/Interface:1.0", profiles=[TP]}; +objref(2) -> + K = corba_fake_mk_objkey("IDL:Module/Interface:1.0", registered, + list_to_atom("orber_nameservice")), + PB = #'IIOP_ProfileBody_1_1'{iiop_version=version(), + host="my.hostname.org", + port=4040, + object_key=K, components=[]}, + TP = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB}, + #'IOP_IOR'{type_id="IDL:Module/Interface:1.0", profiles=[TP]}. + +objref_type(doc) -> []; +objref_type(suite) -> []; +objref_type(Config) when is_list(Config) -> + T = {'tk_objref', "IDL:Module/Interface:1.0", "Interface"}, + Objref0 = objref(0), + ?line B0 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T, Objref0), + ?line {Objref0, <<>>, _} = cdr_decode:dec_type(T, {1, 2}, B0, 0, big), + Objref1 = objref(1), + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T, Objref1), + ?line {Objref1, <<>>, _} = cdr_decode:dec_type(T, {1, 2}, B1, 0, big), + Objref2 = objref(2), + ?line B2 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T, Objref2), + ?line {Objref2, <<>>, _} = cdr_decode:dec_type(T, {1, 2}, B2, 0, big), + ok. + + + +%%----------------------------------------------------------------- +%% Encode/decode test of type: struct +%%----------------------------------------------------------------- +struct_type(doc) -> []; +struct_type(suite) -> []; +struct_type(Config) when is_list(Config) -> + T0 = {'tk_struct',"IDL:Module/Struct0:1.0", "Module_Struct0", + [{"long", 'tk_long'}, {"short", 'tk_short'}, {"character", 'tk_char'}]}, + S0 = #'Module_Struct0'{l=-4711, s=17, c=$a}, + ?line B0 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T0, S0), + ?line {S0, <<>>, _} = cdr_decode:dec_type(T0, {1, 2}, B0, 0, big), + + T1 = {'tk_struct', "IDL:Module/Struct1:1.0", "Module_Struct1", + [{"string", {'tk_string', 0}}, {"ushort", 'tk_ushort'}, {"ulong", 'tk_ulong'}]}, + S1 = #'Module_Struct1'{s="Hi !!!!", us=17, ul=4711}, + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T1, S1), + ?line {S1, <<>>, _} = cdr_decode:dec_type(T1, {1, 2}, B1, 0, big), + + T2 = {'tk_struct', "IDL:Module/Struct2:1.0", "Module_Struct2", + [{"long_sequence", {'tk_sequence', 'tk_long', 0}}, + {"enum", {'tk_enum', "IDL:Module/Enum:1.0", "Module_Enum", ["horse", "pig", "cow"]}}, + {"octet", 'tk_octet'}]}, + S2 = #'Module_Struct2'{long_sequence=[4711, 350000, 0, -3030, -600000], e=cow, o=$X}, + ?line B2 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T2, S2), + ?line {S2, <<>>, _} = cdr_decode:dec_type(T2, {1, 2}, B2, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Encode/decode test of type: union +%%----------------------------------------------------------------- +union_type(doc) -> []; +union_type(suite) -> []; +union_type(Config) when is_list(Config) -> + T0 = {'tk_union', "IDL:Module/Union:1.0", "Union", 'tk_short', 2, + [{0, "First", 'tk_short'}, + {1, "Second", {'tk_string', 0}}, + {2, "Third", 'tk_char'}]}, + S0 = #'Module_Union'{label=1, value="Foo Bar !"}, + ?line B0 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T0, S0), + ?line {S0, <<>>, _} = cdr_decode:dec_type(T0, {1, 2}, B0, 0, big), + S1 = #'Module_Union'{label=0, value=-17}, + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T0, S1), + ?line {S1, <<>>, _} = cdr_decode:dec_type(T0, {1, 2}, B1, 0, big), + S2 = #'Module_Union'{label=2, value=$X}, + ?line B2 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T0, S2), + ?line {S2, <<>>, _} = cdr_decode:dec_type(T0, {1, 2}, B2, 0, big), + T1 = {'tk_union', "IDL:Module/Union1:1.0", "Union1", + {'tk_enum', "IDL:Module/Enum:1.0", + "Module_Enum", ["horse", "pig", "cow"]}, "pig", + [{"horse", "First", 'tk_ushort'}, + {"pig", "Second", {'tk_sequence', {'tk_string', 0}, 0}}, + {"cow", "Third", {'tk_enum', "IDL:Module/Enum1:1.0", + "Module_Enum1", ["orange", "banana", "apple"]}}]}, + S3 = #'Module_Union1'{label=pig, value=["Foo", "Bar", "!"]}, + ?line B3 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T1, S3), + ?line {S3, <<>>, _} = cdr_decode:dec_type(T1, {1, 2}, B3, 0, big), + S4 = #'Module_Union1'{label=cow, value=apple}, + ?line B4 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T1, S4), + ?line {S4, <<>>, _} = cdr_decode:dec_type(T1, {1, 2}, B4, 0, big), + S5 = #'Module_Union1'{label=horse, value=17}, + ?line B5 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T1, S5), + ?line {S5, <<>>, _} = cdr_decode:dec_type(T1, {1, 2}, B5, 0, big), + T2 = {'tk_union', "IDL:Module/Union2:1.0", "Union2", + {'tk_enum', "IDL:Module/Enum:1.0", + "Module_Enum", ["horse", "pig", "cow"]}, "pig", + [{"horse", "First", {'tk_array', 'tk_long', 3}}, + {"pig", "Second", + {'tk_union', "IDL:Module/Union:1.0", "Union", 'tk_short', 2, + [{0, "First", 'tk_short'}, + {1, "Second", {'tk_string', 0}}, + {2, "Third", 'tk_char'}]}}, + {"cow", "Third", {'tk_union', "IDL:Module/Union1:1.0", "Union1", + {'tk_enum', "IDL:Module/Enum:1.0", + "Module_Enum", ["horse", "pig", "cow"]}, "pig", + [{"horse", "First", 'tk_ushort'}, + {"pig", "Second", {'tk_sequence', + {'tk_string', 0}, 0}}, + {"cow", "Third", {'tk_enum', + "IDL:Module/Enum1:1.0", + "Module_Enum1", + ["orange", "banana", + "apple"]}}]}}]}, + S6 = #'Module_Union2'{label=pig, value=#'Module_Union'{label=0, value=-17}}, + ?line B6 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T2, S6), + ?line {S6, <<>>, _} = cdr_decode:dec_type(T2, {1, 2}, B6, 0, big), + S7 = #'Module_Union2'{label=cow, value=#'Module_Union1'{label=pig, + value=["Foo", "Bar", "!"]}}, + ?line B7 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T2, S7), + ?line {S7, <<>>, _} = cdr_decode:dec_type(T2, {1, 2}, B7, 0, big), + S8 = #'Module_Union2'{label=horse, value={-17, 1234567890, -987654321}}, + ?line B8 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T2, S8), + ?line {S8, <<>>, _} = cdr_decode:dec_type(T2, {1, 2}, B8, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Encode/decode test of type: string +%%----------------------------------------------------------------- +string_type(doc) -> []; +string_type(suite) -> []; +string_type(Config) when is_list(Config) -> + S0 = "Foo Bar ???", + ?line B0 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, {'tk_string', 0}, S0), + ?line {S0, <<>>, _} = cdr_decode:dec_type({'tk_string', 0}, {1, 2}, B0, 0, big), + S1 = "Yes, Foo Bar !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! more than 5000 characters", + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, {'tk_string', 0}, S1), + ?line {S1, <<>>, _} = cdr_decode:dec_type({'tk_string', 0}, {1, 2}, B1, 0, big), + S2 = "", + ?line B2 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, {'tk_string', 0}, S2), + ?line {S2, <<>>, _} = cdr_decode:dec_type({'tk_string', 0}, {1, 2}, B2, 0, big), + S3 = "\0", + ?line B3 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, {'tk_string', 0}, S3), + ?line {S3, <<>>, _} = cdr_decode:dec_type({'tk_string', 0}, {1, 2}, B3, 0, big), + S4 = "~n", + ?line B4 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, {'tk_string', 0}, S4), + ?line {S4, <<>>, _} = cdr_decode:dec_type({'tk_string', 0}, {1, 2}, B4, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Encode/decode test of type: array +%%----------------------------------------------------------------- +array_type(doc) -> []; +array_type(suite) -> []; +array_type(Config) when is_list(Config) -> + T0 = {'tk_array', 'tk_long', 5}, + S0 = {-100, 0, 30000, -900100900, 123456789}, + ?line B0 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T0, S0), + ?line {S0, <<>>, _} = cdr_decode:dec_type(T0, {1, 2}, B0, 0, big), + T1 = {'tk_array', {'tk_enum', "IDL:Module/Enum:1.0", "Module_Enum", ["horse", "pig", "cow"]}, 2}, + S1 = {pig, cow}, + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T1, S1), + ?line {S1, <<>>, _} = cdr_decode:dec_type(T1, {1, 2}, B1, 0, big), + T2 = {'tk_array', {'tk_union', "IDL:Module/Union:1.0", "Union", + {'tk_enum', "IDL:Module/Enum:1.0", "Module_Enum", ["horse", "pig", "cow"]}, "pig", + [{"horse", "First", 'tk_ushort'}, + {"pig", "Second", {'tk_sequence', {'tk_string', 0}, 0}}, + {"cow", "Third", {'tk_enum', "IDL:Module/Enum1:1.0", + "Module_Enum1", ["orange", "banana", "apple"]}}]}, 2}, + S2 = {#'Module_Union'{label=cow, value=banana}, #'Module_Union'{label=pig, value=["This", "is", "a", "test", ""]}}, + ?line B2 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T2, S2), + ?line {S2, <<>>, _} = cdr_decode:dec_type(T2, {1, 2}, B2, 0, big), + T3 = {'tk_array', {'tk_objref', "IDL:Module/Interface:1.0", "Interface"}, 3}, + S3 = {objref(0), objref(1), objref(2)}, + ?line B3 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T3, S3), + ?line {S3, <<>>, _} = cdr_decode:dec_type(T3, {1, 2}, B3, 0, big), + ok. +%%----------------------------------------------------------------- +%% Encode/decode test of type: TypeCode +%%----------------------------------------------------------------- +any_type(doc) -> []; +any_type(suite) -> []; +any_type(Config) when is_list(Config) -> + T = 'tk_any', + TC = {'tk_struct', "IDL:Module/Struct2:1.0", "Module_Struct2", + [{"long_sequence", {'tk_sequence', 'tk_long', 0}}, + {"enum", {'tk_enum', "IDL:Module/Enum:1.0", "Module_Enum", + ["horse", "pig", "cow"]}}, + {"octet", 'tk_octet'}]}, + S = #'Module_Struct2'{long_sequence=[4711, 350000, 0, -3030, -600000], + e=cow, o=$X}, + Any = #any{typecode=TC,value=S}, + ?line B = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T,Any), + ?line {Any, <<>>, _} = cdr_decode:dec_type(T, {1, 2}, B, 0, big), + TC1 = {'tk_array', {'tk_union', "IDL:Module/Union:1.0", "Union", + {'tk_enum', "IDL:Module/Enum:1.0", "Module_Enum", + ["horse", "pig", "cow"]}, 1, + [{"horse", "First", 'tk_ushort'}, + {"pig", "Second", {'tk_sequence', {'tk_string', 0}, 0}}, + {"cow", "Third", {'tk_enum', "IDL:Module/Enum1:1.0", + "Module_Enum1", ["orange", "banana", + "apple"]}}]},2}, + S1 = {#'Module_Union'{label=cow, value=banana}, #'Module_Union'{label=pig, value=["This", "is", "a", "test", ""]}}, + Any1 = #any{typecode=TC1,value=S1}, + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T,Any1), + ?line {Any1, <<>>, _} = cdr_decode:dec_type(T, {1, 2}, B1, 0, big), + ok. + + +%%----------------------------------------------------------------- +%% Encode/decode test of type: TypeCode +%%----------------------------------------------------------------- +typecode_type(doc) -> []; +typecode_type(suite) -> []; +typecode_type(Config) when is_list(Config) -> + T = 'tk_TypeCode', + TC = {'tk_array', {'tk_union', "IDL:Module/Union:1.0", "Union", + {'tk_enum', "IDL:Module/Enum:1.0", "Module_Enum", + ["horse", "pig", "cow"]}, 1, + [{"horse", "First", 'tk_ushort'}, + {"pig", "Second", {'tk_sequence', {'tk_string', 0}, 0}}, + {"cow", "Third", {'tk_enum', "IDL:Module/Enum1:1.0", + "Module_Enum1", ["orange", "banana", + "apple"]}}]}, 10}, + ?line B = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T,TC), + ?line {TC, <<>>, _} = cdr_decode:dec_type(T, {1, 2}, B, 0, big), + TC1 = {'tk_union', "IDL:Module/Union2:1.0", "Union2", + {'tk_enum', "IDL:Module/Enum:1.0", + "Module_Enum", ["horse", "pig", "cow"]}, 2, + [{"horse", "First", 'tk_long'}, + {"pig", "Second", + {'tk_union', "IDL:Module/Union:1.0", "Union", 'tk_short', 2, + [{0, "First", 'tk_short'}, + {1, "Second", {'tk_string', 0}}, + {2, "Third", 'tk_char'}]}}, + {"cow", "Third", {'tk_union', "IDL:Module/Union1:1.0", "Union1", + {'tk_enum', "IDL:Module/Enum:1.0", + "Module_Enum", ["horse", "pig", "cow"]}, 2, + [{"horse", "First", 'tk_ushort'}, + {"pig", "Second", {'tk_sequence', + {'tk_string', 0}, 0}}, + {"cow", "Third", {'tk_enum', + "IDL:Module/Enum1:1.0", + "Module_Enum1", + ["orange", "banana", + "apple"]}}]}}]}, + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T, TC1), + ?line {TC1, <<>>, _} = cdr_decode:dec_type(T, {1, 2}, B1, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Encode/decode test of type: TypeCode +%%----------------------------------------------------------------- +alias_type(doc) -> []; +alias_type(suite) -> []; +alias_type(Config) when is_list(Config) -> + T = {'tk_alias', "IDL:Module/Alias:1.0", "Alias", + {'tk_struct', "IDL:Module/Struct2:1.0", "Module_Struct2", + [{"long_sequence", {'tk_sequence', 'tk_long', 0}}, + {"enum", {'tk_enum', "IDL:Module/Enum:1.0", "Module_Enum", + ["horse", "pig", "cow"]}}, + {"octet", 'tk_octet'}]}}, + S = #'Module_Struct2'{long_sequence=[4711, 350000, 0, -3030, -600000], + e=cow, o=$X}, + ?line B = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T,S), + ?line {S, <<>>, _} = cdr_decode:dec_type(T, {1, 2}, B, 0, big), + T1 = {'tk_alias', "IDL:Module/Alias1:1.0", "Alias1", + {'tk_sequence', {'tk_union', "IDL:Module/Union:1.0", "Union", + {'tk_enum', "IDL:Module/Enum:1.0", "Module_Enum", + ["horse", "pig", "cow"]}, 2, + [{"horse", "First", 'tk_ushort'}, + {"pig", "Second", {'tk_sequence', {'tk_string', 0}, 0}}, + {"cow", "Third", {'tk_enum', "IDL:Module/Enum1:1.0", + "Module_Enum1", ["orange", "banana", + "apple"]}}]},0}}, + S1 = [#'Module_Union'{label=cow, value=banana}, #'Module_Union'{label=pig, value=["This", "is", "a", "test", ""]}], + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T1, S1), + ?line {S1, <<>>, _} = cdr_decode:dec_type(T1, {1, 2}, B1, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Encode/decode test of type: exception +%%----------------------------------------------------------------- +exception_type(doc) -> []; +exception_type(suite) -> []; +exception_type(Config) when is_list(Config) -> + system_exceptions(), + user_exceptions(), + ok. + +system_exceptions() -> + E = #'UNKNOWN'{completion_status=?COMPLETED_YES}, + {system_exception, T, E} = orber_exceptions:get_def(E), + ?line B = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T,E), + ?line {E, _} = cdr_decode:dec_system_exception({1, 2}, B, 0, big), + E1 = #'INV_OBJREF'{completion_status=?COMPLETED_NO}, + {system_exception, T1, E1} = orber_exceptions:get_def(E1), + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T1,E1), + ?line {E1, _} = cdr_decode:dec_system_exception({1, 2}, B1, 0, big), + E2 = #'BAD_OPERATION'{completion_status=?COMPLETED_NO}, + {system_exception, T2, E2} = orber_exceptions:get_def(E2), + ?line B2 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T2,E2), + ?line {E2, _} = cdr_decode:dec_system_exception({1, 2}, B2, 0, big), + E3 = #'INTF_REPOS'{completion_status=?COMPLETED_MAYBE}, + {system_exception, T3, E3} = orber_exceptions:get_def(E3), + ?line B3 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T3,E3), + ?line {E3, _} = cdr_decode:dec_system_exception({1, 2}, B3, 0, big), + ok. + +user_exceptions() -> + E = #'Module_Except1'{rest_of_name=["I","am","testing","exceptions"], why="Error"}, + {user_exception, T, E} = orber_exceptions:get_def(E), + ?line B = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T, E), + ?line {E, _} = cdr_decode:dec_user_exception({1, 2}, B, 0, big), + E1 = #'Module_Except2'{e=banana, + s=#'Module_Struct2'{long_sequence=[12,-4040, + 1234567898], + e=horse, + o=$a}}, + {user_exception, T1, E1} = orber_exceptions:get_def(E1), + ?line B1 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T1, E1), + ?line {E1, _} = cdr_decode:dec_user_exception({1, 2}, B1, 0, big), + E2 = #'Module_Except3'{u=#'Module_Union1'{label=pig,value=["high","and","low"]},s=1313, o=objref(0)}, + {user_exception, T2, E2} = orber_exceptions:get_def(E2), + ?line B2 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T2, E2), + ?line {E2, _} = cdr_decode:dec_user_exception({1, 2}, B2, 0, big), + E3 = #'Module_Except4'{}, + {user_exception, T3, E3} = orber_exceptions:get_def(E3), + ?line B3 = cdr_encode:enc_type(#giop_env{version = {1, 2}}, T3, E3), + ?line {E3, _} = cdr_decode:dec_user_exception({1, 2}, B3, 0, big), + ok. + +%%----------------------------------------------------------------- +%% Test Case: request encoding test +%% Description: Precondition the stack must be started so the +%% objectkey is valid. +%%----------------------------------------------------------------- +%request(suite) -> []; +%request(_) -> +% exit(not_implemented). + +%%----------------------------------------------------------------- +%% Test Case: reply encoding test +%% Description: +%%----------------------------------------------------------------- +reply(doc) -> ["Description", "more description"]; +reply(suite) -> []; +reply(Config) when is_list(Config) -> + R = #reply_header{service_context=[], request_id=1, + reply_status='no_exception'}, + ?line B = cdr_encode:enc_reply(#giop_env{version = {1, 2}, request_id = 1, + reply_status = 'no_exception', + tc = {'tk_long', [], [{'tk_sequence', + {'tk_string', 0}, 0}]}, + result = 1200, + parameters = [["foo","Bar"]], + ctx = []}), + + ?line {R, 1200, [["foo","Bar"]]} = + cdr_decode:dec_message({'tk_long', [], [{'tk_sequence', {'tk_string', 0},0}]}, + B), + + ok. + +%%----------------------------------------------------------------- +%% Test Case: cancel_request encoding test +%% Description: +%%----------------------------------------------------------------- +cancel_request(doc) -> ["Description", "more description"]; +cancel_request(suite) -> []; +cancel_request(Config) when is_list(Config) -> + R = #cancel_request_header{request_id=1}, + ?line B = cdr_encode:enc_cancel_request(#giop_env{version = {1, 2}, + request_id = 1}), + ?line R = cdr_decode:dec_message([], B), + ok. + +%%----------------------------------------------------------------- +%% Test Case: locate_request encoding test +%% Description: +%%----------------------------------------------------------------- +locate_request(doc) -> ["Description", "more description"]; +locate_request(suite) -> []; +locate_request(Config) when is_list(Config) -> + io:format("Function not imlpemented yet"), + exit(not_implemented). + +%%----------------------------------------------------------------- +%% Test Case: locate_reply encoding test +%% Description: +%%----------------------------------------------------------------- +locate_reply(doc) -> ["Description", "more description"]; +locate_reply(suite) -> []; +locate_reply(Config) when is_list(Config) -> + io:format("Function not imlpemented yet"), + exit(not_implemented). + +%%----------------------------------------------------------------- +%% Test Case: close_connection encoding test +%% Description: +%%----------------------------------------------------------------- +close_connection(doc) -> ["Description", "more description"]; +close_connection(suite) -> []; +close_connection(Config) when is_list(Config) -> + ?line B = cdr_encode:enc_close_connection(#giop_env{version = {1, 2}}), + ?line 'close_connection' = cdr_decode:dec_message([], B), + ok. + +%%----------------------------------------------------------------- +%% Test Case: message_error encoding test +%% Description: +%%----------------------------------------------------------------- +message_error(doc) -> ["Description", "more description"]; +message_error(suite) -> []; +message_error(Config) when is_list(Config) -> + ?line B = cdr_encode:enc_message_error(#giop_env{version = {1, 2}}), + ?line 'message_error' = cdr_decode:dec_message([], B), + ok. + + + +%%----------------------------------------------------------------- +%% Internal functions +%%----------------------------------------------------------------- +corba_fake_mk_objkey(Id, 'key', Pid) when is_pid(Pid) -> + Key = make_objkey(), + {list_to_binary(Id), 'key', Key, term_to_binary(undefined), + term_to_binary(undefined), term_to_binary(undefined)}; +corba_fake_mk_objkey(Id, 'key', RegName) when is_atom(RegName) -> + Key = term_to_binary(RegName), + {list_to_binary(Id), 'key', Key, term_to_binary(undefined), + term_to_binary(undefined), term_to_binary(undefined)}; +corba_fake_mk_objkey(Id, 'registered', RegName) when is_atom(RegName) -> + {list_to_binary(Id), 'registered', RegName, term_to_binary(undefined), + term_to_binary(undefined), term_to_binary(undefined)}. + +make_objkey() -> + term_to_binary({now(), node()}). diff --git a/lib/orber/test/cdrlib_SUITE.erl b/lib/orber/test/cdrlib_SUITE.erl new file mode 100644 index 0000000000..fa2d7f2a30 --- /dev/null +++ b/lib/orber/test/cdrlib_SUITE.erl @@ -0,0 +1,487 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1997-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%----------------------------------------------------------------- +%% +%% Description: +%% Test suite for the CDR basic type encode/decode functions +%% +%%----------------------------------------------------------------- +-module(cdrlib_SUITE). + +-include("test_server.hrl"). + +-define(default_timeout, ?t:minutes(3)). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1]). + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- +-export([]). +-compile(export_all). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["Description", "more description"]; +all(suite) -> + [short, ushort, long, ulong, longlong, ulonglong, boolean, character, octet, + float, double, enum]. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- + +init_per_testcase(_Case, Config) -> + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +%%----------------------------------------------------------------- +%% Test Case: short integer test +%% Description: +%%----------------------------------------------------------------- +short(doc) -> ["Description", "more description"]; +short(suite) -> []; +short(_) -> + short_big_loop([-32768, -4040, -1, 0, 4040, 32767]), + short_little_loop([-32768, -4040, -1, 0, 4040, 32767]), + bad_short(). + +short_big_loop([]) -> + ok; +short_big_loop([X |List]) -> + ?line [CodedType] = cdrlib:enc_short(X, []), + ?line {X, <<>>} = cdrlib:dec_short(big, CodedType), + short_big_loop(List), + ok. + +short_little_loop([]) -> + ok; +short_little_loop([X |List]) -> + ?line CodedType = enc_short_little(X, []), + ?line {X, <<>>} = cdrlib:dec_short(little, CodedType), + short_little_loop(List), + ok. + +enc_short_little(X, Message) -> + list_to_binary([(X) band 16#ff, ((X) bsr 8) band 16#ff | Message]). + +bad_short() -> + ?line {'EXCEPTION', _} = (catch cdrlib:enc_short('atom', [])), + ?line [CodedType] = cdrlib:enc_char($a, []), + ?line {'EXIT', _} = (catch cdrlib:dec_short(big, CodedType)), + ok. +%%----------------------------------------------------------------- +%% Test Case: unsigned short integer test +%% Description: +%%----------------------------------------------------------------- +ushort(doc) -> ["Description", "more description"]; +ushort(suite) -> []; +ushort(_) -> + ushort_big_loop([0, 4040, 65535]), + ushort_little_loop([0, 4040, 65535]), + bad_ushort(). + +ushort_big_loop([]) -> + ok; +ushort_big_loop([X |List]) -> + ?line [CodedType] = cdrlib:enc_unsigned_short(X, []), + ?line {X, <<>>} = cdrlib:dec_unsigned_short(big, CodedType), + ushort_big_loop(List), + ok. + +ushort_little_loop([]) -> + ok; +ushort_little_loop([X |List]) -> + ?line CodedType = enc_ushort_little(X, []), + ?line {X, <<>>} = cdrlib:dec_unsigned_short(little, CodedType), + ushort_little_loop(List), + ok. + +enc_ushort_little(X, Message) -> + list_to_binary([(X) band 16#ff, ((X) bsr 8) band 16#ff | Message]). + +bad_ushort() -> + ok. +%%----------------------------------------------------------------- +%% Test Case: long integer test +%% Description: +%%----------------------------------------------------------------- +long(doc) -> ["Description", "more description"]; +long(suite) -> []; +long(_) -> + long_big_loop([-2147483648, -40404040, -32768, -4040, -1, + 0, 4040, 32767, 40404040, 2147483647]), + long_little_loop([-2147483648, -40404040, -32768, -4040, -1, + 0, 4040, 32767, 40404040, 2147483647]), + bad_long(). + + +long_big_loop([]) -> + ok; +long_big_loop([X |List]) -> + ?line [CodedType] = cdrlib:enc_long(X, []), + ?line {X, <<>>} = cdrlib:dec_long(big, CodedType), + long_big_loop(List), + ok. + +long_little_loop([]) -> + ok; +long_little_loop([X |List]) -> + ?line CodedType = enc_long_little(X, []), + ?line {X, <<>>} = cdrlib:dec_long(little, CodedType), + long_little_loop(List), + ok. + +enc_long_little(X, Message) -> + list_to_binary([(X) band 16#ff, ((X) bsr 8) band 16#ff, ((X) bsr 16) band 16#ff, + ((X) bsr 24) band 16#ff | Message]). + +bad_long() -> + ok. + +%%----------------------------------------------------------------- +%% Test Case: unsigned long integer test +%% Description: +%%----------------------------------------------------------------- +ulong(doc) -> ["Description", "more description"]; +ulong(suite) -> []; +ulong(_) -> + ulong_big_loop([0, 4040, 65535, 40404040, 2147483647, 4294967295]), + ulong_little_loop([0, 4040, 65535, 40404040, 2147483647, 4294967295]), + bad_ulong(). + + +ulong_big_loop([]) -> + ok; +ulong_big_loop([X |List]) -> + ?line [CodedType] = cdrlib:enc_unsigned_long(X, []), + ?line {X, <<>>} = cdrlib:dec_unsigned_long(big, CodedType), + ulong_big_loop(List), + ok. + +ulong_little_loop([]) -> + ok; +ulong_little_loop([X |List]) -> + ?line CodedType = enc_ulong_little(X, []), + ?line {X, <<>>} = cdrlib:dec_unsigned_long(little, CodedType), + ulong_little_loop(List), + ok. + +enc_ulong_little(X, Message) -> + list_to_binary([(X) band 16#ff, ((X) bsr 8) band 16#ff, ((X) bsr 16) band 16#ff, + ((X) bsr 24) band 16#ff | Message]). + + +bad_ulong() -> + ok. + +%%----------------------------------------------------------------- +%% Test Case: long integer test +%% Description: +%%----------------------------------------------------------------- +longlong(doc) -> ["Description", "more description"]; +longlong(suite) -> []; +longlong(_) -> + longlong_big_loop([-2147483648, -40404040, -32768, -4040, -1, + 0, 4040, 32767, 40404040, 2147483647]), + longlong_little_loop([-2147483648, -40404040, -32768, -4040, -1, + 0, 4040, 32767, 40404040, 2147483647]), + bad_longlong(). + + +longlong_big_loop([]) -> + ok; +longlong_big_loop([X |List]) -> + ?line [CodedType] = cdrlib:enc_longlong(X, []), + ?line {X, <<>>} = cdrlib:dec_longlong(big, CodedType), + longlong_big_loop(List), + ok. + +longlong_little_loop([]) -> + ok; +longlong_little_loop([X |List]) -> + ?line CodedType = enc_longlong_little(X, []), + ?line {X, <<>>} = cdrlib:dec_longlong(little, CodedType), + longlong_little_loop(List), + ok. + +enc_longlong_little(X, Message) -> + list_to_binary([(X) band 16#ff, ((X) bsr 8) band 16#ff, ((X) bsr 16) band 16#ff, + ((X) bsr 24) band 16#ff, ((X) bsr 32) band 16#ff, ((X) bsr 40) band 16#ff, + ((X) bsr 48) band 16#ff, ((X) bsr 56) band 16#ff | Message]). + +bad_longlong() -> + ok. + +%%----------------------------------------------------------------- +%% Test Case: unsigned long integer test +%% Description: +%%----------------------------------------------------------------- +ulonglong(doc) -> ["Description", "more description"]; +ulonglong(suite) -> []; +ulonglong(_) -> + ulonglong_big_loop([0, 4040, 65535, 40404040, 2147483647, 4294967295]), + ulonglong_little_loop([0, 4040, 65535, 40404040, 2147483647, 4294967295]), + bad_ulonglong(). + + +ulonglong_big_loop([]) -> + ok; +ulonglong_big_loop([X |List]) -> + ?line [CodedType] = cdrlib:enc_unsigned_longlong(X, []), + ?line {X, <<>>} = cdrlib:dec_unsigned_longlong(big, CodedType), + ulonglong_big_loop(List), + ok. + +ulonglong_little_loop([]) -> + ok; +ulonglong_little_loop([X |List]) -> + ?line CodedType = enc_ulonglong_little(X, []), + ?line {X, <<>>} = cdrlib:dec_unsigned_longlong(little, CodedType), + ulonglong_little_loop(List), + ok. + +enc_ulonglong_little(X, Message) -> + list_to_binary([(X) band 16#ff, ((X) bsr 8) band 16#ff, ((X) bsr 16) band 16#ff, + ((X) bsr 24) band 16#ff, ((X) bsr 32) band 16#ff, ((X) bsr 40) band 16#ff, + ((X) bsr 48) band 16#ff, ((X) bsr 56) band 16#ff | Message]). + +bad_ulonglong() -> + ok. + + + +%%----------------------------------------------------------------- +%% Test Case: boolean test +%% Description: +%%----------------------------------------------------------------- +boolean(doc) -> ["Description", "more description"]; +boolean(suite) -> []; +boolean(_) -> + ?line [CodedTrue] = cdrlib:enc_bool('true', []), + ?line {'true', <<>>} = cdrlib:dec_bool(CodedTrue), + ?line [CodedFalse] = cdrlib:enc_bool('false', []), + ?line {'false', <<>>} = cdrlib:dec_bool(CodedFalse), + ok. + +%%----------------------------------------------------------------- +%% Test Case: character test +%% Description: +%%----------------------------------------------------------------- +character(doc) -> ["Description", "more description"]; +character(suite) -> []; +character(_) -> + ?line [Coded_0] = cdrlib:enc_char($0, []), + ?line {$0, <<>>} = cdrlib:dec_char(Coded_0), + ?line [Coded_a] = cdrlib:enc_char($a, []), + ?line {$a, <<>>} = cdrlib:dec_char(Coded_a), + ?line [Coded_Z] = cdrlib:enc_char($Z, []), + ?line {$Z, <<>>} = cdrlib:dec_char(Coded_Z), + ?line [Coded_dollar] = cdrlib:enc_char($$, []), + ?line {$$, <<>>} = cdrlib:dec_char(Coded_dollar), + ok. + +%%----------------------------------------------------------------- +%% Test Case: octet test +%% Description: +%%----------------------------------------------------------------- +octet(doc) -> ["Description", "more description"]; +octet(suite) -> []; +octet(_) -> + ?line [Coded_ff] = cdrlib:enc_octet(16#ff, []), + ?line {16#ff, <<>>} = cdrlib:dec_octet(Coded_ff), + ?line [Coded_00] = cdrlib:enc_octet(16#00, []), + ?line {16#00, <<>>} = cdrlib:dec_octet(Coded_00), + ?line [Coded_5a] = cdrlib:enc_octet(16#5a, []), + ?line {16#5a, <<>>} = cdrlib:dec_octet(Coded_5a), + ?line [Coded_48] = cdrlib:enc_octet(16#48, []), + ?line {16#48, <<>>} = cdrlib:dec_octet(Coded_48), + ok. + + + +%%----------------------------------------------------------------- +%% Test Case: float test +%% Description: +%%----------------------------------------------------------------- +float(doc) -> ["Description", "more description"]; +float(suite) -> []; +float(_) -> + G = 16#7fffff / 16#800000 + 1.0, + H1 = math:pow(2, 127), + H2 = math:pow(2, -126), + float_big_loop([-H1 * G, -H1 * 1.0, -H2 * G, -H2 * 1.0, + -4040.313131, -3.141592, 0.0, 3.141592, 4040.313131, + H1 * G, H1 * 1.0, H2 * G, H2 * 1.0]), + float_little_loop([-H1 * G, -H1 * 1.0, -H2 * G, -H2 * 1.0, + -4040.313131, -3.141592, 0.0, 3.141592, 4040.313131, + H1 * G, H1 * 1.0, H2 * G, H2 * 1.0]), + ok. + +float_big_loop([]) -> + ok; +float_big_loop([X |List]) -> + ?line [CodedType] = cdrlib:enc_float(X, []), + ?line {Y, <<>>} = cdrlib:dec_float(big, CodedType), + ?line float_comp(X,Y), + float_big_loop(List), + ok. + +float_little_loop([]) -> + ok; +float_little_loop([X |List]) -> + ?line [CodedType] = enc_float_little(X, []), + ?line {Y, <<>>} = cdrlib:dec_float(little, CodedType), + ?line float_comp(X,Y), + float_little_loop(List), + ok. + +float_comp(X,Y) when X == 0.0, Y == 0.0 -> + ok; +float_comp(X,Y) -> + Div = abs(Y) / abs(X), + %% io:format("~p~n", [float_to_list(Div)]), + ?line true = (Div < 1.0000001), + ?line true = (Div > 0.9999999), + ok. + +enc_float_little(X, Message) -> + [ <<X:32/little-float>> | Message]. + +%%----------------------------------------------------------------- +%% Test Case: double test +%% Description: +%%----------------------------------------------------------------- +double(doc) -> ["Description", "more description"]; +double(suite) -> []; +double(_) -> + F = 16#0fffffffffffff / 16#10000000000000 + 1.0, + E1 = math:pow(2, 1023), + E2 = math:pow(2, -1022), + G = 16#7fffff / 16#800000 + 1.0, + H1 = math:pow(2, 128), + H2 = math:pow(2, -127), + double_big_loop([-E1 * F, -E1 * 1.0, -E2 * F, -E2 * 1.0, + -H1 * G, -H1 * 1.0, -H2 * G, -H2 * 1.0, + -4040.313131, -3.141592, 0.0, 3.141592, 4040.313131, + H1 * G, H1 * 1.0, H2 * G, H2 * 1.0, + E1 * F, E1 * 1.0, E2 * F, E2 * 1.0]), + double_little_loop([-E1 * F, -E1 * 1.0, -E2 * F, -E2 * 1.0, + -H1 * G, -H1 * 1.0, -H2 * G, -H2 * 1.0, + -4040.313131, -3.141592, 0.0, 3.141592, 4040.313131, + H1 * G, H1 * 1.0, H2 * G, H2 * 1.0, + E1 * F, E1 * 1.0, E2 * F, E2 * 1.0]), + ok. + +double_big_loop([]) -> + ok; +double_big_loop([X |List]) -> + ?line [CodedType] = cdrlib:enc_double(X, []), + ?line {Y, <<>>} = cdrlib:dec_double(big, CodedType), + ?line double_comp(X,Y), + double_big_loop(List), + ok. + +double_little_loop([]) -> + ok; +double_little_loop([X |List]) -> + ?line [CodedType] = enc_double_little(X, []), + ?line {Y, <<>>} = cdrlib:dec_double(little, CodedType), + ?line double_comp(X,Y), + double_little_loop(List), + ok. + +enc_double_little(X, Message) -> + [ <<X:64/little-float>> | Message]. + +double_comp(X,Y) when X == 0.0, Y == 0.0 -> + ok; +double_comp(X,Y) -> + Div = abs(Y) / abs(X), + %% io:format("~p~n", [float_to_list(Div)]), + ?line true = (Div < 1.00000000000001), + ?line true = (Div > 0.99999999999999), + ok. + +double_should_be_ok(doc) -> ["Description", "more description"]; +double_should_be_ok(suite) -> []; +double_should_be_ok(_) -> + F = 16#0fffffffffffff / 16#10000000000000 + 1.0, + E1 = math:pow(2, 1024), % erlang can't handle this. + E2 = math:pow(2, -1023), + double_big_loop([-E1 * F, -E1 * 1.0, -E2 * F, -E2 * 1.0, + E1 * F, E1 * 1.0, E2 * F, E2 * 1.0]), + double_little_loop([-E1 * F, -E1 * 1.0, -E2 * F, -E2 * 1.0, + E1 * F, E1 * 1.0, E2 * F, E2 * 1.0]), + ok. + +%%----------------------------------------------------------------- +%% Test Case: enum test +%% Description: +%%----------------------------------------------------------------- +enum(doc) -> ["Description", "more description"]; +enum(suite) -> []; +enum(_) -> + enum_big(), + enum_little(), + ok. + +enum_big() -> + ?line [Coded_a] = cdrlib:enc_enum(a,[a,b,c],[]), + ?line {a, <<>>} = cdrlib:dec_enum(big, ["a","b","c"], Coded_a), + ?line [Coded_b] = cdrlib:enc_enum(b,[a,b,c],[]), + ?line {b, <<>>} = cdrlib:dec_enum(big, ["a","b","c"], Coded_b), + ?line [Coded_c] = cdrlib:enc_enum(c,[a,b,c],[]), + ?line {c, <<>>} = cdrlib:dec_enum(big, ["a","b","c"], Coded_c), + ok. + +enum_little() -> + ?line Coded_a = enc_r_enum(a,[a,b,c],[]), + ?line {a, <<>>} = cdrlib:dec_enum(little, ["a","b","c"], Coded_a), + ?line Coded_b = enc_r_enum(b,[a,b,c],[]), + ?line {b, <<>>} = cdrlib:dec_enum(little, ["a","b","c"], Coded_b), + ?line Coded_c = enc_r_enum(c,[a,b,c],[]), + ?line {c, <<>>} = cdrlib:dec_enum(little, ["a","b","c"], Coded_c), + ok. + +enc_r_enum(Enum, ElemList, Message) -> + Val = getEnumValue(ElemList,Enum, 0), + enc_r_unsigned_long(Val, Message). + +getEnumValue([Enum |_List], Enum, N) -> + N; +getEnumValue([_ |List], Enum, N) -> + getEnumValue(List, Enum, N + 1). + +enc_r_unsigned_long(X, Message) -> + list_to_binary([(X) band 16#ff, ((X) bsr 8) band 16#ff, + ((X) bsr 16) band 16#ff, ((X) bsr 24) band 16#ff | Message]). diff --git a/lib/orber/test/corba_SUITE.erl b/lib/orber/test/corba_SUITE.erl new file mode 100644 index 0000000000..dae8fcbefc --- /dev/null +++ b/lib/orber/test/corba_SUITE.erl @@ -0,0 +1,909 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1997-2010. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%----------------------------------------------------------------- +%% +%% Description: +%% Test suite for corba/boa/object/orber API functions +%% +%%----------------------------------------------------------------- +-module(corba_SUITE). + +-include("test_server.hrl"). +-include_lib("orber/include/corba.hrl"). +-include_lib("orber/COSS/CosNaming/CosNaming.hrl"). +-include_lib("orber/src/orber_iiop.hrl"). + + +-define(default_timeout, ?t:minutes(5)). + +-define(match(ExpectedRes,Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + io:format("------ CORRECT RESULT ------~n~p~n", + [AcTuAlReS]), + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~nRESULT: ~p~n", + [AcTuAlReS]), + exit(AcTuAlReS) + end + end()). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1]). + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- +-export([pseudo_calls/2, pseudo_casts/2]). +-compile(export_all). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["API tests for the CORBA/BOA/Object/orber interfaces", ""]; +all(suite) -> {req, + [mnesia], + {conf, init_all, cases(), finish_all}}. + +cases() -> + [exception_info_api, corba_api, object_api, orber_api, + orber_objectkeys_api, orber_pseudo_objects, callback_ok_api, + callback_arity_api, callback_module_api, callback_function_api, + callback_precond_api, callback_postcond_api, callback_exit_api, + callback_badarith_api, callback_case_clause_api, + callback_function_clause_api]. + +%% boa_api, request, locate_request, locate_reply]. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- + +init_per_testcase(_Case, Config) -> + Path = code:which(?MODULE), + code:add_pathz(filename:join(filename:dirname(Path), "idl_output")), + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Path = code:which(?MODULE), + code:del_path(filename:join(filename:dirname(Path), "idl_output")), + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +init_all(Config) -> + corba:orb_init([{orber_debug_level, 10}, {giop_version, {1,2}}, + {iiop_port, 0}]), + mnesia:delete_schema([node()]), + mnesia:create_schema([node()]), + orber:install([node()]), + application:start(mnesia), + application:start(orber), + if + is_list(Config) -> + Config; + true -> + exit("Config not a list") + end. + +finish_all(Config) -> + application:stop(orber), + application:stop(mnesia), + mnesia:delete_schema([node()]), + Config. + +%%----------------------------------------------------------------- +%% API tests for pseudo interface CORBA +%%----------------------------------------------------------------- +corba_api(doc) -> ["CORBA API tests", ""]; +corba_api(suite) -> []; +corba_api(_) -> + NIL = corba:create_nil_objref(), + ?line ok = corba:dispose(NIL), + ?line NS = corba:resolve_initial_references("NameService"), + ?line List = corba:list_initial_services(), + ?line ["NameService"] = List, + ?line NSstring = corba:object_to_string(NS), + ?line NS1 = corba:string_to_object(NSstring), + ?line NSstring = corba:object_to_string(NS1), + ?line true = corba:add_initial_service("MyData", NS), + ?line NS = corba:resolve_initial_references("MyData"), + ?line [_,_] = corba:list_initial_services(), + ?line false = corba:remove_initial_service("Wrong"), + ?line NIL = corba:resolve_initial_references("Wrong"), + ?line NS = corba:string_to_object("corbaloc:rir:/MyData"), + ?line true = corba:remove_initial_service("MyData"), + ?line ["NameService"] = corba:list_initial_services(), + + %% This is a collection of different stringified IOR:s (correct & incorrect) + %% which we use to test IOR encode/decode. + ?line IOR1 = ?match({'IOP_IOR',_,_}, corba:string_to_object("IOR:000303030000000d49444c3a746573743a312e3000030303000000040000000000000100000102010000000a3132372e302e302e31009d610000002dabacab3131303432343836383731005f526f6f74504f4100414c4c5f504f410000cafebabe3e2316570000000003030300000002000000210000007800010202000000010040020200000022000000080003030300000000004000400000000806066781020101010000001b0401000806066781020101010000000b40616469726f6e2e636f6d010400000000000000000000020000000806066781020101010000000b06092a864886f712010202010000000f000000010000002c00030303000100010000000400010020000101090001010005010001000101090000000200010100050100010000000000000184000102010000000a3132372e302e302e310000000000002dabacab3131303432343836383731005f526f6f74504f4100414c4c5f504f410000cafebabe3e231657000000000303030000000300000021000000ec000102020000000200060202000000240000001c0001006600060202000000010000000a3132372e302e302e31009d600000000000000000000000000400000000000000000000020000000806066781020101010000000b06092a864886f712010202010000000f00460202000000240000001c0001006600060202000000010000000a3132372e302e302e31009d62004000400000000806066781020101010000001b0401000806066781020101010000000b40616469726f6e2e636f6d010400000000000000000000020000000806066781020101010000000b06092a864886f712010202010000000f00000014000000080001006600069d5e000000010000002c000303030001000100000004000100200001010900010100050100010001010900000002000101000501000100000000000000dc000102010000000a3132372e302e302e31009d5f0000002dabacab3131303432343836383731005f526f6f74504f4100414c4c5f504f410000cafebabe3e23165700000000030303000000020000002100000054000102020000000100000202000000220000000800030303000000000000000000000000000000000400000000000000000000020000000806066781020101010000000b06092a864886f712010202010000000f000000010000002c00030303000100010000000400010020000101090001010005010001000101090000000200010100050100010000000000000080000102010000000a3132372e302e302e31009d5d0000002dabacab3131303432343836383731005f526f6f74504f4100414c4c5f504f410000cafebabe3e2316570000000003030300000001000000010000002c0003030300010001000000040001002000010109000101000501000100010109000000020001010005010001")), + ?line IOR2 = ?match({'IOP_IOR',_,_}, corba:string_to_object("IOR:000303030000000d49444c3a746573743a312e30000303030000000100000000000000e0000102010000000a3132372e302e302e31009d5f00000034abacab3131303432343836383731005f526f6f74504f410049494f505f43534976325f504f410000cafebabe3e23165700000000000000020000002100000054000102020000000100000202000000220000000800030303000000000000000000000000000000000400000000000000000000020000000806066781020101010000000b06092a864886f712010202010000000f000000010000002c0003030300010001000000040001002000010109000101000501000100010109000000020001010005010001")), + ?line IOR3 = ?match({'IOP_IOR',_,_}, corba:string_to_object("IOR:000303030000000d49444c3a746573743a312e3000030303000000010000000000000108000102010000000a3132372e302e302e31009d6100000037abacab3131303432343836383731005f526f6f74504f410049494f505f43534976325f55505f504f410000cafebabe3e231657000000000100000002000000210000007800010202000000010040020200000022000000080003030300000000004000400000000806066781020101010000001b0401000806066781020101010000000b40616469726f6e2e636f6d010400000000000000000000020000000806066781020101010000000b06092a864886f712010202010000000f000000010000002c0003030300010001000000040001002000010109000101000501000100010109000000020001010005010001")), + ?line IOR4 = ?match({'IOP_IOR',_,_}, corba:string_to_object("IOR:000303030000000d49444c3a746573743a312e3000030303000000010000000000000080000102010000000a3132372e302e302e31009d5d0000002eabacab3131303432343836383731005f526f6f74504f410049494f505f504f410000cafebabe3e23165700000000020200000001000000010000002c0003030300010001000000040001002000010109000101000501000100010109000000020001010005010001")), + ?line IOR5 = ?match({'IOP_IOR',_,_}, corba:string_to_object("IOR:000303030000000d49444c3a746573743a312e30000303030000000100000000000000fc000102010000000a3132372e302e302e3100000000000033abacab3131303432343836383731005f526f6f74504f4100544c535f43534976325f504f410000cafebabe3e231657000000000100000002000000210000007000010202000000010006020200000024000000220001006600060202000000010000000f3132382e3233302e3230382e353500019d6000000000020200000000000000000400000000000000000000020000000806066781020101010000000b06092a864886f712010202010000000f000000010000002c0003030300010001000000040001002000010109000101000501000100010109000000020001010005010001")), + ?line IOR6 = ?match({'IOP_IOR',_,_}, corba:string_to_object("IOR:000303030000000d49444c3a746573743a312e3000030303000000010000000000000124000102010000000a3132372e302e302e3100000000000036abacab3131303432343836383731005f526f6f74504f4100544c535f43534976325f55505f504f410000cafebabe3e23165700000000020200000002000000210000009400010202000000010046020200000024000000220001006600060202000000010000000f3132382e3233302e3230382e353500019d620040004002020000000806066781020101010000001b0401000806066781020101010000000b40616469726f6e2e636f6d010400000000000000000000020000000806066781020101010000000b06092a864886f712010202010000000f000000010000002c0003030300010001000000040001002000010109000101000501000100010109000000020001010005010001")), + ?line IOR7 = ?match({'IOP_IOR',_,_}, corba:string_to_object("IOR:000303030000000d49444c3a746573743a312e3000030303000000010000000000000090000102010000000a3132372e302e302e310000000000002dabacab3131303432343836383731005f526f6f74504f4100544c535f504f410000cafebabe3e231657000000000303030000000200000014000000080001006600069d5e000000010000002c0003030300010001000000040001002000010109000101000501000100010109000000020001010005010001")), + ?line IOR1 = corba:string_to_object(corba:object_to_string(IOR1)), + ?line IOR2 = corba:string_to_object(corba:object_to_string(IOR2)), + ?line IOR3 = corba:string_to_object(corba:object_to_string(IOR3)), + ?line IOR4 = corba:string_to_object(corba:object_to_string(IOR4)), + ?line IOR5 = corba:string_to_object(corba:object_to_string(IOR5)), + ?line IOR6 = corba:string_to_object(corba:object_to_string(IOR6)), + ?line IOR7 = corba:string_to_object(corba:object_to_string(IOR7)), + ?line ?match(ok, corba:print_object(IOR1)), + ?line ?match(ok, corba:print_object(IOR2)), + ?line ?match(ok, corba:print_object(IOR3)), + ?line ?match(ok, corba:print_object(IOR4)), + ?line ?match(ok, corba:print_object(IOR5)), + ?line ?match(ok, corba:print_object(IOR6)), + ?line ?match(ok, corba:print_object(IOR7)), + ?line ?match(ok, corba:print_object("IOR:000303030000000d49444c3a746573743a312e300003030300000002000000000000003000010001000000136d792e686f73742e65726c616e672e6f72670001801a02020000000c424f410a00000a0000070a010000000100000024000303030000000100000001000000140003030300010001000000000001010900000000")), + [IP] = ?match([_], orber:host()), + ?match(#'IOP_IOR'{profiles=[#'IOP_TaggedProfile' + {tag=?TAG_INTERNET_IOP, + profile_data=#'IIOP_ProfileBody_1_1' + {host = IP}}]}, + corba:string_to_object(corba:object_to_string(NS))), + ?match(#'IOP_IOR'{profiles=[#'IOP_TaggedProfile' + {tag=?TAG_INTERNET_IOP, + profile_data=#'IIOP_ProfileBody_1_1' + {host = "127.0.0.1"}}]}, + corba:string_to_object(corba:object_to_string(NS, ["127.0.0.1"]))), + ?match(#'IOP_IOR'{profiles=[#'IOP_TaggedProfile' + {tag=?TAG_INTERNET_IOP, + profile_data=#'IIOP_ProfileBody_1_1' + {host = "127.0.0.1", port = 5468}}]}, + corba:string_to_object(corba:object_to_string(NS, ["127.0.0.1"], + 5468))), + ok. + +%%----------------------------------------------------------------- +%% API tests for interface BOA +%%----------------------------------------------------------------- +boa_api(doc) -> ["BOA API tests", ""]; +boa_api(suite) -> []; +boa_api(_) -> + ok. + +%%----------------------------------------------------------------- +%% API tests for interface OBJECT +%%----------------------------------------------------------------- +object_api(doc) -> ["Object API tests", ""]; +object_api(suite) -> []; +object_api(_) -> + ?line oe_orber_test_server:oe_register(), + ?line EC = orber_test_server:oe_create(), + ?line NS = corba:resolve_initial_references("NameService"), + %% testing corba_object:is_a(Obj, IFRID) locally. + ?line orber_test_lib:corba_object_tests(EC, NS), + + ?line ?match(false, corba_object:non_existent(NS)), + + ?line corba:dispose(EC), + ?line oe_orber_test_server:oe_unregister(), + ok. + +%%----------------------------------------------------------------- +%% API tests for orbers main module +%%----------------------------------------------------------------- +orber_api(doc) -> ["orber API tests", ""]; +orber_api(suite) -> []; +orber_api(_) -> + ?line ok = orber:uninstall(), + ?line orber:install([node()]), + ?line application:start(orber), + ?line NodeList = orber:orber_nodes(), + ?line NL = node(), + ?line [NL] = NodeList, + ok. + +%%----------------------------------------------------------------- +%% API tests for exception mapping +%%----------------------------------------------------------------- +exception_info_api(doc) -> ["orber API tests", ""]; +exception_info_api(suite) -> []; +exception_info_api(_) -> + ?line {ok, S1} = orber:exception_info({'EXCEPTION',{'MARSHAL',[],1163001858,'COMPLETED_NO'}}), + ?line {ok, S2} = orber:exception_info({'EXCEPTION',{'MARSHAL',[],1330446337,'COMPLETED_NO'}}), + ?line {ok, S3} = orber:exception_info({'EXCEPTION',{'MARSHAL',[],1398079490,'COMPLETED_NO'}}), + ?line {ok, S4} = orber:exception_info({'EXCEPTION',{'MARSHAL',[],1347813377,'COMPLETED_NO'}}), + ?line {ok, S5} = orber:exception_info({'EXCEPTION', {'CosNaming_NamingContext_InvalidName',"IDL:omg.org/CosNaming/NamingContext/InvalidName:1.0"}}), + ?line error_logger:info_msg("~s", [S1]), + ?line error_logger:info_msg("~s", [S2]), + ?line error_logger:info_msg("~s", [S3]), + ?line error_logger:info_msg("~s", [S4]), + ?line error_logger:info_msg("~s", [S5]), + ok. + +%%----------------------------------------------------------------- +%% API tests for orbers pseudo objects. +%%----------------------------------------------------------------- +orber_pseudo_objects(doc) -> ["orber_pseudo_objects API tests", ""]; +orber_pseudo_objects(suite) -> []; +orber_pseudo_objects(_) -> + ?line oe_orber_test_server:oe_register(), + Obj1=(catch orber_test_server:oe_create(state,[{pseudo,true}, + {local_typecheck, true}])), + ?line ?match({_,pseudo,orber_test_server_impl, _,_, _}, Obj1), + Obj2=(catch orber_test_server:oe_create([],[{pseudo, truce}])), + ?line ?match({'EXCEPTION',{'BAD_PARAM',[],_,'COMPLETED_NO'}}, Obj2), + spawn(?MODULE, pseudo_calls, [20, Obj1]), + ?line ?match({ok, 10000}, orber_test_server:pseudo_call_delay(Obj1, 10000)), + spawn(?MODULE, pseudo_casts, [20, Obj1]), + ?line ?match(ok, orber_test_server:pseudo_cast_delay(Obj1, 10000)), + + ?line ?match('object_here', corba:locate(Obj1)), + + ?line NS = corba:resolve_initial_references("NameService"), + + ?line orber_test_lib:corba_object_tests(Obj1, NS), + + ?line ?match("IDL:omg.org/orber_test/server:1.0",orber_test_server:typeID()), + + %% Test if exceptions are handled properly. + ?line ?match({'EXCEPTION',{'BAD_QOS',_,_,_}}, + orber_test_server:pseudo_call_raise_exc(Obj1, 1)), + ?line ?match({'EXCEPTION',{'BAD_QOS',_,_,_}}, + orber_test_server:pseudo_call_raise_exc(Obj1, 2)), + + %% Test if exit is handled properly. + ?line ?match({'EXCEPTION',{'TRANSIENT',_,_,_}}, + orber_test_server:stop_brutal(Obj1)), + + orber_test_lib:test_coding(Obj1, true), + + %% possible to use subobject key? + ?line ?match(state, binary_to_term(corba:get_subobject_key(Obj1))), + + ?line ?match({'EXCEPTION',{'INV_OBJREF',[],_,'COMPLETED_NO'}}, + corba:get_pid(Obj1)), + ?line ?match(false, corba_object:non_existent(Obj1)), + + ?line ?match(ok, corba:dispose(Obj1)), + + ?line ?match(false, corba_object:non_existent(Obj1)), + + %% Try if it's possible to stringify and recover the object reference. + IOR_string = (catch corba:object_to_string(Obj1)), + Obj3 =(catch corba:string_to_object(IOR_string)), + ?line ?match(IOR_string, corba:object_to_string(Obj3)), + + Obj4=(catch orber_test_server:oe_create(undefined,[{pseudo,true}])), + ?line ?match(ok, corba:dispose(Obj4)), + ?line oe_orber_test_server:oe_unregister(), + ok. + +%%----------------------------------------------------------------- +%% API tests for orbers objectkeys server. +%%----------------------------------------------------------------- +orber_objectkeys_api(doc) -> ["orber_objectkeys API tests", ""]; +orber_objectkeys_api(suite) -> []; +orber_objectkeys_api(_) -> + Obj0=(catch orber_test_server:oe_create([], [{sup_child, true}])), + Obj1=(catch orber_test_server:oe_create([], [{persistent, true}, + {regname, {local,obj1}}])), + Obj2=(catch orber_test_server:oe_create([], [{persistent, true}, + {regname, {global,{obj2, 12345}}}])), + + %% Obj0 is supposed to be a child started by a supervisor (r6) which + %% handles not only {ok, Pid} but also {ok,Pid, Returnvalue}. In our + %% case the Returnvalue is an ObjectRef. + ?line ?match({ok,_,{_,key,_, _,_, _}}, Obj0), + {ok,_,Obj0Ref} = Obj0, + corba:dispose(Obj0Ref), + + %% Only 'global' servers are at the moment allowed to be persistent. + ?line ?match({'EXCEPTION',{'BAD_PARAM',[],_,'COMPLETED_NO'}}, Obj1), + + %% We created a persistent object successfully. + ?line ?match({_,key,_,_,_, _}, Obj2), + + %% Get key and Pid + {_,_,Key,_,_, _} = Obj2, + PID=(catch orber_objectkeys:get_pid(Key)), + + %% Use the two different ways to look up if the server is persistent. + ?line ?match(true, orber_objectkeys:is_persistent(Key)), + ?line ?match(true, orber_objectkeys:is_persistent(PID)), + + %% Create servers using every possible way. + O1=(catch orber_test_server:oe_create()), + O2=(catch orber_test_server:oe_create_link()), + O3=(catch orber_test_server:oe_create([])), + O4=(catch orber_test_server:oe_create_link([])), + %% NOTE!!! Next four lines requires that we still support RegName instead of + %% only OptionList as the second argument to oe_create*/2. Remove these when that + %% is no longer the case. + O5=(catch orber_test_server:oe_create([], {'local', o5})), + O6=(catch orber_test_server:oe_create([], {'global', {o6, obj}})), + O7=(catch orber_test_server:oe_create_link([], {'local', o7})), + O8=(catch orber_test_server:oe_create_link([], {'global', {o8, obj}})), + + %% Test if all the object references are correct. + ?line ?match({_,key,_,_,_, _}, O1), + ?line ?match({_,key,_,_,_, _}, O2), + ?line ?match({_,key,_,_,_, _}, O3), + ?line ?match({_,key,_,_,_, _}, O4), + ?line ?match({_, registered, o5, _,_, _}, O5), + ?line ?match({_,key,_,_,_, _}, O6), + ?line ?match({_, registered, o7, _,_, _}, O7), + ?line ?match({_,key,_,_,_, _}, O8), + + %% Test if persistent. + {_,_,Key1,_,_, _} = O1, + PID1=(catch orber_objectkeys:get_pid(Key1)), + ?line ?match(false, orber_objectkeys:is_persistent(Key1)), + ?line ?match(false, orber_objectkeys:is_persistent(PID1)), + + %% all the servers are alive(?!). + ?line ?match(false, corba_object:non_existent(O1)), + ?line ?match(false, corba_object:non_existent(O2)), + ?line ?match(false, corba_object:non_existent(O3)), + ?line ?match(false, corba_object:non_existent(O4)), + ?line ?match(false, corba_object:non_existent(O5)), + ?line ?match(false, corba_object:non_existent(O6)), + ?line ?match(false, corba_object:non_existent(O7)), + ?line ?match(false, corba_object:non_existent(O8)), + ?line ?match(false, corba_object:non_existent(Obj2)), + + %% Does locate work? + ?line ?match('object_here', corba:locate(O1)), + ?line ?match('object_here', corba:locate(O2)), + ?line ?match('object_here', corba:locate(O3)), + ?line ?match('object_here', corba:locate(O4)), + ?line ?match('object_here', corba:locate(O5)), + ?line ?match('object_here', corba:locate(O6)), + ?line ?match('object_here', corba:locate(O7)), + ?line ?match('object_here', corba:locate(O8)), + ?line ?match('object_here', corba:locate(Obj2)), + + %% Terminate all servers with reason 'normal'. + catch corba:dispose(O1), + catch corba:dispose(O2), + catch corba:dispose(O3), + catch corba:dispose(O4), + catch corba:dispose(O5), + catch corba:dispose(O6), + catch corba:dispose(O7), + catch corba:dispose(O8), + catch corba:dispose(Obj2), + + + %% To make sure that orber_objectkeys-server is able to + %% clean up we wait. + timer:sleep(2000), + + %% all the servers are dead(?!). If one of these test-cases + %% fails the only error can be that we didn't sleep long enough, i.e., + %% try a longer timeout. If still fails something is wrong. + ?line ?match(true, corba_object:non_existent(O1)), + ?line ?match(true, corba_object:non_existent(O2)), + ?line ?match(true, corba_object:non_existent(O3)), + ?line ?match(true, corba_object:non_existent(O4)), + ?line ?match(true, corba_object:non_existent(O5)), + ?line ?match(true, corba_object:non_existent(O6)), + ?line ?match(true, corba_object:non_existent(O7)), + ?line ?match(true, corba_object:non_existent(O8)), + ?line ?match(true, corba_object:non_existent(Obj2)), + + %% Create a new persistent server. + Obj3=(catch orber_test_server:oe_create([], + [{persistent, true}, + {regname, {global,{obj2, 12345}}}])), + + %% OK?! + ?line ?match({_,key,_,_,_, _}, Obj3), + + %% Try to create a server with the same name (naturally it fails). + ?line ?match({'EXCEPTION',{'INTERNAL',[],_,'COMPLETED_NO'}}, + orber_test_server:oe_create([], + [{persistent, true}, + {regname, {global,{obj2, 12345}}}])), + %% Try to remove all 'dead' servers. No server should be removed. + orber_objectkeys:gc(0), + + %% Kill object brutal, i.e., not with reason 'normal' or 'shutdown'. + P3 = corba:get_pid(Obj3), + exit(P3, kill), + + {_,_,Key3,_,_, _} = Obj3, + + %% Give time to clean up. + timer:sleep(2000), + ?line ?match({'EXCEPTION',{'TRANSIENT',[],_,'COMPLETED_NO'}}, + gen_server:call(orber_objkeyserver, + {get_pid, Key3}, + infinity)), + + ?line ?match(false,corba_object:non_existent(Obj3)), + + %% Run gc wit a "huge" time-limit. Will not erase the dead object. + orber_objectkeys:gc(10000), + ?line ?match(false,corba_object:non_existent(Obj3)), + + %% Run gc with minimum time-limit. Will erase the dead object. + orber_objectkeys:gc(0), + ?line ?match(true,corba_object:non_existent(Obj3)), + + %% Create a new persistent server. + Obj4=(catch orber_test_server:oe_create([], + [{persistent, true}, + {regname, {global,{obj2, 12345}}}])), + + %% OK?! + ?match({_,key,_,_,_, _}, Obj4), + %% Kill object brutal, i.e., not with reason 'normal' or 'shutdown'. + P4 = corba:get_pid(Obj4), + exit(P4, kill), + + %% Give time to clean up. + timer:sleep(2000), +% ?line ?match({'EXCEPTION',{'COMM_FAILURE',[],0,'COMPLETED_NO'}}, + ?line ?match({error, _}, + corba:get_pid(Obj4)), + + ?line ?match(false,corba_object:non_existent(Obj4)), + + %% Restart the object. + Obj5=(catch orber_test_server:oe_create([], + [{persistent, true}, + {regname, {global,{obj2, 12345}}}])), + %% OK?! + ?line ?match({_,key,_,_,_, _}, Obj5), + + %% Run gc with minimum time-limit. + orber_objectkeys:gc(0), + ?line ?match(false,corba_object:non_existent(Obj5)), + corba:dispose(Obj5), + ok. + + +%%----------------------------------------------------------------- +%% API tests for callback functions +%%----------------------------------------------------------------- +-define(DO_EXIT_FLAG, 0). +-define(NO_EXIT_FLAG, 16#10). + +-define(DO_EXIT, {is, 0}). +-define(NO_EXIT, {is, 16#10}). + + + +callback_ok_api(doc) -> ["Successful callbak API tests", ""]; +callback_ok_api(suite) -> []; +callback_ok_api(_) -> + %% Init + ?line ?match({ok, {?DO_EXIT, state}}, corba:handle_init(?MODULE, {?DO_EXIT_FLAG, state})), + %% Terminate + ?line ?match(ok, corba:handle_terminate(?MODULE, "reason", {?DO_EXIT, state})), + %% Handle_call + ?line ?match({reply,ok,{?DO_EXIT,state}}, + corba:handle_call(?MODULE, foo, [], + {?DO_EXIT, state}, [], false, false)), + %% Handle_cast + ?line ?match({noreply, {?DO_EXIT,state}}, + corba:handle_cast(?MODULE, foo_1w, [], + {?DO_EXIT, state}, [], false)), + %% Handle_call precond/postcond + ?line ?match({reply, ok, {?DO_EXIT, state}}, + corba:handle_call(?MODULE, foo, [], + {?DO_EXIT, state}, [], false, false, {?MODULE, precond}, + {?MODULE, postcond}, ?MODULE)), + %% Handle_cast precond/postcond + ?line ?match({noreply, {?DO_EXIT, state}}, + corba:handle_cast(?MODULE, foo_1w, [], + {?DO_EXIT, state}, [], false, {?MODULE, precond}, + {?MODULE, postcond}, ?MODULE)), + %% Handle_info + ?line ?match({noreply, {?DO_EXIT, state}}, + corba:handle_info(?MODULE, "info", {?DO_EXIT, state})), + ok. + +callback_arity_api(doc) -> ["callbak arity API tests", ""]; +callback_arity_api(suite) -> []; +callback_arity_api(_) -> + %% Handle_call - stay-alive == false + ?line ?match({'EXIT', {undef,_}}, + corba:handle_call(?MODULE, foo, [to, many, arguments], + {?DO_EXIT, state}, [], false, false)), + %% Handle_call - stay-alive == true + ?line ?match({reply, {'EXCEPTION', #'OBJ_ADAPTER'{}}, _}, + corba:handle_call(?MODULE, foo, [to, many, arguments], + {?NO_EXIT, state}, [], false, false)), + %% Handle_call - stay-alive == false + ?line ?match({'EXIT', _}, + corba:handle_call(?MODULE, foo, [], + {?DO_EXIT, arity}, [], false, false)), + %% Handle_call - stay-alive == true + ?line ?match({reply, {'EXCEPTION', #'OBJ_ADAPTER'{}}, _}, + corba:handle_call(?MODULE, foo, [], + {?NO_EXIT, arity}, [], false, false)), + %% Handle_cast - stay-alive == false + ?line ?match({'EXIT', {undef,_}}, + corba:handle_cast(?MODULE, foo_1w, [to, many, arguments], + {?DO_EXIT, state}, [], false)), + %% Handle_cast - stay-alive == true + ?line ?match({noreply, {?NO_EXIT, state}}, + corba:handle_cast(?MODULE, foo_1w, [to, many, arguments], + {?NO_EXIT, state}, [], false)), + %% Handle_cast - stay-alive == false + ?line ?match({'EXIT', _}, + corba:handle_cast(?MODULE, foo_1w, [], + {?DO_EXIT, arity}, [], false)), + %% Handle_cast - stay-alive == true + ?line ?match({noreply, {?NO_EXIT, arity}}, + corba:handle_cast(?MODULE, foo_1w, [], + {?NO_EXIT, arity}, [], false)), + %% Handle_info - stay-alive == false + ?line ?match({'EXIT', _}, + corba:handle_info(?MODULE, "info", {?DO_EXIT, arity})), + + %% Handle_info - stay-alive == true + ?line ?match({noreply, {?NO_EXIT, arity}}, + corba:handle_info(?MODULE, "info", {?NO_EXIT, arity})), + ok. + +callback_module_api(doc) -> ["Module callbak API tests", ""]; +callback_module_api(suite) -> []; +callback_module_api(_) -> + %% Handle_call - stay-alive == false + ?line ?match({'EXIT', {undef,_}}, + corba:handle_call(wrong_mod, foo, [], + {?DO_EXIT, state}, [], false, false)), + %% Handle_call - stay-alive == true + ?line ?match({reply, {'EXCEPTION', #'OBJ_ADAPTER'{}}, _}, + corba:handle_call(wrong_mod, foo, [], + {?NO_EXIT, state}, [], false, false)), + %% Handle_cast - stay-alive == false + ?line ?match({'EXIT', {undef,_}}, + corba:handle_cast(wrong_mod, foo_1w, [], + {?DO_EXIT, state}, [], false)), + %% Handle_cast - stay-alive == true + ?line ?match({noreply, {?NO_EXIT, state}}, + corba:handle_cast(wrong_mod, foo_1w, [], + {?NO_EXIT, state}, [], false)), + %% Handle_info - stay-alive == false. + ?line ?match({'EXIT', _}, + corba:handle_info(wrong_mod, "info", {?DO_EXIT, state})), + + %% Handle_info - stay-alive == true. + ?line ?match({noreply, {?NO_EXIT, state}}, + corba:handle_info(wrong_mod, "info", {?NO_EXIT, state})), + ok. + +callback_function_api(doc) -> ["Function callbak API tests", ""]; +callback_function_api(suite) -> []; +callback_function_api(_) -> + %% Handle_call - stay-alive == false + ?line ?match({'EXIT', {undef,_}}, + corba:handle_call(?MODULE, bad_function, [], + {?DO_EXIT, state}, [], false, false)), + %% Handle_call - stay-alive == true + ?line ?match({reply, {'EXCEPTION', #'OBJ_ADAPTER'{}}, _}, + corba:handle_call(?MODULE, bad_function, [], + {?NO_EXIT, state}, [], false, false)), + %% Handle_cast - stay-alive == false + ?line ?match({'EXIT', {undef,_}}, + corba:handle_cast(?MODULE, bad_function, [], + {?DO_EXIT, state}, [], false)), + %% Handle_cast - stay-alive == true + ?line ?match({noreply, {?NO_EXIT, state}}, + corba:handle_cast(?MODULE, bad_function, [], + {?NO_EXIT, state}, [], false)), + %% Handle_info - stay-alive == false. Note, we cannot use ?MODULE here. + ?line ?match({'EXIT', _}, + corba:handle_info(corba, "info", {?DO_EXIT, state})), + + %% Handle_info - stay-alive == true. Note, we cannot use ?MODULE here. + ?line ?match({noreply, {?NO_EXIT, state}}, + corba:handle_info(corba, "info", {?NO_EXIT, state})), + ok. + +callback_precond_api(doc) -> ["Precond callbak API tests", ""]; +callback_precond_api(suite) -> []; +callback_precond_api(_) -> + %% Handle_call - stay-alive == false + ?line ?match({'EXIT', _}, + corba:handle_call(?MODULE, foo, [], + {?DO_EXIT, state}, [], false, false, {wrong_mod, precond}, + {?MODULE, postcond}, ?MODULE)), + %% Handle_call - stay-alive == false + ?line ?match({'EXIT', _}, + corba:handle_call(?MODULE, foo, [], + {?DO_EXIT, state}, [], false, false, {?MODULE, bad_precond}, + {?MODULE, postcond}, ?MODULE)), + %% Handle_call - stay-alive == true + ?line ?match({reply, {'EXCEPTION', #'OBJ_ADAPTER'{}},_}, + corba:handle_call(?MODULE, foo, [], + {?NO_EXIT, state}, [], false, false, {wrong_mod, precond}, + {?MODULE, postcond}, ?MODULE)), + %% Handle_call - stay-alive == true + ?line ?match({reply, {'EXCEPTION', #'OBJ_ADAPTER'{}},_}, + corba:handle_call(?MODULE, foo, [], + {?NO_EXIT, state}, [], false, false, {?MODULE, bad_precond}, + {?MODULE, postcond}, ?MODULE)), + %% Handle_cast - stay-alive == false + ?line ?match({'EXIT', _}, + corba:handle_cast(?MODULE, foo_1w, [], + {?DO_EXIT, state}, [], false, {wrong_mod, precond}, + {?MODULE, postcond}, ?MODULE)), + %% Handle_cast - stay-alive == false + ?line ?match({'EXIT', _}, + corba:handle_cast(?MODULE, foo_1w, [], + {?DO_EXIT, state}, [], false, {?MODULE, bad_precond}, + {?MODULE, postcond}, ?MODULE)), + %% Handle_cast - stay-alive == true + ?line ?match({noreply, {?NO_EXIT, state}}, + corba:handle_cast(?MODULE, foo_1w, [], + {?NO_EXIT, state}, [], false, {wrong_mod, precond}, + {?MODULE, postcond}, ?MODULE)), + %% Handle_cast - stay-alive == true + ?line ?match({noreply, {?NO_EXIT, state}}, + corba:handle_cast(?MODULE, foo_1w, [], + {?NO_EXIT, state}, [], false, {?MODULE, bad_precond}, + {?MODULE, postcond}, ?MODULE)), + ok. + + +callback_postcond_api(doc) -> ["Postcond callbak API tests", ""]; +callback_postcond_api(suite) -> []; +callback_postcond_api(_) -> + %% Handle_call - stay-alive == false + ?line ?match({'EXIT', _}, + corba:handle_call(?MODULE, foo, [], + {?DO_EXIT, state}, [], false, false, {?MODULE, precond}, + {wrong_mod, postcond}, ?MODULE)), + %% Handle_call - stay-alive == false + ?line ?match({'EXIT', _}, + corba:handle_call(?MODULE, foo, [], + {?DO_EXIT, state}, [], false, false, {?MODULE, precond}, + {?MODULE, bad_postcond}, ?MODULE)), + %% Handle_call - stay-alive == true + ?line ?match({reply, {'EXCEPTION', #'OBJ_ADAPTER'{}},_}, + corba:handle_call(?MODULE, foo, [], + {?NO_EXIT, state}, [], false, false, {?MODULE, precond}, + {wrong_mod, postcond}, ?MODULE)), + %% Handle_call - stay-alive == true + ?line ?match({reply, {'EXCEPTION', #'OBJ_ADAPTER'{}},_}, + corba:handle_call(?MODULE, foo, [], + {?NO_EXIT, state}, [], false, false, {?MODULE, precond}, + {?MODULE, bad_postcond}, ?MODULE)), + %% Handle_cast - stay-alive == false + ?line ?match({'EXIT', _}, + corba:handle_cast(?MODULE, foo_1w, [], + {?DO_EXIT, state}, [], false, {?MODULE, precond}, + {wrong_mod, postcond}, ?MODULE)), + %% Handle_cast - stay-alive == false + ?line ?match({'EXIT', _}, + corba:handle_cast(?MODULE, foo_1w, [], + {?DO_EXIT, state}, [], false, {?MODULE, precond}, + {?MODULE, bad_postcond}, ?MODULE)), + %% Handle_cast - stay-alive == true + ?line ?match({noreply, {?NO_EXIT, state}}, + corba:handle_cast(?MODULE, foo_1w, [], + {?NO_EXIT, state}, [], false, {?MODULE, precond}, + {wrong_mod, postcond}, ?MODULE)), + %% Handle_cast - stay-alive == true + ?line ?match({noreply, {?NO_EXIT, state}}, + corba:handle_cast(?MODULE, foo_1w, [], + {?NO_EXIT, state}, [], false, {?MODULE, precond}, + {?MODULE, bad_postcond}, ?MODULE)), + ok. + + +callback_exit_api(doc) -> ["Callbak exit API tests", ""]; +callback_exit_api(suite) -> []; +callback_exit_api(_) -> + %% Handle_call - stay-alive == false + ?line ?match({'EXIT', _}, + corba:handle_call(?MODULE, foo, [], + {?DO_EXIT, exit}, [], false, false)), + %% Handle_call - stay-alive == true + ?line ?match({reply, {'EXCEPTION', #'OBJ_ADAPTER'{}}, _}, + corba:handle_call(?MODULE, foo, [], + {?NO_EXIT, exit}, [], false, false)), + %% Handle_cast - stay-alive == false + ?line ?match({'EXIT', _}, + corba:handle_cast(?MODULE, foo_1w, [], + {?DO_EXIT, exit}, [], false)), + %% Handle_cast - stay-alive == true + ?line ?match({noreply, {?NO_EXIT, exit}}, + corba:handle_cast(?MODULE, foo_1w, [], + {?NO_EXIT, exit}, [], false)), + %% Handle_info - stay-alive == false + ?line ?match({'EXIT', _}, + corba:handle_info(?MODULE, "info", {?DO_EXIT, exit})), + + %% Handle_info - stay-alive == true + ?line ?match({noreply, {?NO_EXIT, exit}}, + corba:handle_info(?MODULE, "info", {?NO_EXIT, exit})), + ok. + + +callback_badarith_api(doc) -> ["callbak badarith API tests", ""]; +callback_badarith_api(suite) -> []; +callback_badarith_api(_) -> + %% Handle_call - stay-alive == false + ?line ?match({'EXIT', _}, + corba:handle_call(?MODULE, foo, [], + {?DO_EXIT, badarith}, [], false, false)), + %% Handle_call - stay-alive == true + ?line ?match({reply, {'EXCEPTION', #'OBJ_ADAPTER'{}},_}, + corba:handle_call(?MODULE, foo, [], + {?NO_EXIT, badarith}, [], false, false)), + %% Handle_cast - stay-alive == false + ?line ?match({'EXIT', _}, + corba:handle_cast(?MODULE, foo_1w, [], + {?DO_EXIT, badarith}, [], false)), + %% Handle_cast - stay-alive == true + ?line ?match({noreply, {?NO_EXIT, badarith}}, + corba:handle_cast(?MODULE, foo_1w, [], + {?NO_EXIT, badarith}, [], false)), + %% Handle_info - stay-alive == false + ?line ?match({'EXIT', _}, + corba:handle_info(?MODULE, "info", {?DO_EXIT, badarith})), + + %% Handle_info - stay-alive == true + ?line ?match({noreply, {?NO_EXIT, badarith}}, + corba:handle_info(?MODULE, "info", {?NO_EXIT, badarith})), + ok. + +callback_case_clause_api(doc) -> ["callbak case_clause API tests", ""]; +callback_case_clause_api(suite) -> []; +callback_case_clause_api(_) -> + %% Handle_call - stay-alive == false + ?line ?match({'EXIT', _}, + corba:handle_call(?MODULE, foo, [], + {?DO_EXIT, case_clause}, [], false, false)), + %% Handle_call - stay-alive == true + ?line ?match({reply, {'EXCEPTION', #'OBJ_ADAPTER'{}}, _}, + corba:handle_call(?MODULE, foo, [], + {?NO_EXIT, case_clause}, [], false, false)), + %% Handle_cast - stay-alive == false + ?line ?match({'EXIT', _}, + corba:handle_cast(?MODULE, foo_1w, [], + {?DO_EXIT, case_clause}, [], false)), + %% Handle_cast - stay-alive == true + ?line ?match({noreply, {?NO_EXIT, case_clause}}, + corba:handle_cast(?MODULE, foo_1w, [], + {?NO_EXIT, case_clause}, [], false)), + %% Handle_info - stay-alive == false + ?line ?match({'EXIT', _}, + corba:handle_info(?MODULE, "info", {?DO_EXIT, case_clause})), + + %% Handle_info - stay-alive == true + ?line ?match({noreply, {?NO_EXIT, case_clause}}, + corba:handle_info(?MODULE, "info", {?NO_EXIT, case_clause})), + ok. + +callback_function_clause_api(doc) -> ["callbak function_clause API tests", ""]; +callback_function_clause_api(suite) -> []; +callback_function_clause_api(_) -> + %% Handle_call - stay-alive == false + ?line ?match({'EXIT', _}, + corba:handle_call(?MODULE, foo, [], + {?DO_EXIT, function_clause}, [], false, false)), + %% Handle_call - stay-alive == true + ?line ?match({reply, {'EXCEPTION', #'OBJ_ADAPTER'{}}, _}, + corba:handle_call(?MODULE, foo, [], + {?NO_EXIT, function_clause}, [], false, false)), + %% Handle_cast - stay-alive == false + ?line ?match({'EXIT', _}, + corba:handle_cast(?MODULE, foo_1w, [], + {?DO_EXIT, function_clause}, [], false)), + %% Handle_cast - stay-alive == true + ?line ?match({noreply, {?NO_EXIT, function_clause}}, + corba:handle_cast(?MODULE, foo_1w, [], + {?NO_EXIT, function_clause}, [], false)), + %% Handle_info - stay-alive == false + ?line ?match({'EXIT', _}, + corba:handle_info(?MODULE, "info", {?DO_EXIT, function_clause})), + %% Handle_info - stay-alive == true + ?line ?match({noreply, {?NO_EXIT, function_clause}}, + corba:handle_info(?MODULE, "info", {?NO_EXIT, function_clause})), + ok. + +%% Faked mandatory operations +init(State) -> + evaluate_state(State), + {ok, State}. +terminate(_Reason, State) -> + evaluate_state(State), + ok. + +code_change(_OldVsn, State, _Extra) -> + evaluate_state(State), + {ok, State}. +handle_call(_,_, State) -> + evaluate_state(State), + {noreply, State}. +handle_cast(_, State) -> + evaluate_state(State), + {noreply, State}. +handle_info(_Info, State) -> + evaluate_state(State), + {noreply, State}. + +foo(State) -> + evaluate_state(State), + {reply, ok, State}. +foo(State, _Arg) -> + evaluate_state(State), + {reply, ok, State}. + +foo_1w(State) -> + evaluate_state(State), + {noreply, State}. +foo_1w(State, _Arg) -> + evaluate_state(State), + {noreply, State}. + +precond(_Module, _Function, _Args) -> + ok. + +postcond(_Module, _Function, _Args, _Result) -> + ok. + +evaluate_state(exit) -> + exit("exit on purpose"); +evaluate_state(badarith) -> + 10 * atom; +evaluate_state(case_clause) -> + case 10 of + false -> + ok + end; +evaluate_state(module) -> + non_existing_module:bar(); +evaluate_state(function) -> + ?MODULE:non_existing_function(); +evaluate_state(arity) -> + ?MODULE:foo(to, many, arguments); +evaluate_state(function_clause) -> + evaluate_state(incorrect_state); +evaluate_state(state) -> + ok. + +%%----------------------------------------------------------------- +%% Local functions. +%%----------------------------------------------------------------- + +pseudo_calls(0, _) -> + ok; +pseudo_calls(Times, Obj) -> + orber_test_server:pseudo_call(Obj), + New = Times - 1, + pseudo_calls(New, Obj). +pseudo_casts(0, _) -> + ok; +pseudo_casts(Times, Obj) -> + orber_test_server:pseudo_cast(Obj), + New = Times - 1, + pseudo_casts(New, Obj). diff --git a/lib/orber/test/csiv2_SUITE.erl b/lib/orber/test/csiv2_SUITE.erl new file mode 100644 index 0000000000..8103fd81ac --- /dev/null +++ b/lib/orber/test/csiv2_SUITE.erl @@ -0,0 +1,940 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2005-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(csiv2_SUITE). + +-include("test_server.hrl"). +-include_lib("orber/include/corba.hrl"). +-include_lib("orber/COSS/CosNaming/CosNaming.hrl"). +-include_lib("orber/src/orber_iiop.hrl"). +-include_lib("orber/src/ifr_objects.hrl"). +-include("idl_output/orber_test_server.hrl"). +-include_lib("orber/COSS/CosNaming/CosNaming_NamingContextExt.hrl"). +-include_lib("orber/COSS/CosNaming/CosNaming_NamingContext.hrl"). +%%-include_lib("orber/src/OrberCSIv2.hrl"). + +-define(default_timeout, ?t:minutes(5)). + +-define(match(ExpectedRes,Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + io:format("------ CORRECT RESULT ------~n~p~n", + [AcTuAlReS]), + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~nRESULT: ~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS) + end + end()). + +-define(REQUEST_ID, 0). + +-define(REPLY_FRAG_1, <<71,73,79,80,1,2,2,1,0,0,0,41,0,0,0,?REQUEST_ID,0,0,0,0,0,0,0,1,78,69,79,0,0,0,0,2,0,10,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,4,49>>). +%% The fragments are identical for requests and replies. +-define(FRAG_2, <<71,73,79,80,1,2,2,7,0,0,0,5,0,0,0,?REQUEST_ID,50>>). +-define(FRAG_3, <<71,73,79,80,1,2,2,7,0,0,0,5,0,0,0,?REQUEST_ID,51>>). +-define(FRAG_4, <<71,73,79,80,1,2,0,7,0,0,0,5,0,0,0,?REQUEST_ID,0>>). + +%% Should X509 DER generated by, for example, OpenSSL +-define(X509DER, + <<42>>). + +%% Should X509 PEM generated by, for example, OpenSSL +-define(X509PEM, + <<42>>). + +%% IOR exported by VB (CSIv2 activated). +-define(VB_IOR, + #'IOP_IOR' + {type_id = "IDL:omg.org/CosNotifyComm/SequencePushConsumer:1.0", + profiles = + [#'IOP_TaggedProfile' + {tag = ?TAG_INTERNET_IOP, + profile_data = + #'IIOP_ProfileBody_1_1'{ + iiop_version = #'IIOP_Version'{major = 1, + minor = 2}, + host = "127.0.0.1", + port = 0, + object_key = [0,86,66,1,0,0,0,24,47,70,77,65,95,67,73,82,80,77,65,78,95,80,79,65,95,83,69,67,85,82,69,0,0,0,0,4,0,0,4,186,0,0,2,10,81,218,65,185], + components = + [#'IOP_TaggedComponent'{tag = ?TAG_SSL_SEC_TRANS, + component_data = #'SSLIOP_SSL'{ + target_supports = 102, + target_requires = 66, + port = 49934}}, + #'IOP_TaggedComponent'{tag = ?TAG_CSI_SEC_MECH_LIST, + component_data = + #'CSIIOP_CompoundSecMechList'{stateful = true, + mechanism_list = + [#'CSIIOP_CompoundSecMech' + {target_requires = 66, + transport_mech = #'IOP_TaggedComponent'{ + tag = ?TAG_TLS_SEC_TRANS, + component_data = + #'CSIIOP_TLS_SEC_TRANS'{ + target_supports = 102, + target_requires = 66, + addresses = + [#'CSIIOP_TransportAddress' + {host_name = "127.0.0.1", + port = 49934}]}}, + as_context_mech = + #'CSIIOP_AS_ContextSec'{ + target_supports = 0, + target_requires = 0, + client_authentication_mech = [], + target_name = []}, + sas_context_mech = + #'CSIIOP_SAS_ContextSec'{ + target_supports = 1024, + target_requires = 0, + privilege_authorities = + [#'CSIIOP_ServiceConfiguration' + {syntax = 1447174401, + name = "Borland"}], + supported_naming_mechanisms = [[6, + 6, + 103, + 129, + 2, + 1, + 1, + 1]], + supported_identity_types = 15}}]}}, + #'IOP_TaggedComponent' + {tag = ?TAG_CODE_SETS, + component_data = + #'CONV_FRAME_CodeSetComponentInfo'{'ForCharData' = + #'CONV_FRAME_CodeSetComponent'{ + native_code_set = 65537, + conversion_code_sets = [83951617]}, + 'ForWcharData' = + #'CONV_FRAME_CodeSetComponent'{ + native_code_set = 65801, + conversion_code_sets = []}}}, + #'IOP_TaggedComponent'{tag = ?TAG_ORB_TYPE, + component_data = 1447645952}, + #'IOP_TaggedComponent'{tag = 1447645955, + component_data = [0,5,7,1,127]}]}}]}). + +%% Common basic types +-define(OID, {2,23,130,1,1,1}). + +-define(OCTET_STR, [1,2,3,4]). + +-define(BIT_STR, [0,1,0,1,1]). + +-define(BOOLEAN, false). + +-define(ANY, [19,5,111,116,112,67,65]). + +-ifdef(false). +%% PKIX1Explicit88 +-define(AlgorithmIdentifier, + #'AlgorithmIdentifier'{algorithm = ?OID, + parameters = ?ANY}). + +-define(Validity, #'Validity'{notBefore = {utcTime, "19820102070533.8"}, + notAfter = {generalTime, "19820102070533.8"}}). + +-define(SubjectPublicKeyInfo, + #'SubjectPublicKeyInfo'{algorithm = ?AlgorithmIdentifier, + subjectPublicKey = ?BIT_STR}). + +-define(AttributeTypeAndValue, + #'AttributeTypeAndValue'{type = ?OID, + value = <<19,11,69,114,105,99,115,115,111,110,32,65,66>>}). + +-define(RelativeDistinguishedName, [?AttributeTypeAndValue]). + +-define(RDNSequence, [?RelativeDistinguishedName]). + +-define(Name, {rdnSequence, ?RDNSequence}). + +-define(Version, v3). + +-define(CertificateSerialNumber, 1). + +-define(UniqueIdentifier, ?BIT_STR). + +-define(Extension, #'Extension'{extnID = ?OID, + critical = ?BOOLEAN, + extnValue = ?OCTET_STR}). + +-define(Extensions, [?Extension]). + +-define(TBSCertificate, + #'TBSCertificate'{version = ?Version, + serialNumber = ?CertificateSerialNumber, + signature = ?AlgorithmIdentifier, + issuer = ?Name, + validity = ?Validity, + subject = ?Name, + subjectPublicKeyInfo = ?SubjectPublicKeyInfo, + issuerUniqueID = ?UniqueIdentifier, + subjectUniqueID = ?UniqueIdentifier, + extensions = ?Extensions}). + +-define(Certificate, #'Certificate'{tbsCertificate = ?TBSCertificate, + signatureAlgorithm = ?AlgorithmIdentifier, + signature = ?BIT_STR}). + +%% PKIX1Implicit88 + +-define(GeneralName, {registeredID, ?OID}). + +-define(GeneralNames, [?GeneralName]). + +%% PKIXAttributeCertificate +-define(AttCertValidityPeriod, + #'AttCertValidityPeriod'{notBeforeTime = "19820102070533.8", + notAfterTime = "19820102070533.8"}). + + +-define(Attribute, #'Attribute'{type = ?OID, + values = []}). + +-define(Attributes, [?Attribute]). + +-define(IssuerSerial, #'IssuerSerial'{issuer = ?GeneralNames, + serial = ?CertificateSerialNumber, + issuerUID = ?UniqueIdentifier}). + +-define(DigestedObjectType, publicKey). %% Enum + +-define(ObjectDigestInfo, + #'ObjectDigestInfo'{digestedObjectType = ?DigestedObjectType, + otherObjectTypeID = ?OID, + digestAlgorithm = ?AlgorithmIdentifier, + objectDigest = ?BIT_STR}). + +-define(V2Form, #'V2Form'{issuerName = ?GeneralNames, + baseCertificateID = ?IssuerSerial, + objectDigestInfo = ?ObjectDigestInfo}). + +-define(AttCertVersion, v2). + +-define(Holder, #'Holder'{baseCertificateID = ?IssuerSerial, + entityName = ?GeneralNames, + objectDigestInfo = ?ObjectDigestInfo}). + +-define(AttCertIssuer, {v2Form, ?V2Form}). + +-define(AttributeCertificateInfo, + #'AttributeCertificateInfo'{version = ?AttCertVersion, + holder = ?Holder, + issuer = ?AttCertIssuer, + signature = ?AlgorithmIdentifier, + serialNumber = ?CertificateSerialNumber, + attrCertValidityPeriod = ?AttCertValidityPeriod, + attributes = ?Attributes, + issuerUniqueID = ?UniqueIdentifier, + extensions = ?Extensions}). + +-define(AttributeCertificate, + #'AttributeCertificate'{acinfo = ?AttributeCertificateInfo, + signatureAlgorithm = ?AlgorithmIdentifier, + signatureValue = ?BIT_STR}). + + +%% OrberCSIv2 +-define(AttributeCertChain, + #'AttributeCertChain'{attributeCert = ?AttributeCertificate, + certificateChain = ?CertificateChain}). + +-define(CertificateChain, [?Certificate]). + +-define(VerifyingCertChain, [?Certificate]). + +-endif. + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1, cases/0, init_all/1, finish_all/1, + init_per_testcase/2, fin_per_testcase/2, +% code_CertificateChain_api/1, +% code_AttributeCertChain_api/1, +% code_VerifyingCertChain_api/1, +% code_AttributeCertificate_api/1, +% code_Certificate_api/1, +% code_TBSCertificate_api/1, +% code_CertificateSerialNumber_api/1, +% code_Version_api/1, +% code_AlgorithmIdentifier_api/1, +% code_Name_api/1, +% code_RDNSequence_api/1, +% code_RelativeDistinguishedName_api/1, +% code_AttributeTypeAndValue_api/1, +% code_Attribute_api/1, +% code_Validity_api/1, +% code_SubjectPublicKeyInfo_api/1, +% code_UniqueIdentifier_api/1, +% code_Extensions_api/1, +% code_Extension_api/1, +% code_AttributeCertificateInfo_api/1, +% code_AttCertVersion_api/1, +% code_Holder_api/1, +% code_AttCertIssuer_api/1, +% code_AttCertValidityPeriod_api/1, +% code_V2Form_api/1, +% code_IssuerSerial_api/1, +% code_ObjectDigestInfo_api/1, +% code_OpenSSL509_api/1, + ssl_server_peercert_api/1, + ssl_client_peercert_api/1]). + + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- +-export([fake_server_ORB/5]). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["API tests for multi orber interfaces using CSIv2"]; +all(suite) -> {req, + [mnesia], + {conf, init_all, cases(), finish_all}}. + +%% NOTE - the fragment test cases must bu first since we explicitly set a request +%% id. Otherwise, the request-id counter would be increased and we cannot know +%% what it is. +cases() -> + [ +% code_CertificateChain_api, +% code_AttributeCertChain_api, +% code_VerifyingCertChain_api, +% code_AttributeCertificate_api, +% code_Certificate_api, +% code_TBSCertificate_api, +% code_CertificateSerialNumber_api, +% code_Version_api, +% code_AlgorithmIdentifier_api, +% code_Name_api, +% code_RDNSequence_api, +% code_RelativeDistinguishedName_api, +% code_AttributeTypeAndValue_api, +% code_Attribute_api, +% code_Validity_api, +% code_SubjectPublicKeyInfo_api, +% code_UniqueIdentifier_api, +% code_Extensions_api, +% code_Extension_api, +% code_AttributeCertificateInfo_api, +% code_AttCertVersion_api, +% code_Holder_api, +% code_AttCertIssuer_api, +% code_AttCertValidityPeriod_api, +% code_V2Form_api, +% code_IssuerSerial_api, +% code_ObjectDigestInfo_api, +% code_OpenSSL509_api, + ssl_server_peercert_api, + ssl_client_peercert_api]. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- + +init_per_testcase(_Case, Config) -> + Path = code:which(?MODULE), + code:add_pathz(filename:join(filename:dirname(Path), "idl_output")), + Dog=test_server:timetrap(?default_timeout), + orber:jump_start(0), + oe_orber_test_server:oe_register(), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + oe_orber_test_server:oe_unregister(), + orber:jump_stop(), + Path = code:which(?MODULE), + code:del_path(filename:join(filename:dirname(Path), "idl_output")), + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +init_all(Config) -> + if + is_list(Config) -> + Config; + true -> + exit("Config not a list") + end. + +finish_all(Config) -> + Config. + +%%----------------------------------------------------------------- +%% API tests for ORB to ORB, no security +%%----------------------------------------------------------------- + + +%%----------------------------------------------------------------- +%% Encode and decode ASN.1 X509 +%%----------------------------------------------------------------- + +-ifdef(false). +%% OrberCSIv2 +code_CertificateChain_api(doc) -> ["Code CertificateChain"]; +code_CertificateChain_api(suite) -> []; +code_CertificateChain_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, + 'OrberCSIv2':encode('CertificateChain', ?CertificateChain)), + ?match({ok, [#'Certificate'{}]}, + 'OrberCSIv2':decode('CertificateChain', list_to_binary(Enc))), + ok. + +code_AttributeCertChain_api(doc) -> ["Code AttributeCertChain"]; +code_AttributeCertChain_api(suite) -> []; +code_AttributeCertChain_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, + 'OrberCSIv2':encode('AttributeCertChain', ?AttributeCertChain)), + ?match({ok, #'AttributeCertChain'{}}, + 'OrberCSIv2':decode('AttributeCertChain', list_to_binary(Enc))), + ok. + +code_VerifyingCertChain_api(doc) -> ["Code VerifyingCertChain"]; +code_VerifyingCertChain_api(suite) -> []; +code_VerifyingCertChain_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, + 'OrberCSIv2':encode('VerifyingCertChain', ?VerifyingCertChain)), + ?match({ok, [#'Certificate'{}]}, + 'OrberCSIv2':decode('VerifyingCertChain', list_to_binary(Enc))), + ok. + +%% PKIXAttributeCertificate +code_AttributeCertificate_api(doc) -> ["Code AttributeCertificate"]; +code_AttributeCertificate_api(suite) -> []; +code_AttributeCertificate_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, + 'OrberCSIv2':encode('AttributeCertificate', ?AttributeCertificate)), + ?match({ok, #'AttributeCertificate'{}}, + 'OrberCSIv2':decode('AttributeCertificate', list_to_binary(Enc))), + ok. + +code_AttributeCertificateInfo_api(doc) -> ["Code AttributeCertificateInfo"]; +code_AttributeCertificateInfo_api(suite) -> []; +code_AttributeCertificateInfo_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, + 'OrberCSIv2':encode('AttributeCertificateInfo', ?AttributeCertificateInfo)), + ?match({ok, #'AttributeCertificateInfo'{}}, + 'OrberCSIv2':decode('AttributeCertificateInfo', list_to_binary(Enc))), + ok. + +code_AttCertVersion_api(doc) -> ["Code AttCertVersion"]; +code_AttCertVersion_api(suite) -> []; +code_AttCertVersion_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, + 'OrberCSIv2':encode('AttCertVersion', ?AttCertVersion)), + ?match({ok, ?AttCertVersion}, + 'OrberCSIv2':decode('AttCertVersion', list_to_binary(Enc))), + ok. + +code_Holder_api(doc) -> ["Code Holder"]; +code_Holder_api(suite) -> []; +code_Holder_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, + 'OrberCSIv2':encode('Holder', ?Holder)), + ?match({ok, #'Holder'{}}, + 'OrberCSIv2':decode('Holder', list_to_binary(Enc))), + ok. + +code_AttCertIssuer_api(doc) -> ["Code AttCertIssuer"]; +code_AttCertIssuer_api(suite) -> []; +code_AttCertIssuer_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, + 'OrberCSIv2':encode('AttCertIssuer', ?AttCertIssuer)), + ?match({ok, {v2Form, _}}, + 'OrberCSIv2':decode('AttCertIssuer', list_to_binary(Enc))), + ok. + +code_AttCertValidityPeriod_api(doc) -> ["Code AttCertValidityPeriod"]; +code_AttCertValidityPeriod_api(suite) -> []; +code_AttCertValidityPeriod_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, 'OrberCSIv2':encode('AttCertValidityPeriod', ?AttCertValidityPeriod)), + ?match({ok, #'AttCertValidityPeriod'{}}, + 'OrberCSIv2':decode('AttCertValidityPeriod', list_to_binary(Enc))), + ok. + +code_V2Form_api(doc) -> ["Code V2Form"]; +code_V2Form_api(suite) -> []; +code_V2Form_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, + 'OrberCSIv2':encode('V2Form', ?V2Form)), + ?match({ok, #'V2Form'{}}, + 'OrberCSIv2':decode('V2Form', list_to_binary(Enc))), + ok. + +code_IssuerSerial_api(doc) -> ["Code IssuerSerial"]; +code_IssuerSerial_api(suite) -> []; +code_IssuerSerial_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, + 'OrberCSIv2':encode('IssuerSerial', ?IssuerSerial)), + ?match({ok, #'IssuerSerial'{}}, + 'OrberCSIv2':decode('IssuerSerial', list_to_binary(Enc))), + ok. + +code_ObjectDigestInfo_api(doc) -> ["Code ObjectDigestInfo"]; +code_ObjectDigestInfo_api(suite) -> []; +code_ObjectDigestInfo_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, + 'OrberCSIv2':encode('ObjectDigestInfo', ?ObjectDigestInfo)), + ?match({ok, #'ObjectDigestInfo'{}}, + 'OrberCSIv2':decode('ObjectDigestInfo', list_to_binary(Enc))), + ok. + +%% PKIX1Explicit88 +code_Certificate_api(doc) -> ["Code Certificate"]; +code_Certificate_api(suite) -> []; +code_Certificate_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, + 'OrberCSIv2':encode('Certificate', ?Certificate)), + ?match({ok, #'Certificate'{}}, + 'OrberCSIv2':decode('Certificate', list_to_binary(Enc))), + ok. + +code_TBSCertificate_api(doc) -> ["Code TBSCertificate"]; +code_TBSCertificate_api(suite) -> []; +code_TBSCertificate_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, + 'OrberCSIv2':encode('TBSCertificate', ?TBSCertificate)), + ?match({ok, #'TBSCertificate'{}}, + 'OrberCSIv2':decode('TBSCertificate', list_to_binary(Enc))), + ok. + +code_CertificateSerialNumber_api(doc) -> ["Code CertificateSerialNumber"]; +code_CertificateSerialNumber_api(suite) -> []; +code_CertificateSerialNumber_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, + 'OrberCSIv2':encode('CertificateSerialNumber', ?CertificateSerialNumber)), + ?match({ok, ?CertificateSerialNumber}, + 'OrberCSIv2':decode('CertificateSerialNumber', list_to_binary(Enc))), + ok. + +code_Version_api(doc) -> ["Code Version"]; +code_Version_api(suite) -> []; +code_Version_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, 'OrberCSIv2':encode('Version', ?Version)), + ?match({ok, ?Version}, 'OrberCSIv2':decode('Version', list_to_binary(Enc))), + ok. + +code_AlgorithmIdentifier_api(doc) -> ["Code AlgorithmIdentifier"]; +code_AlgorithmIdentifier_api(suite) -> []; +code_AlgorithmIdentifier_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, 'OrberCSIv2':encode('AlgorithmIdentifier', ?AlgorithmIdentifier)), + ?match({ok, #'AlgorithmIdentifier'{}}, + 'OrberCSIv2':decode('AlgorithmIdentifier', list_to_binary(Enc))), + ok. + +code_Name_api(doc) -> ["Code Name"]; +code_Name_api(suite) -> []; +code_Name_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, 'OrberCSIv2':encode('Name', ?Name)), + ?match({ok, {rdnSequence,_}}, + 'OrberCSIv2':decode('Name', list_to_binary(Enc))), + ok. + +code_RDNSequence_api(doc) -> ["Code RDNSequence"]; +code_RDNSequence_api(suite) -> []; +code_RDNSequence_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, 'OrberCSIv2':encode('RDNSequence', ?RDNSequence)), + ?match({ok, [[#'AttributeTypeAndValue'{}]]}, + 'OrberCSIv2':decode('RDNSequence', list_to_binary(Enc))), + ok. + +code_RelativeDistinguishedName_api(doc) -> ["Code RelativeDistinguishedName"]; +code_RelativeDistinguishedName_api(suite) -> []; +code_RelativeDistinguishedName_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, 'OrberCSIv2':encode('RelativeDistinguishedName', ?RelativeDistinguishedName)), + ?match({ok, [#'AttributeTypeAndValue'{}]}, + 'OrberCSIv2':decode('RelativeDistinguishedName', list_to_binary(Enc))), + ok. + +code_AttributeTypeAndValue_api(doc) -> ["Code AttributeTypeAndValue"]; +code_AttributeTypeAndValue_api(suite) -> []; +code_AttributeTypeAndValue_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, 'OrberCSIv2':encode('AttributeTypeAndValue', ?AttributeTypeAndValue)), + ?match({ok, #'AttributeTypeAndValue'{}}, + 'OrberCSIv2':decode('AttributeTypeAndValue', list_to_binary(Enc))), + ok. + +code_Attribute_api(doc) -> ["Code Attribute"]; +code_Attribute_api(suite) -> []; +code_Attribute_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, 'OrberCSIv2':encode('Attribute', ?Attribute)), + ?match({ok, #'Attribute'{}}, + 'OrberCSIv2':decode('Attribute', list_to_binary(Enc))), + ok. + +code_Validity_api(doc) -> ["Code Validity"]; +code_Validity_api(suite) -> []; +code_Validity_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, 'OrberCSIv2':encode('Validity', ?Validity)), + ?match({ok, #'Validity'{}}, + 'OrberCSIv2':decode('Validity', list_to_binary(Enc))), + ok. + +code_SubjectPublicKeyInfo_api(doc) -> ["Code SubjectPublicKeyInfo"]; +code_SubjectPublicKeyInfo_api(suite) -> []; +code_SubjectPublicKeyInfo_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, 'OrberCSIv2':encode('SubjectPublicKeyInfo', ?SubjectPublicKeyInfo)), + ?match({ok, #'SubjectPublicKeyInfo'{}}, + 'OrberCSIv2':decode('SubjectPublicKeyInfo', list_to_binary(Enc))), + ok. + +code_UniqueIdentifier_api(doc) -> ["Code UniqueIdentifier"]; +code_UniqueIdentifier_api(suite) -> []; +code_UniqueIdentifier_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, 'OrberCSIv2':encode('UniqueIdentifier', ?UniqueIdentifier)), + ?match({ok, _}, 'OrberCSIv2':decode('UniqueIdentifier', list_to_binary(Enc))), + ok. + +code_Extensions_api(doc) -> ["Code Extensions"]; +code_Extensions_api(suite) -> []; +code_Extensions_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, 'OrberCSIv2':encode('Extensions', ?Extensions)), + ?match({ok, [#'Extension'{}]}, + 'OrberCSIv2':decode('Extensions', list_to_binary(Enc))), + ok. + +code_Extension_api(doc) -> ["Code Extension"]; +code_Extension_api(suite) -> []; +code_Extension_api(_Config) -> + {ok, Enc} = + ?match({ok, _}, 'OrberCSIv2':encode('Extension', ?Extension)), + ?match({ok, #'Extension'{}}, + 'OrberCSIv2':decode('Extension', list_to_binary(Enc))), + ok. + +%% OpenSSL generated x509 Certificate +code_OpenSSL509_api(doc) -> ["Code OpenSSL generated x509 Certificate"]; +code_OpenSSL509_api(suite) -> []; +code_OpenSSL509_api(_Config) -> + {ok, Cert} = + ?match({ok, #'Certificate'{}}, + 'OrberCSIv2':decode('Certificate', ?X509DER)), + AttrCertChain = #'AttributeCertChain'{attributeCert = ?AttributeCertificate, + certificateChain = [Cert]}, + {ok, EAttrCertChain} = + ?match({ok, _}, 'OrberCSIv2':encode('AttributeCertChain', AttrCertChain)), + ?match({ok, #'AttributeCertChain'{}}, + 'OrberCSIv2':decode('AttributeCertChain', list_to_binary(EAttrCertChain))), + ok. + +-endif. + +%%----------------------------------------------------------------- +%% Test ssl:peercert +%%----------------------------------------------------------------- +ssl_server_peercert_api(doc) -> ["Test ssl:peercert (server side)"]; +ssl_server_peercert_api(suite) -> []; +ssl_server_peercert_api(_Config) -> + case os:type() of + vxworks -> + {skipped, "No SSL-support for VxWorks."}; + _ -> + Options = orber_test_lib:get_options(iiop_ssl, server, + 2, [{iiop_ssl_port, 0}]), + {ok, ServerNode, ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node(Options)), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_ssl_port, []), + SSLOptions = orber_test_lib:get_options(ssl, client), + {ok, Socket} = + ?match({ok, _}, fake_client_ORB(ssl, ServerHost, ServerPort, SSLOptions)), + {ok, _PeerCert} = ?match({ok, _}, orber_socket:peercert(ssl, Socket)), + ?match({ok, {rdnSequence, _}}, orber_socket:peercert(ssl, Socket, [pkix, subject])), + ?match({ok, {rdnSequence, _}}, orber_socket:peercert(ssl, Socket, [ssl, subject])), +% ?match({ok, #'Certificate'{}}, +% 'OrberCSIv2':decode('Certificate', PeerCert)), + destroy_fake_ORB(ssl, Socket), + ok + end. + +ssl_client_peercert_api(doc) -> ["Test ssl:peercert (client side)"]; +ssl_client_peercert_api(suite) -> []; +ssl_client_peercert_api(_Config) -> + case os:type() of + vxworks -> + {skipped, "No SSL-support for VxWorks."}; + _ -> + Options = orber_test_lib:get_options(iiop_ssl, client, + 2, [{iiop_ssl_port, 0}]), + {ok, ClientNode, _ClientHost} = + ?match({ok,_,_}, orber_test_lib:js_node(Options)), + crypto:start(), + ssl:start(), + ssl:seed("testing"), + SSLOptions = orber_test_lib:get_options(ssl, server), + {ok, LSock} = ?match({ok, _}, ssl:listen(0, SSLOptions)), + {ok, {_Address, LPort}} = ?match({ok, {_, _}}, ssl:sockname(LSock)), + IOR = ?match({'IOP_IOR',_,_}, + iop_ior:create_external({1, 2}, "IDL:FAKE:1.0", + "localhost", 6004, "FAKE", + [#'IOP_TaggedComponent' + {tag=?TAG_SSL_SEC_TRANS, + component_data=#'SSLIOP_SSL' + {target_supports = 2, + target_requires = 2, + port = LPort}}])), + spawn(orber_test_lib, remote_apply, + [ClientNode, corba_object, non_existent, [IOR]]), + {ok, Socket} = ?match({ok, _}, ssl:transport_accept(LSock)), + ?match(ok, ssl:ssl_accept(Socket)), + + {ok, _PeerCert} = ?match({ok, _}, orber_socket:peercert(ssl, Socket)), + ?match({ok, {rdnSequence, _}}, orber_socket:peercert(ssl, Socket, [pkix, subject])), + ?match({ok, {rdnSequence, _}}, orber_socket:peercert(ssl, Socket, [ssl, subject])), +% ?match({ok, #'Certificate'{}}, +% 'OrberCSIv2':decode('Certificate', PeerCert)), + ssl:close(Socket), + ssl:close(LSock), + ssl:stop(), + ok + end. + +%%----------------------------------------------------------------- +%% Local functions. +%%----------------------------------------------------------------- +-ifdef(false). +%% Not used yet. +context_test(Obj) -> + IDToken1 = #'CSI_IdentityToken'{label = ?CSI_IdentityTokenType_ITTAbsent, + value = true}, + IDToken2 = #'CSI_IdentityToken'{label = ?CSI_IdentityTokenType_ITTAnonymous, + value = false}, + IDToken3 = #'CSI_IdentityToken'{label = ?CSI_IdentityTokenType_ITTPrincipalName, + value = [0,255]}, + IDToken4 = #'CSI_IdentityToken'{label = ?CSI_IdentityTokenType_ITTX509CertChain, + value = [1,255]}, + IDToken5 = #'CSI_IdentityToken'{label = ?CSI_IdentityTokenType_ITTDistinguishedName, + value = [2,255]}, + IDToken6 = #'CSI_IdentityToken'{label = ?ULONGMAX, + value = [3,255]}, + + MTEstablishContext1 = #'CSI_SASContextBody' + {label = ?CSI_MsgType_MTEstablishContext, + value = #'CSI_EstablishContext'{client_context_id = ?ULONGLONGMAX, + authorization_token = + [#'CSI_AuthorizationElement' + {the_type = ?ULONGMAX, + the_element = [0,255]}], + identity_token = IDToken1, + client_authentication_token = [1, 255]}}, + MTEstablishContext2 = #'CSI_SASContextBody' + {label = ?CSI_MsgType_MTEstablishContext, + value = #'CSI_EstablishContext'{client_context_id = ?ULONGLONGMAX, + authorization_token = + [#'CSI_AuthorizationElement' + {the_type = ?ULONGMAX, + the_element = [0,255]}], + identity_token = IDToken2, + client_authentication_token = [1, 255]}}, + MTEstablishContext3 = #'CSI_SASContextBody' + {label = ?CSI_MsgType_MTEstablishContext, + value = #'CSI_EstablishContext'{client_context_id = ?ULONGLONGMAX, + authorization_token = + [#'CSI_AuthorizationElement' + {the_type = ?ULONGMAX, + the_element = [0,255]}], + identity_token = IDToken3, + client_authentication_token = [1, 255]}}, + MTEstablishContext4 = #'CSI_SASContextBody' + {label = ?CSI_MsgType_MTEstablishContext, + value = #'CSI_EstablishContext'{client_context_id = ?ULONGLONGMAX, + authorization_token = + [#'CSI_AuthorizationElement' + {the_type = ?ULONGMAX, + the_element = [0,255]}], + identity_token = IDToken4, + client_authentication_token = [1, 255]}}, + MTEstablishContext5 = #'CSI_SASContextBody' + {label = ?CSI_MsgType_MTEstablishContext, + value = #'CSI_EstablishContext'{client_context_id = ?ULONGLONGMAX, + authorization_token = + [#'CSI_AuthorizationElement' + {the_type = ?ULONGMAX, + the_element = [0,255]}], + identity_token = IDToken5, + client_authentication_token = [1, 255]}}, + MTEstablishContext6 = #'CSI_SASContextBody' + {label = ?CSI_MsgType_MTEstablishContext, + value = #'CSI_EstablishContext'{client_context_id = ?ULONGLONGMAX, + authorization_token = + [#'CSI_AuthorizationElement' + {the_type = ?ULONGMAX, + the_element = [0,255]}], + identity_token = IDToken6, + client_authentication_token = [1, 255]}}, + MTCompleteEstablishContext = #'CSI_SASContextBody' + {label = ?CSI_MsgType_MTCompleteEstablishContext, + value = #'CSI_CompleteEstablishContext'{client_context_id = ?ULONGLONGMAX, + context_stateful = false, + final_context_token = [1, 255]}}, + MTContextError = #'CSI_SASContextBody' + {label = ?CSI_MsgType_MTContextError, + value = #'CSI_ContextError'{client_context_id = ?ULONGLONGMAX, + major_status = 1, + minor_status = 2, + error_token = [2,255]}}, + MTMessageInContext = #'CSI_SASContextBody' + {label = ?CSI_MsgType_MTMessageInContext, + value = #'CSI_MessageInContext'{client_context_id = ?ULONGLONGMAX, + discard_context = true}}, + Ctx = [#'IOP_ServiceContext'{context_id=?IOP_SecurityAttributeService, + context_data = MTEstablishContext1}, + #'IOP_ServiceContext'{context_id=?IOP_SecurityAttributeService, + context_data = MTEstablishContext2}, + #'IOP_ServiceContext'{context_id=?IOP_SecurityAttributeService, + context_data = MTEstablishContext3}, + #'IOP_ServiceContext'{context_id=?IOP_SecurityAttributeService, + context_data = MTEstablishContext4}, + #'IOP_ServiceContext'{context_id=?IOP_SecurityAttributeService, + context_data = MTEstablishContext5}, + #'IOP_ServiceContext'{context_id=?IOP_SecurityAttributeService, + context_data = MTEstablishContext6}, + #'IOP_ServiceContext'{context_id=?IOP_SecurityAttributeService, + context_data = MTCompleteEstablishContext}, + #'IOP_ServiceContext'{context_id=?IOP_SecurityAttributeService, + context_data = MTContextError}, + #'IOP_ServiceContext'{context_id=?IOP_SecurityAttributeService, + context_data = MTMessageInContext}], + ?line ?match(ok, orber_test_server:testing_iiop_context(Obj, [{context, Ctx}])). + + +fake_server_ORB(Type, Port, Options) -> + start_ssl(Type), + {ok, ListenSocket, NewPort} = + orber_socket:listen(Type, Port, + [{active, false}|Options]), + Socket = orber_socket:accept(Type, ListenSocket), + orber_socket:post_accept(Type, Socket), + {ok, Socket, NewPort}. + +-endif. + +fake_server_ORB(Type, Port, Options, Action, Data) -> + start_ssl(Type), + {ok, ListenSocket, _NewPort} = + orber_socket:listen(Type, Port, [{active, false}|Options]), + Socket = orber_socket:accept(Type, ListenSocket), + orber_socket:post_accept(Type, Socket), + do_server_action(Type, Socket, Action, Data), + orber_socket:close(Type, Socket), + ok. + +start_ssl(ssl) -> + crypto:start(), + ssl:start(), + ssl:seed("testing"); +start_ssl(_) -> + ok. + + +destroy_fake_ORB(ssl, Socket) -> + orber_socket:close(ssl, Socket), + ssl:stop(); +destroy_fake_ORB(Type, Socket) -> + orber_socket:close(Type, Socket). + +fake_client_ORB(Type, Host, Port, Options) -> + start_ssl(Type), + Socket = orber_socket:connect(Type, Host, Port, [{active, false}|Options]), + {ok, Socket}. + +-ifdef(false). +%% Not used yet. + +fake_client_ORB(Type, Host, Port, Options, Action, Data) -> + start_ssl(Type), + Socket = orber_socket:connect(Type, Host, Port, [{active, false}|Options]), + Result = do_client_action(Type, Socket, Action, Data), + orber_socket:close(Type, Socket), + Result. + +do_client_action(Type, Socket, fragments, FragList) -> + ok = send_data(Type, Socket, FragList), + {ok, Bytes} = gen_tcp:recv(Socket, 0), + {#reply_header{request_id = ?REQUEST_ID, reply_status = no_exception}, ok, [Par]} = + cdr_decode:dec_message({tk_void,[tk_any],[tk_any]}, Bytes), + Par; +do_client_action(Type, Socket, fragments_max, FragList) -> + ok = send_data(Type, Socket, FragList), + {ok, Bytes} = gen_tcp:recv(Socket, 0), + {#reply_header{request_id = ?REQUEST_ID, reply_status = system_exception}, Exc, []} = + cdr_decode:dec_message({tk_void,[tk_any],[tk_any]}, Bytes), + Exc; +do_client_action(Type, Socket, message_error, Data) -> + ok = send_data(Type, Socket, Data), + {ok,Bytes} = gen_tcp:recv(Socket, 0), + 'message_error' = cdr_decode:dec_message({tk_void,[tk_any],[tk_any]}, Bytes), + ok; +do_client_action(_Type, _Socket, _Action, _Data) -> + ok. + +-endif. + +do_server_action(Type, Socket, fragments, FragList) -> + {ok, _B} = gen_tcp:recv(Socket, 0), + ok = send_data(Type, Socket, FragList); +do_server_action(_Type, _Socket, _Action, _Data) -> + ok. + + +send_data(_Type, _Socket, []) -> + ok; +send_data(Type, Socket, [H|T]) -> + orber_socket:write(Type, Socket, H), + send_data(Type, Socket, T). + diff --git a/lib/orber/test/data_types_SUITE.erl b/lib/orber/test/data_types_SUITE.erl new file mode 100644 index 0000000000..1feb0b3b58 --- /dev/null +++ b/lib/orber/test/data_types_SUITE.erl @@ -0,0 +1,173 @@ +%%----------------------------------------------------------------- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2002-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%----------------------------------------------------------------- +%% File : data_types_SUITE.erl +%% Purpose : +%%----------------------------------------------------------------- + +-module(data_types_SUITE). + +-include("test_server.hrl"). +-include_lib("orber/include/corba.hrl"). + +-define(default_timeout, ?t:minutes(3)). + +-define(match(ExpectedRes, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + io:format("------ CORRECT RESULT ------~n~p~n", + [AcTuAlReS]), + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS) + end + end()). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1]). + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- +-export([]). +-compile(export_all). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["This suite is for testing more or less complex data types"]; +all(suite) -> + [fixed_type, any_type]. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- +init_per_testcase(_Case, Config) -> + Path = code:which(?MODULE), + code:add_pathz(filename:join(filename:dirname(Path), "idl_output")), + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Path = code:which(?MODULE), + code:del_path(filename:join(filename:dirname(Path), "idl_output")), + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: name component handling tests +%% Description: +%%----------------------------------------------------------------- +fixed_type(doc) -> ["Test the Fixed Point Datatype."]; +fixed_type(suite) -> []; +fixed_type(_) -> + Val1 = ?match({fixed,3,2,314}, orber_test_server:val1()), + _Val2 = ?match({fixed,3,2,314}, orber_test_server:val2()), + _Val3 = ?match({fixed,3,2,314}, orber_test_server:val3()), + Val4 = ?match({fixed,3,2,314}, orber_test_server:val4()), + Val5 = ?match({fixed,2,2,14}, orber_test_server:val5()), + _Val6 = ?match({fixed,1,0,3}, orber_test_server:val6()), + Val7 = ?match({fixed,2,2,-14}, orber_test_server:val7()), + _Val8 = ?match({fixed,1,0,-3}, orber_test_server:val8()), + Val9 = ?match({fixed,3,2,328}, orber_test_server:val9()), + Val10 = ?match({fixed,4,4,4396}, orber_test_server:val10()), + Val11 = ?match({fixed,31,29,2242857142857142857142857142857}, orber_test_server:val11()), + Val12 = ?match({fixed,9,6,123140001}, orber_test_server:val12()), + Val13 = ?match({fixed,9,1,123140001}, orber_test_server:val13()), + Val14 = ?match({fixed,14,6,-12313876959999}, orber_test_server:val14()), + Val15 = ?match({fixed,14,6,12314123240001}, orber_test_server:val15()), + Val16 = ?match({fixed,17,7,15163459846280001}, orber_test_server:val16()), + _Val17 = ?match({fixed,3,2,402}, orber_test_server:val17()), + _Val18 = ?match({fixed,5,4,40401}, orber_test_server:val18()), + _Val19 = ?match({fixed,3,0,200}, orber_test_server:val19()), + Val20 = ?match({fixed,31,0,1999999999999999999999999999999}, orber_test_server:val20()), + Val21 = ?match({fixed,1,0,0}, orber_test_server:val21()), + Val22 = ?match({fixed,31,0,9999999999999999999999999999998}, orber_test_server:val22()), + Val23 = ?match({fixed,1,0,1}, orber_test_server:val23()), + _Val24 = ?match({fixed,5,0,19998}, orber_test_server:val24()), + _Val25 = ?match({fixed,2,0,40}, orber_test_server:val25()), + Val26 = ?match({fixed,31,0,9999999999999999999999999999999}, orber_test_server:val26()), + + ?match(Val1, fixed:create(3,2,314)), + Val27 = ?match({fixed,6,2,314}, fixed:create(6,2,314)), + + ?match({tk_fixed,3,2}, fixed:get_typecode(Val1)), + ?match({tk_fixed,6,2}, fixed:get_typecode(Val27)), + ?match({'EXCEPTION',{'BAD_PARAM',_,_,_}}, fixed:create(3,2,3140)), + ?match({'EXCEPTION',{'BAD_PARAM',_,_,_}}, fixed:create(5,6,314)), + ?match({'EXCEPTION',{'BAD_PARAM',_,_,_}}, fixed:create(32,2,314)), + ?match(Val10, fixed:multiply(Val4, Val5)), + ?match(Val16, fixed:multiply(Val12, Val13)), + ?match(Val22, fixed:multiply(Val26, Val26)), + + ?match(Val9, fixed:add(Val4, Val5)), + ?match(Val15, fixed:add(Val12, Val13)), + ?match(Val20, fixed:add(Val26, Val26)), + + ?match(Val11, fixed:divide(Val4, Val5)), + ?match(Val23, fixed:divide(Val26, Val26)), + + ?match(Val14, fixed:subtract(Val12, Val13)), + ?match(Val21, fixed:subtract(Val26, Val26)), + + ?match(Val7, fixed:unary_minus(Val5)), + ?match(Val5, fixed:unary_minus(Val7)), + + + + ok. + +%%----------------------------------------------------------------- +%% Test Case: any type +%% Description: +%%----------------------------------------------------------------- +any_type(doc) -> ["Test the Any Datatype."]; +any_type(suite) -> []; +any_type(_) -> + ?match(#any{typecode=undefined, value=undefined}, + any:create()), + ?match(#any{typecode=tk_short, value=undefined}, + any:set_typecode(any:create(), tk_short)), + ?match({'EXCEPTION', #'BAD_TYPECODE'{}}, + any:set_typecode(any:create(), "wrong")), + ?match({'EXCEPTION', #'BAD_TYPECODE'{}}, + any:create("wrong", 1)), + ?match(#any{typecode=tk_short, value = 1}, + any:create(tk_short, 1)), + ?match(tk_short, + any:get_typecode(any:create(tk_short, 1))), + ?match(1, + any:get_value(any:create(tk_short, 1))), + ?match(#any{typecode=tk_short, value=2}, + any:set_value(any:create(tk_short, 1), 2)), + + ok. diff --git a/lib/orber/test/generated_SUITE.erl b/lib/orber/test/generated_SUITE.erl new file mode 100644 index 0000000000..1cd1674fc4 --- /dev/null +++ b/lib/orber/test/generated_SUITE.erl @@ -0,0 +1,385 @@ +%%----------------------------------------------------------------- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2004-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%----------------------------------------------------------------- +%% File : generated_SUITE.erl +%% Purpose : +%%----------------------------------------------------------------- + +-module(generated_SUITE). + +-include("test_server.hrl"). +-include_lib("orber/include/corba.hrl"). + +-define(default_timeout, ?t:minutes(3)). + +-define(match(ExpectedRes, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS) + end + end()). + +-define(nomatch(Not, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + Not -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS); + _ -> + AcTuAlReS + end + end()). + + +-define(checktc(_Op), + fun(TC) -> + case orber_tc:check_tc(TC) of + false -> + io:format("###### ERROR ERROR ######~n~p - ~p~n", [Op, TC]), + ?line exit(TC); + true -> + true + end + end). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1]). + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- +-export([]). +-compile(export_all). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["This suite is for testing IC generated files"]; +all(suite) -> + ['OrberApp_IFR', + erlang_binary, erlang_pid, erlang_port, erlang_ref, + 'CosNaming_Binding', 'CosNaming_BindingList', 'CosNaming_Name', + 'CosNaming_NameComponent', 'CosNaming_NamingContextExt_InvalidAddress', + 'CosNaming_NamingContext_AlreadyBound', 'CosNaming_NamingContext_CannotProceed', + 'CosNaming_NamingContext_InvalidName', 'CosNaming_NamingContext_NotEmpty', + 'CosNaming_NamingContext_NotFound', 'CosNaming_BindingIterator', + 'CosNaming_NamingContext', 'CosNaming_NamingContextExt']. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- +init_per_testcase(_Case, Config) -> + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +%%----------------------------------------------------------------- +%% Test Case:'OrberApp_IFR' +%% Description: +%%----------------------------------------------------------------- +'OrberApp_IFR'(doc) -> [""]; +'OrberApp_IFR'(suite) -> []; +'OrberApp_IFR'(_) -> + ?nomatch(undefined, 'OrberApp_IFR':oe_tc(get_absolute_name)), + ?nomatch(undefined, 'OrberApp_IFR':oe_tc(get_user_exception_type)), + ?match(undefined, 'OrberApp_IFR':oe_tc(undefined)), + ?match([_|_], 'OrberApp_IFR':oe_get_interface()), + ?match("IDL:OrberApp/IFR:1.0", 'OrberApp_IFR':typeID()), + check_tc('OrberApp_IFR':oe_get_interface()), + ?match(true, 'OrberApp_IFR':oe_is_a('OrberApp_IFR':typeID())), + ?match(false, 'OrberApp_IFR':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: erlang_binary +%% Description: +%%----------------------------------------------------------------- +erlang_binary(doc) -> [""]; +erlang_binary(suite) -> []; +erlang_binary(_) -> + ?match(true, orber_tc:check_tc(erlang_binary:tc())), + ?match("IDL:erlang/binary:1.0", erlang_binary:id()), + ?match("erlang_binary", erlang_binary:name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: erlang_pid +%% Description: +%%----------------------------------------------------------------- +erlang_pid(doc) -> [""]; +erlang_pid(suite) -> []; +erlang_pid(_) -> + ?match(true, orber_tc:check_tc(erlang_pid:tc())), + ?match("IDL:erlang/pid:1.0", erlang_pid:id()), + ?match("erlang_pid", erlang_pid:name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: erlang_port +%% Description: +%%----------------------------------------------------------------- +erlang_port(doc) -> [""]; +erlang_port(suite) -> []; +erlang_port(_) -> + ?match(true, orber_tc:check_tc(erlang_port:tc())), + ?match("IDL:erlang/port:1.0", erlang_port:id()), + ?match("erlang_port", erlang_port:name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: erlang_ref +%% Description: +%%----------------------------------------------------------------- +erlang_ref(doc) -> [""]; +erlang_ref(suite) -> []; +erlang_ref(_) -> + ?match(true, orber_tc:check_tc(erlang_ref:tc())), + ?match("IDL:erlang/ref:1.0", erlang_ref:id()), + ?match("erlang_ref", erlang_ref:name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNaming_Binding' +%% Description: +%%----------------------------------------------------------------- +'CosNaming_Binding'(doc) -> [""]; +'CosNaming_Binding'(suite) -> []; +'CosNaming_Binding'(_) -> + ?match(true, orber_tc:check_tc('CosNaming_Binding':tc())), + ?match("IDL:omg.org/CosNaming/Binding:1.0", 'CosNaming_Binding':id()), + ?match("CosNaming_Binding", 'CosNaming_Binding':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNaming_BindingList' +%% Description: +%%----------------------------------------------------------------- +'CosNaming_BindingList'(doc) -> [""]; +'CosNaming_BindingList'(suite) -> []; +'CosNaming_BindingList'(_) -> + ?match(true, orber_tc:check_tc('CosNaming_BindingList':tc())), + ?match("IDL:omg.org/CosNaming/BindingList:1.0", 'CosNaming_BindingList':id()), + ?match("CosNaming_BindingList", 'CosNaming_BindingList':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNaming_Name' +%% Description: +%%----------------------------------------------------------------- +'CosNaming_Name'(doc) -> [""]; +'CosNaming_Name'(suite) -> []; +'CosNaming_Name'(_) -> + ?match(true, orber_tc:check_tc('CosNaming_Name':tc())), + ?match("IDL:omg.org/CosNaming/Name:1.0", 'CosNaming_Name':id()), + ?match("CosNaming_Name", 'CosNaming_Name':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNaming_NameComponent' +%% Description: +%%----------------------------------------------------------------- +'CosNaming_NameComponent'(doc) -> [""]; +'CosNaming_NameComponent'(suite) -> []; +'CosNaming_NameComponent'(_) -> + ?match(true, orber_tc:check_tc('CosNaming_NameComponent':tc())), + ?match("IDL:omg.org/CosNaming/NameComponent:1.0", 'CosNaming_NameComponent':id()), + ?match("CosNaming_NameComponent", 'CosNaming_NameComponent':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNaming_NamingContextExt_InvalidAddress' +%% Description: +%%----------------------------------------------------------------- +'CosNaming_NamingContextExt_InvalidAddress'(doc) -> [""]; +'CosNaming_NamingContextExt_InvalidAddress'(suite) -> []; +'CosNaming_NamingContextExt_InvalidAddress'(_) -> + ?match(true, orber_tc:check_tc('CosNaming_NamingContextExt_InvalidAddress':tc())), + ?match("IDL:omg.org/CosNaming/NamingContextExt/InvalidAddress:1.0", 'CosNaming_NamingContextExt_InvalidAddress':id()), + ?match("CosNaming_NamingContextExt_InvalidAddress", 'CosNaming_NamingContextExt_InvalidAddress':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNaming_NamingContext_AlreadyBound' +%% Description: +%%----------------------------------------------------------------- +'CosNaming_NamingContext_AlreadyBound'(doc) -> [""]; +'CosNaming_NamingContext_AlreadyBound'(suite) -> []; +'CosNaming_NamingContext_AlreadyBound'(_) -> + ?match(true, orber_tc:check_tc('CosNaming_NamingContext_AlreadyBound':tc())), + ?match("IDL:omg.org/CosNaming/NamingContext/AlreadyBound:1.0", 'CosNaming_NamingContext_AlreadyBound':id()), + ?match("CosNaming_NamingContext_AlreadyBound", 'CosNaming_NamingContext_AlreadyBound':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNaming_NamingContext_CannotProceed' +%% Description: +%%----------------------------------------------------------------- +'CosNaming_NamingContext_CannotProceed'(doc) -> [""]; +'CosNaming_NamingContext_CannotProceed'(suite) -> []; +'CosNaming_NamingContext_CannotProceed'(_) -> + ?match(true, orber_tc:check_tc('CosNaming_NamingContext_CannotProceed':tc())), + ?match("IDL:omg.org/CosNaming/NamingContext/CannotProceed:1.0", 'CosNaming_NamingContext_CannotProceed':id()), + ?match("CosNaming_NamingContext_CannotProceed", 'CosNaming_NamingContext_CannotProceed':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNaming_NamingContext_InvalidName' +%% Description: +%%----------------------------------------------------------------- +'CosNaming_NamingContext_InvalidName'(doc) -> [""]; +'CosNaming_NamingContext_InvalidName'(suite) -> []; +'CosNaming_NamingContext_InvalidName'(_) -> + ?match(true, orber_tc:check_tc('CosNaming_NamingContext_InvalidName':tc())), + ?match("IDL:omg.org/CosNaming/NamingContext/InvalidName:1.0", 'CosNaming_NamingContext_InvalidName':id()), + ?match("CosNaming_NamingContext_InvalidName", 'CosNaming_NamingContext_InvalidName':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNaming_NamingContext_NotEmpty' +%% Description: +%%----------------------------------------------------------------- +'CosNaming_NamingContext_NotEmpty'(doc) -> [""]; +'CosNaming_NamingContext_NotEmpty'(suite) -> []; +'CosNaming_NamingContext_NotEmpty'(_) -> + ?match(true, orber_tc:check_tc('CosNaming_NamingContext_NotEmpty':tc())), + ?match("IDL:omg.org/CosNaming/NamingContext/NotEmpty:1.0", 'CosNaming_NamingContext_NotEmpty':id()), + ?match("CosNaming_NamingContext_NotEmpty", 'CosNaming_NamingContext_NotEmpty':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNaming_NamingContext_NotFound' +%% Description: +%%----------------------------------------------------------------- +'CosNaming_NamingContext_NotFound'(doc) -> [""]; +'CosNaming_NamingContext_NotFound'(suite) -> []; +'CosNaming_NamingContext_NotFound'(_) -> + ?match(true, orber_tc:check_tc('CosNaming_NamingContext_NotFound':tc())), + ?match("IDL:omg.org/CosNaming/NamingContext/NotFound:1.0", 'CosNaming_NamingContext_NotFound':id()), + ?match("CosNaming_NamingContext_NotFound", 'CosNaming_NamingContext_NotFound':name()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: 'CosNaming_BindingIterator' +%% Description: +%%----------------------------------------------------------------- +'CosNaming_BindingIterator'(doc) -> [""]; +'CosNaming_BindingIterator'(suite) -> []; +'CosNaming_BindingIterator'(_) -> + ?nomatch(undefined, 'CosNaming_BindingIterator':oe_tc(next_one)), + ?nomatch(undefined, 'CosNaming_BindingIterator':oe_tc(next_n)), + ?nomatch(undefined, 'CosNaming_BindingIterator':oe_tc(destroy)), + ?match(undefined, 'CosNaming_BindingIterator':oe_tc(undefined)), + ?match([_|_], 'CosNaming_BindingIterator':oe_get_interface()), + ?match("IDL:omg.org/CosNaming/BindingIterator:1.0", + 'CosNaming_BindingIterator':typeID()), + check_tc('CosNaming_BindingIterator':oe_get_interface()), + ?match(true, 'CosNaming_BindingIterator':oe_is_a('CosNaming_BindingIterator':typeID())), + ?match(false, 'CosNaming_BindingIterator':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNaming_NamingContext' +%% Description: +%%----------------------------------------------------------------- +'CosNaming_NamingContext'(doc) -> [""]; +'CosNaming_NamingContext'(suite) -> []; +'CosNaming_NamingContext'(_) -> + ?nomatch(undefined, 'CosNaming_NamingContext':oe_tc(bind)), + ?nomatch(undefined, 'CosNaming_NamingContext':oe_tc(rebind)), + ?nomatch(undefined, 'CosNaming_NamingContext':oe_tc(bind_context)), + ?nomatch(undefined, 'CosNaming_NamingContext':oe_tc(rebind_context)), + ?nomatch(undefined, 'CosNaming_NamingContext':oe_tc(resolve)), + ?nomatch(undefined, 'CosNaming_NamingContext':oe_tc(unbind)), + ?nomatch(undefined, 'CosNaming_NamingContext':oe_tc(new_context)), + ?nomatch(undefined, 'CosNaming_NamingContext':oe_tc(bind_new_context)), + ?nomatch(undefined, 'CosNaming_NamingContext':oe_tc(destroy)), + ?nomatch(undefined, 'CosNaming_NamingContext':oe_tc(list)), + ?match(undefined, 'CosNaming_NamingContext':oe_tc(undefined)), + ?match([_|_], 'CosNaming_NamingContext':oe_get_interface()), + ?match("IDL:omg.org/CosNaming/NamingContext:1.0", + 'CosNaming_NamingContext':typeID()), + check_tc('CosNaming_NamingContext':oe_get_interface()), + ?match(true, 'CosNaming_NamingContext':oe_is_a('CosNaming_NamingContext':typeID())), + ?match(false, 'CosNaming_NamingContext':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: 'CosNaming_NamingContexExt' +%% Description: +%%----------------------------------------------------------------- +'CosNaming_NamingContextExt'(doc) -> [""]; +'CosNaming_NamingContextExt'(suite) -> []; +'CosNaming_NamingContextExt'(_) -> + ?nomatch(undefined, 'CosNaming_NamingContextExt':oe_tc(to_string)), + ?nomatch(undefined, 'CosNaming_NamingContextExt':oe_tc(to_name)), + ?nomatch(undefined, 'CosNaming_NamingContextExt':oe_tc(to_url)), + ?nomatch(undefined, 'CosNaming_NamingContextExt':oe_tc(resolve_str)), + ?nomatch(undefined, 'CosNaming_NamingContextExt':oe_tc(bind)), + ?nomatch(undefined, 'CosNaming_NamingContextExt':oe_tc(rebind)), + ?nomatch(undefined, 'CosNaming_NamingContextExt':oe_tc(bind_context)), + ?nomatch(undefined, 'CosNaming_NamingContextExt':oe_tc(rebind_context)), + ?nomatch(undefined, 'CosNaming_NamingContextExt':oe_tc(new_context)), + ?nomatch(undefined, 'CosNaming_NamingContextExt':oe_tc(bind_new_context)), + ?nomatch(undefined, 'CosNaming_NamingContextExt':oe_tc(destroy)), + ?nomatch(undefined, 'CosNaming_NamingContextExt':oe_tc(list)), + ?match(undefined, 'CosNaming_NamingContextExt':oe_tc(undefined)), + ?match([_|_], 'CosNaming_NamingContextExt':oe_get_interface()), + ?match("IDL:omg.org/CosNaming/NamingContextExt:1.0", + 'CosNaming_NamingContextExt':typeID()), + check_tc('CosNaming_NamingContextExt':oe_get_interface()), + ?match(true, 'CosNaming_NamingContextExt':oe_is_a('CosNaming_NamingContextExt':typeID())), + ?match(true, 'CosNaming_NamingContextExt':oe_is_a('CosNaming_NamingContext':typeID())), + ?match(false, 'CosNaming_NamingContextExt':oe_is_a("wrong")), + ok. + + +%%----------------------------------------------------------------- +%% MISC functions +%%----------------------------------------------------------------- +check_tc([]) -> + ok; +check_tc([{Op, {RetType, InParameters, OutParameters}}|T]) -> + io:format("checked - ~s~n", [Op]), + lists:all(?checktc(Op), [RetType|InParameters]), + lists:all(?checktc(Op), OutParameters), + check_tc(T). + + diff --git a/lib/orber/test/idl_output/.gitignore b/lib/orber/test/idl_output/.gitignore new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/lib/orber/test/idl_output/.gitignore diff --git a/lib/orber/test/iiop_module_do_test_impl.erl b/lib/orber/test/iiop_module_do_test_impl.erl new file mode 100644 index 0000000000..bf171a3097 --- /dev/null +++ b/lib/orber/test/iiop_module_do_test_impl.erl @@ -0,0 +1,112 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1998-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% + +-module(iiop_module_do_test_impl). + + +-export([run_all/3, run_userexception/2, run_systemexception/2]). +-export([createTestContext/0]). + +-export([start/0, stop/0]). +-export([init/1, terminate/2]). + + +init(_) -> + {ok, []}. + +terminate(Reason, _State) -> + io:format("~p terminating with reason ~p~n", [?MODULE, Reason]), + ok. + +createTestContext() -> + NS = corba:resolve_initial_references("NameService"), + NC = lname_component:set_id(lname_component:create(), "iiop_test"), + N = lname:insert_component(lname:create(), 1, NC), + 'CosNaming_NamingContext':bind_new_context(NS, N). + +start() -> + SFok = corba:create('iiop_module_do_test', "IDL:iiop_module/do_test:1.0"), + NS = corba:resolve_initial_references("NameService"), + NC1 = lname_component:set_id(lname_component:create(), "iiop_test"), + NC2 = lname_component:set_id(lname_component:create(), "erl_dotest"), + N = lname:insert_component(lname:create(), 1, NC1), + N1 = lname:insert_component(N, 2, NC2), + 'CosNaming_NamingContext':bind(NS, N1, SFok), + SFok. + +stop() -> + NS = corba:resolve_initial_references("NameService"), + NC1 = lname_component:set_id(lname_component:create(), "iiop_test"), + NC2 = lname_component:set_id(lname_component:create(), "erl_dotest"), + N = lname:insert_component(lname:create(), 1, NC1), + N1 = lname:insert_component(N, 2, NC2), + 'CosNaming_NamingContext':unbind(NS, N1). + +run_all(S, X, TL) -> + ok = iiop_module_test:send_void(X), + {tk_short, P1} = lists:nth(1, TL), + {R1, IO1, O1} = iiop_module_test:send_short(X, P1, P1), + RL1= [{tk_short, R1}], + IOL1= [{tk_short, IO1}], + OL1= [{tk_short, O1}], + {tk_ushort, P2} = lists:nth(2, TL), + {R2, IO2, O2} = iiop_module_test:send_ushort(X, P2, P2), + RL2= [{tk_ushort, R2}|RL1], + IOL2= [{tk_ushort, IO2}|IOL1], + OL2= [{tk_ushort, O2}|OL1], + {tk_long, P3} = lists:nth(3, TL), + {R3, IO3, O3} = iiop_module_test:send_long(X, P3, P3), + RL3= [{tk_long, R3}|RL2], + IOL3= [{tk_long, IO3}|IOL2], + OL3= [{tk_long, O3}|OL2], + {tk_ulong, P4} = lists:nth(4, TL), + {R4, IO4, O4} = iiop_module_test:send_ulong(X, P4, P4), + RL4= [{tk_ulong, R4}|RL3], + IOL4= [{tk_ulong, IO4}|IOL3], + OL4= [{tk_ulong, O4}|OL3], + {tk_float, P5} = lists:nth(5, TL), + {R5, IO5, O5} = iiop_module_test:send_float(X, P5, P5), + RL5= [{tk_float, R5}|RL4], + IOL5= [{tk_float, IO5}|IOL4], + OL5= [{tk_float, O5}|OL4], + {tk_double, P6} = lists:nth(6, TL), + {R6, IO6, O6} = iiop_module_test:send_double(X, P6, P6), + RL6= [{tk_double, R6}|RL5], + IOL6= [{tk_double, IO6}|IOL5], + OL6= [{tk_double, O6}|OL5], + {tk_boolean, P7} = lists:nth(7, TL), + {R7, IO7, O7} = iiop_module_test:send_boolean(X, P7, P7), + RL7= [{tk_boolean, R7}|RL6], + IOL7= [{tk_boolean, IO7}|IOL6], + OL7= [{tk_boolean, O7}|OL6], + {tk_char, P8} = lists:nth(8, TL), + {R8, IO8, O8} = iiop_module_test:send_char(X, P8, P8), + RL= [{tk_char, R8} |RL7], + IOL= [{tk_char, IO8} |IOL7], + OL= [{tk_char, O8} |OL7], + {{lists:reverse(RL),lists:reverse(IOL),lists:reverse(OL)}, S}. + +run_systemexception(S, X) -> + iiop_module_test:ret_systemexception(X), + {ok, S}. + +run_userexception(S, X) -> + iiop_module_test:ret_userexception(X), + {ok, S}. diff --git a/lib/orber/test/iiop_module_test_impl.erl b/lib/orber/test/iiop_module_test_impl.erl new file mode 100644 index 0000000000..fe334e1b26 --- /dev/null +++ b/lib/orber/test/iiop_module_test_impl.erl @@ -0,0 +1,128 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1998-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% + +-module(iiop_module_test_impl). +-include_lib("orber/include/corba.hrl"). +-include("idl_output/iiop_module.hrl"). + + +-export([send_void/1, send_short/3, send_ushort/3]). +-export([send_long/3, send_ulong/3, send_float/3]). +-export([send_double/3, send_boolean/3, send_char/3]). +-export([send_octet/3, send_any/3, send_object/3]). +-export([send_struct1/3, send_union1/3, send_enum1/3]). +-export([send_string/3, send_sequence1/3, send_array1/3]). +-export([ret_systemexception/1, ret_userexception/1]). + + + +-export([start/0, stop/0]). +-export([init/1, terminate/2]). + + +init(_) -> + {ok, []}. + +terminate(Reason, _State) -> + io:format("~p terminating with reason ~p~n", [?MODULE, Reason]), + ok. + + +start() -> + SFok = corba:create('iiop_module_test', "IDL:iiop_module/test:1.0"), + NS = corba:resolve_initial_references("NameService"), + NC1 = lname_component:set_id(lname_component:create(), "iiop_test"), + NC2 = lname_component:set_id(lname_component:create(), "erl_test"), + N = lname:insert_component(lname:create(), 1, NC1), + N1 = lname:insert_component(N, 2, NC2), + 'CosNaming_NamingContext':bind(NS, N1, SFok), + SFok. + +stop() -> + NS = corba:resolve_initial_references("NameService"), + NC1 = lname_component:set_id(lname_component:create(), "iiop_test"), + NC2 = lname_component:set_id(lname_component:create(), "erl_test"), + N = lname:insert_component(lname:create(), 1, NC1), + N1 = lname:insert_component(N, 2, NC2), + 'CosNaming_NamingContext':unbind(NS, N1). + + + +send_void(S) -> + {ok, S}. + +send_short(S, P1, P2) -> + {{P1, P1, P2}, S}. + +send_ushort(S, P1, P2) -> + {{P1, P1, P2}, S}. + +send_long(S, P1, P2) -> + {{P1, P1, P2}, S}. + +send_ulong(S, P1, P2) -> + {{P1, P1, P2}, S}. + +send_float(S, P1, P2) -> + {{P1, P1, P2}, S}. + +send_double(S, P1, P2) -> + {{P1, P1, P2}, S}. + +send_boolean(S, P1, P2) -> + {{P1, P1, P2}, S}. + +send_char(S, P1, P2) -> + {{P1, P1, P2}, S}. + +send_octet(S, P1, P2) -> + {{P1, P1, P2}, S}. + +send_any(S, P1, P2) -> + {{P1, P1, P2}, S}. + +send_object(S, P1, P2) -> + {{P1, P1, P2}, S}. + +send_struct1(S, P1, P2) -> + {{P1, P1, P2}, S}. + +send_union1(S, P1, P2) -> + {{P1, P1, P2}, S}. + +send_enum1(S, P1, P2) -> + {{P1, P1, P2}, S}. + +send_string(S, P1, P2) -> + {{P1, P1, P2}, S}. + +send_sequence1(S, P1, P2) -> + {{P1, P1, P2}, S}. + +send_array1(S, P1, P2) -> + {{P1, P1, P2}, S}. + +ret_systemexception(S) -> + throw(#'BAD_PARAM'{}), + {ok, S}. + +ret_userexception(S) -> + throw(#iiop_module_Except1{why="not readable",rest_of_name=["foo", "bar"]}), + {ok, S}. diff --git a/lib/orber/test/iiop_test.idl b/lib/orber/test/iiop_test.idl new file mode 100644 index 0000000000..339678106e --- /dev/null +++ b/lib/orber/test/iiop_test.idl @@ -0,0 +1,111 @@ +// +// %CopyrightBegin% +// +// Copyright Ericsson AB 1997-2010. All Rights Reserved. +// +// The contents of this file are subject to the Erlang Public License, +// Version 1.1, (the "License"); you may not use this file except in +// compliance with the License. You should have received a copy of the +// Erlang Public License along with this software. If not, it can be +// retrieved online at http://www.erlang.org/. +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +// the License for the specific language governing rights and limitations +// under the License. +// +// %CopyrightEnd% +// +#include "cos_naming.idl" + +module iiop_module +{ + + typedef long Array1[10]; + + enum Enum1 {horse, pig, cow}; + + typedef sequence<long> Sequence1; + + typedef Sequence1 Sequence2; + + struct Struct1 { + string s; + unsigned short us; + unsigned long ul; + }; + + union Union1 switch (short) { + case 0: short First; + case 1: string Second; + case 2: char Third; + }; + + exception Except1 { + string why; + sequence <string> rest_of_name; + }; + + typedef sequence<any> test_values; + struct test_retval { + test_values R; + test_values InOut; + test_values Out; + }; + + interface test; + + interface do_test { + void run_systemexception(in test x) + raises(CosNaming::NamingContext::NotFound, + CosNaming::NamingContext::CannotProceed, + CosNaming::NamingContext::InvalidName); + void run_userexception(in test x) + raises(iiop_module::Except1, + CosNaming::NamingContext::NotFound, + CosNaming::NamingContext::CannotProceed, + CosNaming::NamingContext::InvalidName); + test_retval run_all(in test x, in test_values tlist) + raises(iiop_module::Except1, + CosNaming::NamingContext::NotFound, + CosNaming::NamingContext::CannotProceed, + CosNaming::NamingContext::InvalidName); + }; + + interface test { + // Function to run all tests from java to erlang + // and return the answers + // Primitive types + void send_void(); + short send_short(in short p1, inout short p2, out short p3); + unsigned short send_ushort(in unsigned short p1, inout unsigned short p2, + out unsigned short p3); + long send_long(in long p1, inout long p2, out long p3); + unsigned long send_ulong(in unsigned long p1, inout unsigned long p2, + out unsigned long p3); + float send_float(in float p1, inout float p2, out float p3); + double send_double(in double p1, inout double p2, out double p3); + boolean send_boolean(in boolean p1, inout boolean p2, out boolean p3); + char send_char(in char p1, inout char p2, out char p3); + octet send_octet(in octet p1, inout octet p2, out octet p3); + any send_any(in any p1, inout any p2, out any p3); + Object send_object(in Object p1, inout Object p2, out Object p3); + // TypeCode send_typecode(in TypeCode p1, inout TypeCode p2, out TypeCode p3); + // Principal send_principal(in Principal p); //tested in every request + + // Complex types + Struct1 send_struct1(in Struct1 p1, inout Struct1 p2, out Struct1 p3); + Union1 send_union1(in Union1 p1, inout Union1 p2, out Union1 p3); + Enum1 send_enum1(in Enum1 p1, inout Enum1 p2, out Enum1 p3); + string send_string(in string p1, inout string p2, out string p3); + Sequence1 send_sequence1(in Sequence1 p1, inout Sequence1 p2, + out Sequence1 p3); + Array1 send_array1(in Array1 p1, inout Array1 p2, out Array1 p3); + + void ret_systemexception(); + void ret_userexception() raises(iiop_module::Except1); + + + }; + +}; diff --git a/lib/orber/test/iiop_test_impl.erl b/lib/orber/test/iiop_test_impl.erl new file mode 100644 index 0000000000..fd92109c09 --- /dev/null +++ b/lib/orber/test/iiop_test_impl.erl @@ -0,0 +1,34 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1998-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +-module(iiop_test_impl). +-include_lib("orber/include/corba.hrl"). +-include_lib("orber/test/iiop_test.hrl"). +-export([]). + + +init(Env) -> + {ok, []}. + +terminate(From, Reason) -> + ok. + +send_void(State) -> + {ok, State}. + diff --git a/lib/orber/test/interceptors_SUITE.erl b/lib/orber/test/interceptors_SUITE.erl new file mode 100644 index 0000000000..27e23a9433 --- /dev/null +++ b/lib/orber/test/interceptors_SUITE.erl @@ -0,0 +1,338 @@ +%%----------------------------------------------------------------- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2004-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%----------------------------------------------------------------- +%% File : interceptors_SUITE.erl +%% Purpose : +%%----------------------------------------------------------------- + +-module(interceptors_SUITE). + +-include("test_server.hrl"). +-include_lib("orber/include/corba.hrl"). +-include_lib("orber/src/orber_iiop.hrl"). + +-define(default_timeout, ?t:minutes(3)). + +-define(match(ExpectedRes, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + io:format("------ CORRECT RESULT ------~n~p~n", + [AcTuAlReS]), + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS) + end + end()). + +-define(nomatch(Not, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + Not -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS); + _ -> + io:format("------ CORRECT RESULT ------~n~p~n", + [AcTuAlReS]), + AcTuAlReS + end + end()). + + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1]). + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- +-export([in_reply/6, out_request/6]). +-compile(export_all). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["This suite is for testing Orber Interceptors"]; +all(suite) -> + [local_pseudo, local_default, local_local, local_global]. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- +init_per_testcase(_Case, Config) -> + ?line Dog=test_server:timetrap(?default_timeout), + Path = code:which(?MODULE), + code:add_pathz(filename:join(filename:dirname(Path), "idl_output")), + corba:orb_init([{flags, (?ORB_ENV_USE_PI bor ?ORB_ENV_LOCAL_TYPECHECKING)}, + {local_interceptors, {native, [?MODULE]}}]), + orber:jump_start(2945), + oe_orber_test_server:oe_register(), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + oe_orber_test_server:oe_unregister(), + orber:jump_stop(), + Path = code:which(?MODULE), + code:del_path(filename:join(filename:dirname(Path), "idl_output")), + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +%%----------------------------------------------------------------- +%% Test Case: local_pseudo +%% Description: +%%----------------------------------------------------------------- +local_pseudo(doc) -> [""]; +local_pseudo(suite) -> []; +local_pseudo(_) -> + ?match({native, [?MODULE]}, orber:get_local_interceptors()), + %% Global settings + Obj1 = orber_test_server:oe_create(state,[{pseudo,true}]), + Result11 = orber_test_server:testing_iiop_ushort(Obj1, ?USHORTMAX), + ?match([?USHORTMAX], put(out_request, undefined)), + ?match(Result11, put(in_reply, undefined)), + + Result12 = ?match({'EXCEPTION',_}, + orber_test_server:testing_iiop_ushort(Obj1, ?USHORTMAX+1)), + ?match([(?USHORTMAX+1)], put(out_request, undefined)), + ?nomatch(Result12, put(in_reply, undefined)), + + Result13 = orber_test_server:testing_iiop_oneway_delay(Obj1, 0), + ?match([0], put(out_request, undefined)), + ?nomatch(Result13, put(in_reply, undefined)), + + Result14 = ?match({'EXCEPTION', _}, + orber_test_server:raise_local_exception(Obj1)), + ?match([], put(out_request, undefined)), + ?match(Result14, put(in_reply, undefined)), + + Result15 = ?match({'EXCEPTION',_}, orber_test_server:stop_brutal(Obj1)), + ?match([], put(out_request, undefined)), + ?match(Result15, put(in_reply, undefined)), + + %% Per-object + Obj2 = orber_test_server:oe_create(state,[{pseudo,true}, + {local_interceptors, false}]), + + Result21 = orber_test_server:testing_iiop_ushort(Obj2, ?USHORTMAX), + ?nomatch([?USHORTMAX], put(out_request, undefined)), + ?nomatch(Result21, put(in_reply, undefined)), + + Obj3 = orber_test_server:oe_create(state,[{pseudo,true}, + {local_interceptors, true}]), + + Result31 = orber_test_server:testing_iiop_ushort(Obj3, ?USHORTMAX), + ?match([?USHORTMAX], put(out_request, undefined)), + ?match(Result31, put(in_reply, undefined)), + + ok. + +%%----------------------------------------------------------------- +%% Test Case: local_default +%% Description: +%%----------------------------------------------------------------- +local_default(doc) -> [""]; +local_default(suite) -> []; +local_default(_) -> + ?match({native, [?MODULE]}, orber:get_local_interceptors()), + %% Global settings + Obj1 = orber_test_server:oe_create(state, []), + Result11 = orber_test_server:testing_iiop_ushort(Obj1, ?USHORTMAX), + ?match([?USHORTMAX], put(out_request, undefined)), + ?match(Result11, put(in_reply, undefined)), + + Result12 = ?match({'EXCEPTION',_}, + orber_test_server:testing_iiop_ushort(Obj1, ?USHORTMAX+1)), + ?match([(?USHORTMAX+1)], put(out_request, undefined)), + ?nomatch(Result12, put(in_reply, undefined)), + + Result13 = orber_test_server:testing_iiop_oneway_delay(Obj1, 0), + ?match([0], put(out_request, undefined)), + ?nomatch(Result13, put(in_reply, undefined)), + + Result14 = ?match({'EXCEPTION', _}, + orber_test_server:raise_local_exception(Obj1)), + ?match([], put(out_request, undefined)), + ?match(Result14, put(in_reply, undefined)), + + Result15 = ?match({'EXCEPTION',_}, orber_test_server:stop_brutal(Obj1)), + ?match([], put(out_request, undefined)), + ?match(Result15, put(in_reply, undefined)), + + + %% Per-object + Obj2 = orber_test_server:oe_create(state,[{local_interceptors, false}]), + + Result21 = orber_test_server:testing_iiop_ushort(Obj2, ?USHORTMAX), + ?nomatch([?USHORTMAX], put(out_request, undefined)), + ?nomatch(Result21, put(in_reply, undefined)), + corba:dispose(Obj2), + + Obj3 = orber_test_server:oe_create(state,[{local_interceptors, true}]), + + Result31 = orber_test_server:testing_iiop_ushort(Obj3, ?USHORTMAX), + ?match([?USHORTMAX], put(out_request, undefined)), + ?match(Result31, put(in_reply, undefined)), + corba:dispose(Obj3), + ok. + +%%----------------------------------------------------------------- +%% Test Case: local_local +%% Description: +%%----------------------------------------------------------------- +local_local(doc) -> [""]; +local_local(suite) -> []; +local_local(_) -> + ?match({native, [?MODULE]}, orber:get_local_interceptors()), + %% Global settings + Obj1 = orber_test_server:oe_create(state, [{regname, {local, regname}}]), + Result11 = orber_test_server:testing_iiop_ushort(Obj1, ?USHORTMAX), + ?match([?USHORTMAX], put(out_request, undefined)), + ?match(Result11, put(in_reply, undefined)), + + Result12 = ?match({'EXCEPTION',_}, + orber_test_server:testing_iiop_ushort(Obj1, ?USHORTMAX+1)), + ?match([(?USHORTMAX+1)], put(out_request, undefined)), + ?nomatch(Result12, put(in_reply, undefined)), + + Result13 = orber_test_server:testing_iiop_oneway_delay(Obj1, 0), + ?match([0], put(out_request, undefined)), + ?nomatch(Result13, put(in_reply, undefined)), + + Result14 = ?match({'EXCEPTION', _}, + orber_test_server:raise_local_exception(Obj1)), + ?match([], put(out_request, undefined)), + ?match(Result14, put(in_reply, undefined)), + + Result15 = ?match({'EXCEPTION',_}, orber_test_server:stop_brutal(Obj1)), + ?match([], put(out_request, undefined)), + ?match(Result15, put(in_reply, undefined)), + + %% Per-object + Obj2 = orber_test_server:oe_create(state,[{regname, {local, regname}}, + {local_interceptors, false}]), + + Result21 = orber_test_server:testing_iiop_ushort(Obj2, ?USHORTMAX), + ?nomatch([?USHORTMAX], put(out_request, undefined)), + ?nomatch(Result21, put(in_reply, undefined)), + corba:dispose(Obj2), + + Obj3 = orber_test_server:oe_create(state,[{regname, {local, regname}}, + {local_interceptors, true}]), + + Result31 = orber_test_server:testing_iiop_ushort(Obj3, ?USHORTMAX), + ?match([?USHORTMAX], put(out_request, undefined)), + ?match(Result31, put(in_reply, undefined)), + corba:dispose(Obj3), + ok. + +%%----------------------------------------------------------------- +%% Test Case: local_global +%% Description: +%%----------------------------------------------------------------- +local_global(doc) -> [""]; +local_global(suite) -> []; +local_global(_) -> + ?match({native, [?MODULE]}, orber:get_local_interceptors()), + %% Global settings + Obj1 = orber_test_server:oe_create(state, [{regname, {global, regname}}]), + Result11 = orber_test_server:testing_iiop_ushort(Obj1, ?USHORTMAX), + ?match([?USHORTMAX], put(out_request, undefined)), + ?match(Result11, put(in_reply, undefined)), + + Result12 = ?match({'EXCEPTION',_}, + orber_test_server:testing_iiop_ushort(Obj1, ?USHORTMAX+1)), + ?match([(?USHORTMAX+1)], put(out_request, undefined)), + ?nomatch(Result12, put(in_reply, undefined)), + + Result13 = orber_test_server:testing_iiop_oneway_delay(Obj1, 0), + ?match([0], put(out_request, undefined)), + ?nomatch(Result13, put(in_reply, undefined)), + + Result14 = ?match({'EXCEPTION', _}, + orber_test_server:raise_local_exception(Obj1)), + ?match([], put(out_request, undefined)), + ?match(Result14, put(in_reply, undefined)), + + Result15 = ?match({'EXCEPTION',_}, orber_test_server:stop_brutal(Obj1)), + ?match([], put(out_request, undefined)), + ?match(Result15, put(in_reply, undefined)), + + %% Per-object + Obj2 = orber_test_server:oe_create(state,[{regname, {global, regname}}, + {local_interceptors, false}]), + + Result21 = orber_test_server:testing_iiop_ushort(Obj2, ?USHORTMAX), + ?nomatch([?USHORTMAX], put(out_request, undefined)), + ?nomatch(Result21, put(in_reply, undefined)), + corba:dispose(Obj2), + + Obj3 = orber_test_server:oe_create(state,[{regname, {global, regname}}, + {local_interceptors, true}]), + + Result31 = orber_test_server:testing_iiop_ushort(Obj3, ?USHORTMAX), + ?match([?USHORTMAX], put(out_request, undefined)), + ?match(Result31, put(in_reply, undefined)), + corba:dispose(Obj3), + ok. + + + + +%%----------------------------------------------------------------- +%% Local functions +%%----------------------------------------------------------------- +%%----------------------------------------------------------------- +%% function : in_reply +%%----------------------------------------------------------------- +in_reply(Ref, _ObjKey, Ctx, Op, Reply, _Args) -> + error_logger:info_msg("=============== in_reply ================= +Connection: ~p +Operation : ~p +Reply : ~p +Context : ~p +==========================================~n", + [Ref, Op, Reply, Ctx]), + put(in_reply, Reply), + {Reply, "NewArgs"}. + +%%----------------------------------------------------------------- +%% function : out_request +%%----------------------------------------------------------------- +out_request(Ref, _ObjKey, Ctx, Op, Params, _Args) -> + error_logger:info_msg("=============== out_request ============== +Connection: ~p +Operation : ~p +Parameters: ~p +Context : ~p +==========================================~n", + [Ref, Op, Params, Ctx]), + put(out_request, Params), + {Params, "NewArgs"}. diff --git a/lib/orber/test/iop_ior_10_SUITE.erl b/lib/orber/test/iop_ior_10_SUITE.erl new file mode 100644 index 0000000000..1000c7f113 --- /dev/null +++ b/lib/orber/test/iop_ior_10_SUITE.erl @@ -0,0 +1,167 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1999-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% +%% +%% +%%----------------------------------------------------------------- +%% +%% Description: +%% Test suite for the IOR functions +%% +%%----------------------------------------------------------------- +-module(iop_ior_10_SUITE). + +-include("test_server.hrl"). +-include_lib("orber/src/orber_iiop.hrl"). + +-define(default_timeout, ?t:minutes(3)). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1]). + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- +-export([]). +-compile(export_all). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["Description", "more description"]; +all(suite) -> + [encoding, create_and_get_ops]. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- + +init_per_testcase(_Case, Config) -> + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +%%----------------------------------------------------------------- +%% Test Case: IOR encoding test +%% Description: Just testing the string_encoding function because the +%% other encodings is called from them. +%%----------------------------------------------------------------- +encoding(doc) -> ["Description", "more description"]; +encoding(suite) -> []; +encoding(_) -> + V = #'IIOP_Version'{major=1,minor=0}, + M0 = 'Module_Interface', + T0 = "IDL:Module/Interface:1.0", + H0 = "my.hostname.org", + P0 = 4040, + N0 = 'name', + ?line O0 = corba_fake_mk_objkey(M0, registered, N0), + PB0 = #'IIOP_ProfileBody_1_0'{iiop_version=V, host=H0, port=P0, object_key=O0}, + TP0 = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB0}, + S0 = #'IOP_IOR'{type_id=T0, profiles=[TP0]}, + N1 = list_to_pid("<0.100.0>"), + ?line O1 = corba_fake_mk_objkey(M0, key, N1), + PB1 = #'IIOP_ProfileBody_1_0'{iiop_version=V, host=H0, port=P0, object_key=O1}, + TP1 = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB1}, + S1 = #'IOP_IOR'{type_id=T0, profiles=[TP1]}, + O2 = "This is an external objectkey", + PB2 = #'IIOP_ProfileBody_1_0'{iiop_version=V, host=H0, port=P0, object_key=O2}, + TP2 = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB2}, + S2 = #'IOP_IOR'{type_id=T0, profiles=[TP2]}, + ?line C0 = iop_ior:string_code(S0), + ?line {S0, <<>>, _} = iop_ior:string_decode(C0), + ?line C1 = iop_ior:string_code(S1), + ?line {S1, <<>>, _} = iop_ior:string_decode(C1), + ?line C2 = iop_ior:string_code(S2), + ?line {S2, <<>>, _} = iop_ior:string_decode(C2), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: IOR creation test +%% Description: +%%----------------------------------------------------------------- +create_and_get_ops(doc) -> ["Description", "more description"]; +create_and_get_ops(suite) -> []; +create_and_get_ops(_) -> + V = #'IIOP_Version'{major=1,minor=0}, + M0 = 'Module_Interface', + T0 = "IDL:Module/Interface:1.0", + H0 = "my.hostname.org", + P0 = 4040, + N0 = 'name', + ?line O0 = corba_fake_mk_objkey(M0, registered, N0), + PB0 = #'IIOP_ProfileBody_1_0'{iiop_version=V, host=H0, port=P0, object_key=O0}, + TP0 = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB0}, + S0 = #'IOP_IOR'{type_id=T0, profiles=[TP0]}, + ?line S0 = iop_ior:create({1, 0}, T0, [H0], P0, -1, O0, [], 0, 0), + N1 = list_to_pid("<0.100.0>"), + ?line O1 = corba_fake_mk_objkey(M0, key, N1), + {_,_,K1,_,_,_} = O1, + PB1 = #'IIOP_ProfileBody_1_0'{iiop_version=V, host=H0, port=P0, object_key=O1}, + TP1 = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB1}, + S1 = #'IOP_IOR'{type_id=T0, profiles=[TP1]}, + ?line S1 = iop_ior:create({1, 0}, T0, [H0], P0, -1, O1, [], 0, 0), + O2 = "This is an external objectkey", + PB2 = #'IIOP_ProfileBody_1_0'{iiop_version=V, host=H0, port=P0, object_key=O2}, + TP2 = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB2}, + S2 = #'IOP_IOR'{type_id=T0, profiles=[TP2]}, + ?line {'internal_registered', N0, _, _, M0} = iop_ior:get_key(S0), + ?line {'internal', K1, _, _, M0} = iop_ior:get_key(S1), + ?line {'external', {H0, P0, O2, _,_, + #host_data{protocol = normal, + ssl_data = undefined, + version = {1,0}, + csiv2_mech = undefined, + csiv2_statefull = false, + charset = 65537, + wcharset = 65801, + ft_heartbeat = false, + ft_primary = false, + ft_group = undefined, + csiv2_addresses = []}}} + = iop_ior:get_key(S2), + ?line T0 = iop_ior:get_typeID(S0), + ?line O0 = iop_ior:get_objkey(S0), + ?line O1 = iop_ior:get_objkey(S1), + ?line O2 = iop_ior:get_objkey(S2), + ok. + +%%----------------------------------------------------------------- +%% Internal functions +%%----------------------------------------------------------------- +corba_fake_mk_objkey(Id, 'key', Pid) when is_pid(Pid) -> + Key = make_objkey(), + {Id, 'key', Key, term_to_binary(undefined), 0, 0}; +corba_fake_mk_objkey(Id, 'key', RegName) when is_atom(RegName) -> + Key = term_to_binary(RegName), + {Id, 'key', Key, term_to_binary(undefined), 0, 0}; +corba_fake_mk_objkey(Id, 'registered', RegName) when is_atom(RegName) -> + {Id, 'registered', RegName, term_to_binary(undefined), 0, 0}. + + +make_objkey() -> + term_to_binary({now(), node()}). diff --git a/lib/orber/test/iop_ior_11_SUITE.erl b/lib/orber/test/iop_ior_11_SUITE.erl new file mode 100644 index 0000000000..35d01789ee --- /dev/null +++ b/lib/orber/test/iop_ior_11_SUITE.erl @@ -0,0 +1,186 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1997-2010. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%----------------------------------------------------------------- +%% +%% Description: +%% Test suite for the IOR functions +%% +%%----------------------------------------------------------------- +-module(iop_ior_11_SUITE). + +-include("test_server.hrl"). +-include_lib("orber/src/orber_iiop.hrl"). + +-define(default_timeout, ?t:minutes(3)). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1]). + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- +-export([]). +-compile(export_all). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["Description", "more description"]; +all(suite) -> + [encoding, create_and_get_ops]. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- + +init_per_testcase(_Case, Config) -> + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +%%----------------------------------------------------------------- +%% Test Case: IOR encoding test +%% Description: Just testing the string_encoding function because the +%% other encodings is called from them. +%%----------------------------------------------------------------- +encoding(doc) -> ["Description", "more description"]; +encoding(suite) -> []; +encoding(_) -> + V = #'IIOP_Version'{major=1,minor=1}, + M0 = 'Module_Interface', + T0 = "IDL:Module/Interface:1.0", + H0 = "my.hostname.org", + P0 = 4040, + N0 = 'name', + Components = case orber:iiop_ssl_port() of + -1 -> + []; + SSLPort -> + [#'IOP_TaggedComponent'{tag=?TAG_SSL_SEC_TRANS, + component_data=[0 | + cdrlib:enc_unsigned_short(2, + cdrlib:enc_unsigned_short(2, + cdrlib:enc_unsigned_short(SSLPort, [])))]}] + end, + ?line O0 = corba_fake_mk_objkey(M0, registered, N0), + PB0 = #'IIOP_ProfileBody_1_1'{iiop_version=V, host=H0, port=P0, object_key=O0, + components=Components}, + TP0 = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB0}, + S0 = #'IOP_IOR'{type_id=T0, profiles=[TP0]}, + N1 = list_to_pid("<0.100.0>"), + ?line O1 = corba_fake_mk_objkey(M0, key, N1), + PB1 = #'IIOP_ProfileBody_1_1'{iiop_version=V, host=H0, port=P0, object_key=O1, + components=[]}, + TP1 = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB1}, + S1 = #'IOP_IOR'{type_id=T0, profiles=[TP1]}, + O2 = "This is an external objectkey", + PB2 = #'IIOP_ProfileBody_1_1'{iiop_version=V, host=H0, port=P0, object_key=O2, + components=[]}, + TP2 = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB2}, + S2 = #'IOP_IOR'{type_id=T0, profiles=[TP2]}, + ?line C0 = iop_ior:string_code(S0), + ?line {S0, <<>>, _} = iop_ior:string_decode(C0), + ?line C1 = iop_ior:string_code(S1), + ?line {S1, <<>>, _} = iop_ior:string_decode(C1), + ?line C2 = iop_ior:string_code(S2), + ?line {S2, <<>>, _} = iop_ior:string_decode(C2), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: IOR creation test +%% Description: +%%----------------------------------------------------------------- +create_and_get_ops(doc) -> ["Description", "more description"]; +create_and_get_ops(suite) -> []; +create_and_get_ops(_) -> + V = #'IIOP_Version'{major=1,minor=1}, + CSC = #'IOP_TaggedComponent'{tag=?TAG_CODE_SETS, + component_data=?DEFAULT_CODESETS}, + M0 = 'Module_Interface', + T0 = "IDL:Module/Interface:1.0", + H0 = "my.hostname.org", + P0 = 4040, + N0 = 'name', + ?line O0 = corba_fake_mk_objkey(M0, registered, N0), + PB0 = #'IIOP_ProfileBody_1_1' + {iiop_version=V, host=H0, port=P0, object_key=O0, + components=[CSC]}, + TP0 = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB0}, + S0 = #'IOP_IOR'{type_id=T0, profiles=[TP0]}, + ?line S0 = iop_ior:create({1, 1}, T0, [H0], P0, -1, O0, [CSC], 0, 0), + N1 = list_to_pid("<0.100.0>"), + ?line O1 = corba_fake_mk_objkey(M0, key, N1), + {_,_,K1,_,_,_} = O1, + PB1 = #'IIOP_ProfileBody_1_1' + {iiop_version=V, host=H0, port=P0, object_key=O1, + components=[CSC]}, + TP1 = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB1}, + S1 = #'IOP_IOR'{type_id=T0, profiles=[TP1]}, + ?line S1 = iop_ior:create({1, 1}, T0, [H0], P0, -1, O1, [CSC], 0, 0), + O2 = "This is an external objectkey", + PB2 = #'IIOP_ProfileBody_1_1'{iiop_version=V, host=H0, port=P0, object_key=O2, + components=[]}, + TP2 = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB2}, + S2 = #'IOP_IOR'{type_id=T0, profiles=[TP2]}, + ?line {'internal_registered', N0, _, _, M0} = iop_ior:get_key(S0), + ?line {'internal', K1, _, _, M0} = iop_ior:get_key(S1), + ?line {'external', {H0, P0, O2, _,_, + #host_data{protocol = normal, + ssl_data = undefined, + version = {1,1}, + csiv2_mech = undefined, + csiv2_statefull = false, + charset = 65537, + wcharset = 65801, + ft_heartbeat = false, + ft_primary = false, + ft_group = undefined, + csiv2_addresses = []}}} = + iop_ior:get_key(S2), + ?line T0 = iop_ior:get_typeID(S0), + ?line O0 = iop_ior:get_objkey(S0), + ?line O1 = iop_ior:get_objkey(S1), + ?line O2 = iop_ior:get_objkey(S2), + ok. + +%%----------------------------------------------------------------- +%% Internal functions +%%----------------------------------------------------------------- +corba_fake_mk_objkey(Id, 'key', Pid) when is_pid(Pid) -> + Key = make_objkey(), + {Id, 'key', Key, term_to_binary(undefined), 0, 0}; +corba_fake_mk_objkey(Id, 'key', RegName) when is_atom(RegName) -> + Key = term_to_binary(RegName), + {Id, 'key', Key, term_to_binary(undefined), 0, 0}; +corba_fake_mk_objkey(Id, 'registered', RegName) when is_atom(RegName) -> + {Id, 'registered', RegName, term_to_binary(undefined), 0, 0}. + +make_objkey() -> + term_to_binary({now(), node()}). diff --git a/lib/orber/test/iop_ior_12_SUITE.erl b/lib/orber/test/iop_ior_12_SUITE.erl new file mode 100644 index 0000000000..42db130e54 --- /dev/null +++ b/lib/orber/test/iop_ior_12_SUITE.erl @@ -0,0 +1,187 @@ +%%---------------------------------------------------------------------- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2000-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% +%% +%% +%%----------------------------------------------------------------- +%% File : iop_ior_12_SUITE.erl +%% Description : Test suite for the IOR functions +%% +%%---------------------------------------------------------------------- +-module(iop_ior_12_SUITE). + + +-include("test_server.hrl"). +-include_lib("orber/src/orber_iiop.hrl"). + +-define(default_timeout, ?t:minutes(3)). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1]). + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- +-export([]). +-compile(export_all). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["Description", "more description"]; +all(suite) -> + [encoding, create_and_get_ops]. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- + +init_per_testcase(_Case, Config) -> + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +%%----------------------------------------------------------------- +%% Test Case: IOR encoding test +%% Description: Just testing the string_encoding function because the +%% other encodings is called from them. +%%----------------------------------------------------------------- +encoding(doc) -> ["Description", "more description"]; +encoding(suite) -> []; +encoding(_) -> + V = #'IIOP_Version'{major=1,minor=2}, + M0 = 'Module_Interface', + T0 = "IDL:Module/Interface:1.0", + H0 = "my.hostname.org", + P0 = 4040, + N0 = 'name', + Components = case orber:iiop_ssl_port() of + -1 -> + []; + SSLPort -> + [#'IOP_TaggedComponent'{tag=?TAG_SSL_SEC_TRANS, + component_data=[0 | + cdrlib:enc_unsigned_short(2, + cdrlib:enc_unsigned_short(2, + cdrlib:enc_unsigned_short(SSLPort, [])))]}] + end, + ?line O0 = corba_fake_mk_objkey(M0, registered, N0), + PB0 = #'IIOP_ProfileBody_1_1'{iiop_version=V, host=H0, port=P0, object_key=O0, + components=Components}, + TP0 = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB0}, + S0 = #'IOP_IOR'{type_id=T0, profiles=[TP0]}, + N1 = list_to_pid("<0.100.0>"), + ?line O1 = corba_fake_mk_objkey(M0, key, N1), + PB1 = #'IIOP_ProfileBody_1_1'{iiop_version=V, host=H0, port=P0, object_key=O1, + components=[]}, + TP1 = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB1}, + S1 = #'IOP_IOR'{type_id=T0, profiles=[TP1]}, + O2 = "This is an external objectkey", + PB2 = #'IIOP_ProfileBody_1_1'{iiop_version=V, host=H0, port=P0, object_key=O2, + components=[]}, + TP2 = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB2}, + S2 = #'IOP_IOR'{type_id=T0, profiles=[TP2]}, + ?line C0 = iop_ior:string_code(S0), + ?line {S0, <<>>, _} = iop_ior:string_decode(C0), + ?line C1 = iop_ior:string_code(S1), + ?line {S1, <<>>, _} = iop_ior:string_decode(C1), + ?line C2 = iop_ior:string_code(S2), + ?line {S2, <<>>, _} = iop_ior:string_decode(C2), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: IOR creation test +%% Description: +%%----------------------------------------------------------------- +create_and_get_ops(doc) -> ["Description", "more description"]; +create_and_get_ops(suite) -> []; +create_and_get_ops(_) -> + V = #'IIOP_Version'{major=1,minor=2}, + CSC = #'IOP_TaggedComponent'{tag=?TAG_CODE_SETS, + component_data=?DEFAULT_CODESETS}, + M0 = 'Module_Interface', + T0 = "IDL:Module/Interface:1.0", + H0 = "my.hostname.org", + P0 = 4040, + N0 = 'name', + ?line O0 = corba_fake_mk_objkey(M0, registered, N0), + PB0 = #'IIOP_ProfileBody_1_1' + {iiop_version=V, host=H0, port=P0, object_key=O0, + components=[CSC]}, + TP0 = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB0}, + S0 = #'IOP_IOR'{type_id=T0, profiles=[TP0]}, + ?line S0 = iop_ior:create({1, 2}, T0, [H0], P0, -1, O0, [CSC], 0, 0), + N1 = list_to_pid("<0.100.0>"), + ?line O1 = corba_fake_mk_objkey(M0, key, N1), + {_,_,K1,_,_,_} = O1, + PB1 = #'IIOP_ProfileBody_1_1' + {iiop_version=V, host=H0, port=P0, object_key=O1, + components=[CSC]}, + TP1 = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB1}, + S1 = #'IOP_IOR'{type_id=T0, profiles=[TP1]}, + ?line S1 = iop_ior:create({1, 2}, T0, [H0], P0, -1, O1, [CSC], 0, 0), + O2 = "This is an external objectkey", + PB2 = #'IIOP_ProfileBody_1_1'{iiop_version=V, host=H0, port=P0, object_key=O2, + components=[]}, + TP2 = #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, profile_data=PB2}, + S2 = #'IOP_IOR'{type_id=T0, profiles=[TP2]}, + ?line {'internal_registered', N0, _, _, M0} = iop_ior:get_key(S0), + ?line {'internal', K1, _, _, M0} = iop_ior:get_key(S1), + ?line {'external', {H0, P0, O2,_,_, + #host_data{protocol = normal, + ssl_data = undefined, + version = {1,2}, + csiv2_mech = undefined, + csiv2_statefull = false, + charset = 65537, + wcharset = 65801, + ft_heartbeat = false, + ft_primary = false, + ft_group = undefined, + csiv2_addresses = []}}} + = iop_ior:get_key(S2), + ?line T0 = iop_ior:get_typeID(S0), + ?line O0 = iop_ior:get_objkey(S0), + ?line O1 = iop_ior:get_objkey(S1), + ?line O2 = iop_ior:get_objkey(S2), + ok. + +%%----------------------------------------------------------------- +%% Internal functions +%%----------------------------------------------------------------- +corba_fake_mk_objkey(Id, 'key', Pid) when is_pid(Pid) -> + Key = make_objkey(), + {Id, 'key', Key, term_to_binary(undefined), 0, 0}; +corba_fake_mk_objkey(Id, 'key', RegName) when is_atom(RegName) -> + Key = term_to_binary(RegName), + {Id, 'key', Key, term_to_binary(undefined), 0, 0}; +corba_fake_mk_objkey(Id, 'registered', RegName) when is_atom(RegName) -> + {Id, 'registered', RegName, term_to_binary(undefined), 0, 0}. + +make_objkey() -> + term_to_binary({now(), node()}). diff --git a/lib/orber/test/lname_SUITE.erl b/lib/orber/test/lname_SUITE.erl new file mode 100644 index 0000000000..d1f0e7cf0e --- /dev/null +++ b/lib/orber/test/lname_SUITE.erl @@ -0,0 +1,198 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1997-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%----------------------------------------------------------------- +%% +%% Description: +%% Test suite for the Names Library module +%% +%%----------------------------------------------------------------- +-module(lname_SUITE). + +-include("test_server.hrl"). +-include_lib("orber/COSS/CosNaming/CosNaming.hrl"). +-include_lib("orber/COSS/CosNaming/lname.hrl"). + +-define(default_timeout, ?t:minutes(3)). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1]). + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- +-export([]). +-compile(export_all). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["Description", "more description"]; +all(suite) -> + [lname_component, lname]. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- + +init_per_testcase(_Case, Config) -> + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: name component handling tests +%% Description: +%%----------------------------------------------------------------- +lname_component(doc) -> ["Description", "more description"]; +lname_component(suite) -> []; +lname_component(_) -> + create_test(), + get_tests(), + set_tests(). + +create_test() -> + ?line #'CosNaming_NameComponent'{} = lname_component:create(), + ok. + +get_tests() -> + NC = #'CosNaming_NameComponent'{id="first", kind="apple"}, + NC1 = #'CosNaming_NameComponent'{id="", kind="apple"}, + NC2 = #'CosNaming_NameComponent'{id="first", kind=""}, + ?line "first" = lname_component:get_id(NC), + ?line "apple" = lname_component:get_kind(NC), + ?line {'EXCEPTION', #'LNameComponent_NotSet'{}} = + (catch lname_component:get_id(NC1)), + ?line {'EXCEPTION', #'LNameComponent_NotSet'{}} = + (catch lname_component:get_kind(NC2)), + ok. + +set_tests() -> + NC = #'CosNaming_NameComponent'{id="first", kind="apple"}, + ?line #'CosNaming_NameComponent'{id="second", kind="apple"} = + lname_component:set_id(NC, "second"), + ?line #'CosNaming_NameComponent'{id="first", kind="pear"} = + lname_component:set_kind(NC, "pear"), + ok. + +%%----------------------------------------------------------------- +%% Test Case: name handling tests +%% Description: +%%----------------------------------------------------------------- +lname(doc) -> ["Description", "more description"]; +lname(suite) -> []; +lname(_) -> + Name = [#'CosNaming_NameComponent'{id="first", kind="apple"}, + #'CosNaming_NameComponent'{id="last", kind="peach"}, + #'CosNaming_NameComponent'{id="and", kind="plum"}, + #'CosNaming_NameComponent'{id="always", kind="orange"}], + insert_tests(Name), + get_tests(Name), + delete_tests(Name), + comparision_tests(Name), + convertion_tests(Name). + +insert_tests(Name) -> + NC = #'CosNaming_NameComponent'{id="new", kind="pear"}, + ?line [NC, #'CosNaming_NameComponent'{id="first", kind="apple"}, + #'CosNaming_NameComponent'{id="last", kind="peach"}, + #'CosNaming_NameComponent'{id="and", kind="plum"}, + #'CosNaming_NameComponent'{id="always", kind="orange"}] = + lname:insert_component(Name, 1, NC), + ?line [#'CosNaming_NameComponent'{id="first", kind="apple"}, + #'CosNaming_NameComponent'{id="last", kind="peach"}, + #'CosNaming_NameComponent'{id="and", kind="plum"}, + #'CosNaming_NameComponent'{id="always", kind="orange"}, NC] = + lname:insert_component(Name, 5, NC), + ?line [#'CosNaming_NameComponent'{id="first", kind="apple"}, + #'CosNaming_NameComponent'{id="last", kind="peach"}, + #'CosNaming_NameComponent'{id="and", kind="plum"}, NC, + #'CosNaming_NameComponent'{id="always", kind="orange"}] = + lname:insert_component(Name, 4, NC), + ?line [#'CosNaming_NameComponent'{id="first", kind="apple"}, + #'CosNaming_NameComponent'{id="last", kind="peach"}, NC, + #'CosNaming_NameComponent'{id="and", kind="plum"}, + #'CosNaming_NameComponent'{id="always", kind="orange"}] = + lname:insert_component(Name, 3, NC), + ?line {'EXCEPTION', #'LName_NoComponent'{}} = + (catch lname:insert_component(Name, 6, NC)), + ?line {'EXCEPTION', #'LName_NoComponent'{}} = + (catch lname:insert_component(Name, 0, NC)), + ?line {'EXCEPTION', #'LName_NoComponent'{}} = + (catch lname:insert_component(Name, -2, NC)), + ok. + +get_tests(Name) -> + ?line #'CosNaming_NameComponent'{id="first", kind="apple"} = + lname:get_component(Name, 1), + ?line #'CosNaming_NameComponent'{id="always", kind="orange"} = + lname:get_component(Name, 4), + ?line #'CosNaming_NameComponent'{id="and", kind="plum"} = + lname:get_component(Name, 3), + ?line {'EXCEPTION', #'LName_NoComponent'{}} = + (catch lname:get_component(Name, 5)), + ?line {'EXCEPTION', #'LName_NoComponent'{}} = + (catch lname:get_component(Name, 0)), + ?line {'EXCEPTION', #'LName_NoComponent'{}} = + (catch lname:get_component(Name, -2)), + ok. + +delete_tests(Name) -> + ?line [#'CosNaming_NameComponent'{id="last", kind="peach"}, + #'CosNaming_NameComponent'{id="and", kind="plum"}, + #'CosNaming_NameComponent'{id="always", kind="orange"}] = + lname:delete_component(Name, 1), + ?line [#'CosNaming_NameComponent'{id="first", kind="apple"}, + #'CosNaming_NameComponent'{id="last", kind="peach"}, + #'CosNaming_NameComponent'{id="and", kind="plum"}] = + lname:delete_component(Name, 4), + ?line [#'CosNaming_NameComponent'{id="first", kind="apple"}, + #'CosNaming_NameComponent'{id="last", kind="peach"}, + #'CosNaming_NameComponent'{id="always", kind="orange"}] = + lname:delete_component(Name, 3), + ?line {'EXCEPTION', #'LName_NoComponent'{}} = + (catch lname:delete_component(Name, 6)), + ?line {'EXCEPTION', #'LName_NoComponent'{}} = + (catch lname:delete_component(Name, 0)), + ?line {'EXCEPTION', #'LName_NoComponent'{}} = + (catch lname:delete_component(Name, -2)), + ok. + +comparision_tests(Name) -> + ?line true = lname:equal(Name, Name), + ?line false = lname:equal(Name, lname:delete_component(Name, 2)), + ?line true = lname:less_than(lname:delete_component(Name, 2), Name), + ?line false = lname:less_than(Name, Name), + ?line false = lname:less_than(Name, lname:delete_component(Name, 2)), + ok. + +convertion_tests(Name) -> + ?line Name = lname:from_idl_form(Name), + ?line Name = lname:to_idl_form(Name), + ok. diff --git a/lib/orber/test/multi_ORB_SUITE.erl b/lib/orber/test/multi_ORB_SUITE.erl new file mode 100644 index 0000000000..d1931f5393 --- /dev/null +++ b/lib/orber/test/multi_ORB_SUITE.erl @@ -0,0 +1,2352 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1999-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(multi_ORB_SUITE). + +-include("test_server.hrl"). +-include_lib("orber/include/corba.hrl"). +-include_lib("orber/COSS/CosNaming/CosNaming.hrl"). +-include_lib("orber/src/orber_iiop.hrl"). +-include_lib("orber/src/ifr_objects.hrl"). +-include("idl_output/orber_test_server.hrl"). +-include_lib("orber/COSS/CosNaming/CosNaming_NamingContextExt.hrl"). +-include_lib("orber/COSS/CosNaming/CosNaming_NamingContext.hrl"). + + +-define(default_timeout, ?t:minutes(15)). + +-define(match(ExpectedRes,Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + io:format("------ CORRECT RESULT ------~n~p~n", + [AcTuAlReS]), + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~nRESULT: ~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS) + end + end()). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1, cases/0, init_all/1, finish_all/1, basic_PI_api/1, multi_orber_api/1, + init_per_testcase/2, fin_per_testcase/2, multi_pseudo_orber_api/1, + light_orber_api/1, light_orber2_api/1, + ssl_1_multi_orber_api/1, ssl_2_multi_orber_api/1, ssl_reconfigure_api/1, + iiop_timeout_api/1, iiop_timeout_added_api/1, setup_connection_timeout_api/1, + setup_multi_connection_timeout_api/1, setup_multi_connection_timeout_random_api/1, + setup_multi_connection_timeout_attempts_api/1, + fragments_server_api/1, fragments_max_server_api/1, + fragments_max_server_added_api/1, fragments_client_api/1, + light_ifr_api/1, max_requests_api/1, max_requests_added_api/1, + max_connections_api/1, max_packet_size_exceeded_api/1, + max_packet_size_ok_api/1, proxy_interface_api/1, proxy_interface_ipv6_api/1, + multiple_accept_api/1, implicit_context_api/1, + pseudo_implicit_context_api/1, pseudo_two_implicit_context_api/1, + oneway_implicit_context_api/1, implicit_context_roundtrip_api/1, + oneway_pseudo_implicit_context_api/1, flags_added_api/1, + oneway_pseudo_two_implicit_context_api/1, + local_interface_api/1, local_interface_ctx_override_api/1, + local_interface_acl_override_api/1, bad_giop_header_api/1, + bad_fragment_id_client_api/1, bad_id_cancel_request_api/1, + close_connections_api/1, close_connections_local_interface_api/1, + close_connections_local_interface_ctx_override_api/1, ssl_reconfigure_generation_3_api/1, + ssl_1_multi_orber_generation_3_api/1, ssl_2_multi_orber_generation_3_api/1, + close_connections_alt_iiop_addr_api/1, close_connections_multiple_profiles_api/1]). + + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- +-export([pseudo_calls/2, pseudo_casts/2, create_fake_server_ORB/5, do_connect/3]). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["API tests for multi orber interfaces", + "This suite test intra-ORB communication. There are three scenarios:", + "* No security at all (multi_orber_api)", + "* Two secure orbs using ssl (ssl_multi_orb_api)", + "* One secure and one orb with no security. (ssl_multi_orb_api)"]; +all(suite) -> {req, + [mnesia], + {conf, init_all, cases(), finish_all}}. + +%% NOTE - the fragment test cases must be first since we explicitly set a request +%% id. Otherwise, the request-id counter would be increased and we cannot know +%% what it is. +cases() -> + [fragments_server_api, + fragments_max_server_api, + fragments_max_server_added_api, + fragments_client_api, + flags_added_api, + bad_fragment_id_client_api, + bad_giop_header_api, + bad_id_cancel_request_api, + implicit_context_api, + pseudo_implicit_context_api, + pseudo_two_implicit_context_api, + implicit_context_roundtrip_api, + oneway_implicit_context_api, + oneway_pseudo_implicit_context_api, + oneway_pseudo_two_implicit_context_api, + proxy_interface_api, + proxy_interface_ipv6_api, + local_interface_api, + local_interface_ctx_override_api, + local_interface_acl_override_api, + close_connections_api, + close_connections_local_interface_api, + close_connections_local_interface_ctx_override_api, + close_connections_alt_iiop_addr_api, + close_connections_multiple_profiles_api, + multiple_accept_api, + max_requests_api, + max_requests_added_api, + max_connections_api, + max_packet_size_exceeded_api, + max_packet_size_ok_api, + light_ifr_api, + multi_pseudo_orber_api, + multi_orber_api, + light_orber_api, + light_orber2_api, + basic_PI_api, + iiop_timeout_api, + iiop_timeout_added_api, + setup_connection_timeout_api, + setup_multi_connection_timeout_api, + setup_multi_connection_timeout_attempts_api, + setup_multi_connection_timeout_random_api, + ssl_1_multi_orber_api, + ssl_1_multi_orber_generation_3_api, + ssl_2_multi_orber_api, + ssl_2_multi_orber_generation_3_api, + ssl_reconfigure_generation_3_api, + ssl_reconfigure_api + ]. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- + +init_per_testcase(_Case, Config) -> + Path = code:which(?MODULE), + code:add_pathz(filename:join(filename:dirname(Path), "idl_output")), + Dog=test_server:timetrap(?default_timeout), + orber:jump_start(0), + oe_orber_test_server:oe_register(), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + oe_orber_test_server:oe_unregister(), + orber:jump_stop(), + Path = code:which(?MODULE), + code:del_path(filename:join(filename:dirname(Path), "idl_output")), + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +init_all(Config) -> + if + is_list(Config) -> + Config; + true -> + exit("Config not a list") + end. + +finish_all(Config) -> + Config. + +%%----------------------------------------------------------------- +%% API tests for ORB to ORB, no security +%%----------------------------------------------------------------- + +implicit_context_api(doc) -> ["IIOP Implicit Contex tests"]; +implicit_context_api(suite) -> []; +implicit_context_api(_Config) -> + IP = orber_test_lib:get_host(), + Loopback = orber_test_lib:get_loopback_interface(), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_LOCAL_INTERFACE}, + {ip_address, IP}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + %% Create a remote server + ?match(ok, orber_test_lib:remote_apply(ServerNode, orber_test_lib, + install_test_data, + [nameservice])), + IOR = ?match(#'IOP_IOR'{}, + corba:string_to_object("corbaname::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService#mamba")), + + Relay = ?match({_,_,_,_,_,_}, orber_test_server:oe_create([])), + ?match(ok, + orber_test_server: + relay_call(Relay, + [{context, + [#'IOP_ServiceContext'{context_id=?ORBER_GENERIC_CTX_ID, + context_data = {interface, + Loopback}}]}], + IOR)), + + ?match([_,_], orber:iiop_connections(out)), + Conns = ?match([_,_], + orber_test_lib:remote_apply(ServerNode, orber, iiop_connections, [in])), + ?match(true, lists:keymember(Loopback, 1, Conns)), + ok. + +implicit_context_roundtrip_api(doc) -> + ["IIOP Implicit Contex roundtrip tests"]; +implicit_context_roundtrip_api(suite) -> []; +implicit_context_roundtrip_api(_Config) -> + IP = orber_test_lib:get_host(), + Loopback = orber_test_lib:get_loopback_interface(), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_LOCAL_INTERFACE}, + {ip_address, IP}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + %% Create a remote server + ?match(ok, orber_test_lib:remote_apply(ServerNode, orber_test_lib, + install_test_data, + [nameservice])), + Relay = ?match(#'IOP_IOR'{}, + corba:string_to_object("corbaname::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService#mamba")), + + IOR = ?match({_,_,_,_,_,_}, orber_test_server:oe_create([], [])), + ?match(ok, + orber_test_server: + relay_call(Relay, + [{context, + [#'IOP_ServiceContext'{context_id=?ORBER_GENERIC_CTX_ID, + context_data = {interface, + Loopback}}]}], + IOR)), + ?match([_,_], orber:iiop_connections(out)), + Conns = ?match([_,_], + orber_test_lib:remote_apply(ServerNode, orber, iiop_connections, [in])), + ?match(true, lists:keymember(Loopback, 1, Conns)), + ok. + + + +oneway_implicit_context_api(doc) -> ["IIOP Implicit Contex oneway tests"]; +oneway_implicit_context_api(suite) -> []; +oneway_implicit_context_api(_Config) -> + IP = orber_test_lib:get_host(), + Loopback = orber_test_lib:get_loopback_interface(), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_LOCAL_INTERFACE}, + {ip_address, IP}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + %% Create a remote server + ?match(ok, orber_test_lib:remote_apply(ServerNode, orber_test_lib, + install_test_data, + [nameservice])), + IOR = ?match(#'IOP_IOR'{}, + corba:string_to_object("corbaname::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService#mamba")), + + Relay = ?match({_,_,_,_,_,_}, orber_test_server:oe_create([])), + ?match(ok, + orber_test_server: + relay_cast(Relay, + [{context, + [#'IOP_ServiceContext'{context_id=?ORBER_GENERIC_CTX_ID, + context_data = {interface, + Loopback}}]}], + IOR)), + + %% We must wait for a few seconds for the client to be able to set up the + %% connection (since it's a oneway operation). + timer:sleep(5000), + ?match([_,_], orber:iiop_connections(out)), + Conns = ?match([_,_], + orber_test_lib:remote_apply(ServerNode, orber, iiop_connections, [in])), + ?match(true, lists:keymember(Loopback, 1, Conns)), + ok. + + +pseudo_implicit_context_api(doc) -> ["IIOP Implicit Contex tests (via pseudo object)"]; +pseudo_implicit_context_api(suite) -> []; +pseudo_implicit_context_api(_Config) -> + IP = orber_test_lib:get_host(), + Loopback = orber_test_lib:get_loopback_interface(), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_LOCAL_INTERFACE}, + {ip_address, IP}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + %% Create a remote server + ?match(ok, orber_test_lib:remote_apply(ServerNode, orber_test_lib, + install_test_data, + [nameservice])), + IOR = ?match(#'IOP_IOR'{}, + corba:string_to_object("corbaname::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService#mamba")), + + Relay = ?match({_,_,_,_,_,_}, orber_test_server:oe_create([], [{pseudo,true}])), + ?match(ok, + orber_test_server: + relay_call(Relay, + [{context, + [#'IOP_ServiceContext'{context_id=?ORBER_GENERIC_CTX_ID, + context_data = {interface, + Loopback}}]}], + IOR)), + ?match([_,_], orber:iiop_connections(out)), + Conns = ?match([_,_], + orber_test_lib:remote_apply(ServerNode, orber, iiop_connections, [in])), + ?match(true, lists:keymember(Loopback, 1, Conns)), + ok. + +pseudo_two_implicit_context_api(doc) -> + ["IIOP two Implicit Contex tests (via pseudo object)"]; +pseudo_two_implicit_context_api(suite) -> []; +pseudo_two_implicit_context_api(_Config) -> + IP = orber_test_lib:get_host(), + Loopback = orber_test_lib:get_loopback_interface(), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_LOCAL_INTERFACE}, + {ip_address, IP}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + %% Create a remote server + ?match(ok, orber_test_lib:remote_apply(ServerNode, orber_test_lib, + install_test_data, + [nameservice])), + IOR = ?match(#'IOP_IOR'{}, + corba:string_to_object("corbaname::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService#mamba")), + + Relay = ?match({_,_,_,_,_,_}, orber_test_server:oe_create([], [{pseudo,true}])), + put(oe_server_in_context, + [#'IOP_ServiceContext'{context_id=?ORBER_GENERIC_CTX_ID, + context_data = {interface, + IP}}]), + ?match(ok, + orber_test_server: + relay_call(Relay, + [{context, + [#'IOP_ServiceContext'{context_id=?ORBER_GENERIC_CTX_ID, + context_data = {interface, + Loopback}}]}], + IOR)), + ?match([_,_], orber:iiop_connections(out)), + Conns = ?match([_,_], + orber_test_lib:remote_apply(ServerNode, orber, iiop_connections, [in])), + ?match(true, lists:keymember(Loopback, 1, Conns)), + ok. + +oneway_pseudo_implicit_context_api(doc) -> ["IIOP Implicit Contex tests (via pseudo object oneway)"]; +oneway_pseudo_implicit_context_api(suite) -> []; +oneway_pseudo_implicit_context_api(_Config) -> + IP = orber_test_lib:get_host(), + Loopback = orber_test_lib:get_loopback_interface(), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_LOCAL_INTERFACE}, + {ip_address, IP}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + %% Create a remote server + ?match(ok, orber_test_lib:remote_apply(ServerNode, orber_test_lib, + install_test_data, + [nameservice])), + IOR = ?match(#'IOP_IOR'{}, + corba:string_to_object("corbaname::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService#mamba")), + + Relay = ?match({_,_,_,_,_,_}, orber_test_server:oe_create([], [{pseudo,true}])), + ?match(ok, + orber_test_server: + relay_cast(Relay, + [{context, + [#'IOP_ServiceContext'{context_id=?ORBER_GENERIC_CTX_ID, + context_data = {interface, + Loopback}}]}], + IOR)), + ?match([_,_], orber:iiop_connections(out)), + Conns = ?match([_,_], + orber_test_lib:remote_apply(ServerNode, orber, iiop_connections, [in])), + ?match(true, lists:keymember(Loopback, 1, Conns)), + ok. + +oneway_pseudo_two_implicit_context_api(doc) -> + ["IIOP two Implicit Contex tests (via pseudo object oneway)"]; +oneway_pseudo_two_implicit_context_api(suite) -> []; +oneway_pseudo_two_implicit_context_api(_Config) -> + IP = orber_test_lib:get_host(), + Loopback = orber_test_lib:get_loopback_interface(), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_LOCAL_INTERFACE}, + {ip_address, IP}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + %% Create a remote server + ?match(ok, orber_test_lib:remote_apply(ServerNode, orber_test_lib, + install_test_data, + [nameservice])), + IOR = ?match(#'IOP_IOR'{}, + corba:string_to_object("corbaname::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService#mamba")), + + Relay = ?match({_,_,_,_,_,_}, orber_test_server:oe_create([], [{pseudo,true}])), + %% Add incoming implicit context which must be removed. + put(oe_server_in_context, + [#'IOP_ServiceContext'{context_id=?ORBER_GENERIC_CTX_ID, + context_data = {interface, + IP}}]), + ?match(ok, + orber_test_server: + relay_cast(Relay, + [{context, + [#'IOP_ServiceContext'{context_id=?ORBER_GENERIC_CTX_ID, + context_data = {interface, + Loopback}}]}], + IOR)), + ?match([_,_], orber:iiop_connections(out)), + Conns = ?match([_,_], + orber_test_lib:remote_apply(ServerNode, orber, iiop_connections, [in])), + ?match(true, lists:keymember(Loopback, 1, Conns)), + ok. + + + +multiple_accept_api(doc) -> ["IIOP Multiple Accept tests"]; +multiple_accept_api(suite) -> []; +multiple_accept_api(_Config) -> + IP = orber_test_lib:get_host(), + Loopback = orber_test_lib:get_loopback_interface(), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_LOCAL_INTERFACE}, + {ip_address, IP}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + %% The server ORB doesn't listen to 127.0.0.1 + ?match({'EXCEPTION',_}, + corba:string_to_object("corbaloc::1.2@" ++Loopback++":"++integer_to_list(ServerPort)++"/NameService")), + ?match([], orber:iiop_connections(out)), + + IOR1 = ?match(#'IOP_IOR'{}, + corba:string_to_object("corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService")), + ?match({'external', {IP, ServerPort, _ObjectKey, _Counter, _TP, _NewHD}}, + iop_ior:get_key(IOR1)), + ?match([_], orber:iiop_connections(out)), + + {ok, Ref1} = ?match({ok, _}, + orber_test_lib:remote_apply(ServerNode, orber, + add_listen_interface, + [Loopback, normal])), + + IOR2 = ?match(#'IOP_IOR'{}, + corba:string_to_object("corbaloc::1.2@"++Loopback++":"++integer_to_list(ServerPort)++"/NameService")), + ?match({'external', {Loopback, ServerPort, _ObjectKey, _Counter, _TP, _NewHD}}, + iop_ior:get_key(IOR2)), + ?match([_,_], orber:iiop_connections(out)), + + {ok, Ref2} = ?match({ok, _}, + orber_test_lib:remote_apply(ServerNode, orber, + add_listen_interface, + [Loopback, normal, 9543])), + ?match({error, eaddrinuse}, + orber_test_lib:remote_apply(ServerNode, orber, + add_listen_interface, + [Loopback, normal, 9543])), + + IOR3 = ?match(#'IOP_IOR'{}, + corba:string_to_object("corbaloc::1.2@"++Loopback++":9543/NameService")), + ?match({'external', {Loopback, 9543, _ObjectKey, _Counter, _TP, _NewHD}}, + iop_ior:get_key(IOR3)), + ?match([_,_,_], orber:iiop_connections(out)), + + ?match(ok, + orber_test_lib:remote_apply(ServerNode, orber, + remove_listen_interface, [Ref1])), + %% Wait a few seconds to be sure that the connections really has been removed. + timer:sleep(4000), + ?match([_,_], orber:iiop_connections(out)), + + ?match(ok, + orber_test_lib:remote_apply(ServerNode, orber, + remove_listen_interface, [Ref2])), + %% Wait a few seconds to be sure that the connections really has been removed. + timer:sleep(4000), + ?match([_], orber:iiop_connections(out)), + + ?match({'EXCEPTION',_}, + corba:string_to_object("corbaloc::1.2@"++Loopback++":9543/NameService")), + ?match({'EXCEPTION',_}, + corba:string_to_object("corbaloc::1.2@"++Loopback++":"++integer_to_list(ServerPort)++"/NameService")), + + IOR4 = ?match(#'IOP_IOR'{}, + corba:string_to_object("corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService")), + ?match({'external', {IP, ServerPort, _ObjectKey, _Counter, _TP, _NewHD}}, + iop_ior:get_key(IOR4)), + + ok. + + +proxy_interface_api(doc) -> ["IIOP Proxy Interface tests", + "This case test if the server ORB use the correct", + "interface when exporting IOR:s"]; +proxy_interface_api(suite) -> []; +proxy_interface_api(_Config) -> + IP = orber_test_lib:get_host(), + Loopback = orber_test_lib:get_loopback_interface(), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_LOCAL_INTERFACE}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + IOR1 = ?match(#'IOP_IOR'{}, + corba:string_to_object("corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService")), + ?match({'external', {IP, ServerPort, _ObjectKey, _Counter, _TP, _NewHD}}, + iop_ior:get_key(IOR1)), + IOR2 = ?match(#'IOP_IOR'{}, + corba:string_to_object("corbaloc::1.2@"++Loopback++":"++integer_to_list(ServerPort)++"/NameService")), + ?match({'external', {Loopback, ServerPort, _ObjectKey, _Counter, _TP, _NewHD}}, + iop_ior:get_key(IOR2)), + ok. + +proxy_interface_ipv6_api(doc) -> ["IIOP Proxy Interface tests", + "This case test if the server ORB use the correct", + "IPv6 interface when exporting IOR:s"]; +proxy_interface_ipv6_api(suite) -> []; +proxy_interface_ipv6_api(_Config) -> + case orber_test_lib:version_ok() of + true -> + proxy_interface_ipv6_api2(); + Reason -> + Reason + end. + +proxy_interface_ipv6_api2() -> + Loopback = orber_test_lib:get_loopback_interface(inet6), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, (?ORB_ENV_USE_IPV6 bor + ?ORB_ENV_LOCAL_INTERFACE)}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + + {ok, ClientNode, _ClientHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_USE_IPV6}])), + + IP = orber_test_lib:remote_apply(ClientNode, orber_test_lib, get_host, []), + + IOR1 = ?match(#'IOP_IOR'{}, + orber_test_lib:remote_apply(ClientNode, corba, string_to_object, + ["corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService"])), + ?match({'external', {IP, ServerPort, _ObjectKey, _Counter, _TP, _NewHD}}, + orber_test_lib:remote_apply(ClientNode, iop_ior, get_key, [IOR1])), + IOR2 = ?match(#'IOP_IOR'{}, + orber_test_lib:remote_apply(ClientNode, corba, string_to_object, + ["corbaloc::1.2@"++Loopback++":"++integer_to_list(ServerPort)++"/NameService"])), + ?match({'external', {Loopback, ServerPort, _ObjectKey, _Counter, _TP, _NewHD}}, + orber_test_lib:remote_apply(ClientNode, iop_ior, get_key, [IOR2])), + ok. + +local_interface_api(doc) -> ["IIOP Local Interface tests", + "This case test if the server ORB use the correct", + "local interface when connecting to another ORB"]; +local_interface_api(suite) -> []; +local_interface_api(_Config) -> + IP = orber_test_lib:get_host(), + Loopback = orber_test_lib:get_loopback_interface(), + {ok, ClientNode, _ClientHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{ip_address_local, Loopback}])), + Port = orber:iiop_port(), + ?match(#'IOP_IOR'{}, + orber_test_lib:remote_apply(ClientNode, corba, string_to_object, + ["corbaloc::1.2@"++IP++":"++integer_to_list(Port)++"/NameService"])), + [{Loopback, RemotePort}] = + ?match([{Loopback,_RemotePort}], orber:iiop_connections(in)), + + ?match([{IP, Port}], + orber_test_lib:remote_apply(ClientNode, orber, + iiop_connections, [out])), + ?match([{IP, Port}], orber:find_sockname_by_peername(Loopback,RemotePort)), + ?match([{Loopback, RemotePort}], orber:find_peername_by_sockname(IP, Port)), + + ?match([{Loopback, RemotePort}], + orber_test_lib:remote_apply(ClientNode, orber, + find_sockname_by_peername, + [IP, Port])), + ?match([{IP, Port}], + orber_test_lib:remote_apply(ClientNode, orber, + find_peername_by_sockname, + [Loopback,RemotePort])), + + + ok. + +local_interface_ctx_override_api(doc) -> + ["IIOP Local Interface tests", + "This case test if the server ORB use the correct", + "local interface when connecting to another ORB"]; +local_interface_ctx_override_api(suite) -> []; +local_interface_ctx_override_api(_Config) -> + IP = orber_test_lib:get_host(), + Loopback = orber_test_lib:get_loopback_interface(), + {ok, ClientNode, _ClientHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{ip_address_local, IP}])), + Port = orber:iiop_port(), + ?match(#'IOP_IOR'{}, + orber_test_lib:remote_apply(ClientNode, corba, string_to_object, + ["corbaloc::1.2@"++IP++":"++integer_to_list(Port)++"/NameService", + [#'IOP_ServiceContext' + {context_id=?ORBER_GENERIC_CTX_ID, + context_data = {interface, Loopback}}]])), + [{Loopback, RemotePort}] = + ?match([{Loopback,_RemotePort}], orber:iiop_connections(in)), + + ?match([{IP, Port, Loopback}], + orber_test_lib:remote_apply(ClientNode, orber, + iiop_connections, [out])), + ?match([{IP, Port}], orber:find_sockname_by_peername(Loopback,RemotePort)), + ?match([{Loopback, RemotePort}], orber:find_peername_by_sockname(IP, Port)), + + ?match([{Loopback, RemotePort}], + orber_test_lib:remote_apply(ClientNode, orber, + find_sockname_by_peername, + [IP, Port])), + ?match([{IP, Port}], + orber_test_lib:remote_apply(ClientNode, orber, + find_peername_by_sockname, + [Loopback,RemotePort])), + + ok. + +local_interface_acl_override_api(doc) -> + ["IIOP Local Interface tests", + "This case test if the server ORB use the correct", + "local interface when connecting to another ORB"]; +local_interface_acl_override_api(suite) -> []; +local_interface_acl_override_api(_Config) -> + IP = orber_test_lib:get_host(), + Loopback = orber_test_lib:get_loopback_interface(), + ACL = [{tcp_out, IP ++ "/18", [Loopback]}], + {ok, ClientNode, _ClientHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{ip_address_local, IP}, + {iiop_acl, ACL}, + {flags, ?ORB_ENV_USE_ACL_OUTGOING}])), + Port = orber:iiop_port(), + ?match(#'IOP_IOR'{}, + orber_test_lib:remote_apply(ClientNode, corba, string_to_object, + ["corbaloc::1.2@"++IP++":"++integer_to_list(Port)++"/NameService", + [#'IOP_ServiceContext' + {context_id=?ORBER_GENERIC_CTX_ID, + context_data = {interface, IP}}]])), + ?match([{Loopback,_RemotePort}], orber:iiop_connections(in)), + ?match(#'IOP_IOR'{}, + orber_test_lib:remote_apply(ClientNode, corba, string_to_object, + ["corbaloc::1.2@"++IP++":"++integer_to_list(Port)++"/NameService"])), + + [{Loopback, RemotePort}] = + ?match([{Loopback,_RemotePort}], orber:iiop_connections(in)), + ?match([{IP, Port, IP}], orber_test_lib:remote_apply(ClientNode, orber, + iiop_connections, [out])), + ?match([{IP, Port}], orber:find_sockname_by_peername(Loopback,RemotePort)), + ?match([{Loopback, RemotePort}], orber:find_peername_by_sockname(IP, Port)), + + ?match([{Loopback, RemotePort}], + orber_test_lib:remote_apply(ClientNode, orber, + find_sockname_by_peername, + [IP, Port])), + ?match([{IP, Port}], + orber_test_lib:remote_apply(ClientNode, orber, + find_peername_by_sockname, + [Loopback,RemotePort])), + + ok. + + +iiop_timeout_api(doc) -> ["IIOP TIMEOUT API tests", + "This case test if timeout configuration behaves correctly"]; +iiop_timeout_api(suite) -> []; +iiop_timeout_api(_Config) -> + + %% Install two secure orber. + {ok, ClientNode, ClientHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{iiop_timeout, 6}, + {iiop_connection_timeout, 3}, + {iiop_in_connection_timeout, 3}])), + ClientPort = orber_test_lib:remote_apply(ClientNode, orber, iiop_port, []), + + {ok, ServerNode, ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{iiop_timeout, 6}, + {iiop_connection_timeout, 3}, + {iiop_in_connection_timeout, 12}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + + ?match(ok, orber_test_lib:remote_apply(ServerNode, orber_test_lib, + install_test_data, + [timeout])), + + %% Tell client_orb to interoperate with server_orb. + ?match(ok, orber_test_lib:remote_apply(ClientNode, orber_test_lib, + lookup, + [ServerHost, ServerPort])), + %% Interop worked fine, perform delay tests. + ?match(ok, orber_test_lib:remote_apply(ClientNode, orber_test_lib, + timeouts, + [ServerHost, ServerPort, 6000])), + + %% Create a connection to the "client_orb", which will now act as server. + ?match({'IOP_IOR',_,_}, + corba:string_to_object("corbaloc::1.2@"++ClientHost++":"++integer_to_list(ClientPort)++"/NameService")), + %% Check that the connection is established. + ?match([{_, ClientPort}], orber:iiop_connections(out)), + %% Wait >3 seconds (i.e. iiop_in_connection_timeout) and check if the connection + %% have been closed. + timer:sleep(8000), + ?match([], orber:iiop_connections(out)), + + ?match(ok, orber_test_lib:remote_apply(ServerNode, orber_test_lib, + uninstall_test_data, + [timeout])), + ok. + +iiop_timeout_added_api(doc) -> ["IIOP TIMEOUT API tests", + "This case test if timeout configuration behaves correctly"]; +iiop_timeout_added_api(suite) -> []; +iiop_timeout_added_api(_Config) -> + IP = orber_test_lib:get_host(), + {ok, Node, _Host} = ?match({ok,_,_}, orber_test_lib:js_node([])), + Port = 1 + orber_test_lib:remote_apply(Node, orber, iiop_port, []), + ?match({ok, _}, + orber_test_lib:remote_apply(Node, orber, + add_listen_interface, + [IP, normal, + [{iiop_in_connection_timeout, 3}, + {flags, ?ORB_ENV_LOCAL_INTERFACE}, + {iiop_port, Port}]])), + + ?match(ok, orber_test_lib:remote_apply(Node, orber_test_lib, + install_test_data, + [timeout])), + + ?match({'IOP_IOR',_,_}, + corba:string_to_object("corbaloc::1.2@"++IP++":"++integer_to_list(Port)++"/NameService")), + %% Check that the connection is established. + ?match([{_, Port}], orber:iiop_connections(out)), + %% Wait >3 seconds (i.e. iiop_in_connection_timeout) and check if the connection + %% have been closed. + timer:sleep(8000), + ?match([], orber:iiop_connections(out)), + + ?match(ok, orber_test_lib:remote_apply(Node, orber_test_lib, + uninstall_test_data, + [timeout])), + ok. + +%%----------------------------------------------------------------- +%% API tests for ORB to ORB using pseudo call/cast, no security +%%----------------------------------------------------------------- + +multi_pseudo_orber_api(doc) -> + ["MULTI ORB PSEUDO API tests", + "This case test if data encode/decode (IIOP) for pseudo objects", + "produce the correct result, i.e., the test_server echos", + "the input parameter or an exception is raised (MARSHAL)."]; +multi_pseudo_orber_api(suite) -> []; +multi_pseudo_orber_api(_Config) -> + %% --- Create a slave-node --- + {ok, Node, Host} = + ?match({ok,_,_}, orber_test_lib:js_node()), + Port = orber_test_lib:remote_apply(Node, orber, iiop_port, []), + + ?match(ok, orber_test_lib:remote_apply(Node, orber_test_lib, + install_test_data, + [pseudo])), + + NSR = ?match({'IOP_IOR',"IDL:omg.org/CosNaming/NamingContextExt:1.0",_}, + corba:string_to_object("corbaloc::1.1@"++Host++":"++ + integer_to_list(Port)++"/NameService")), + Obj = + ?match({'IOP_IOR',"IDL:omg.org/orber_test/server:1.0",_}, + 'CosNaming_NamingContext':resolve(NSR, lname:new(["mamba"]))), + orber_test_lib:corba_object_tests(Obj, NSR), + + %% Can we even contact the object? + ?match(ok, orber_test_server:print(Obj)), + + %% Invoke one blocking call followed by several invokations. + spawn(?MODULE, pseudo_calls, [5, Obj]), + ?match({ok, 10000}, orber_test_server:pseudo_call_delay(Obj, 10000)), + spawn(?MODULE, pseudo_casts, [5, Obj]), + ?match(ok, orber_test_server:pseudo_cast_delay(Obj, 10000)), + + %%--- Testing code and decode arguments --- + orber_test_lib:test_coding(Obj), + + %% Test if exit is handled properly. + ?match({'EXCEPTION',{'TRANSIENT',_,_,_}}, + orber_test_server:stop_brutal(Obj)), + + ?match(ok, orber_test_lib:remote_apply(Node, orber_test_lib, + uninstall_test_data, + [pseudo])), + ok. + + +%%----------------------------------------------------------------- +%% API tests for ORB to ORB with local flags definition set. +%%----------------------------------------------------------------- +flags_added_api(doc) -> + ["MULTI ORB PSEUDO with local flags definition set"]; +flags_added_api(suite) -> []; +flags_added_api(_Config) -> + %% --- Create a slave-node --- + IP = orber_test_lib:get_host(), + {ok, Node, _Host} = + ?match({ok,_,_}, orber_test_lib:js_node([])), + Port = 1 + orber_test_lib:remote_apply(Node, orber, iiop_port, []), + ?match({ok, _}, + orber_test_lib:remote_apply(Node, orber, + add_listen_interface, + [IP, normal, + [{flags, (?ORB_ENV_LOCAL_INTERFACE bor + ?ORB_ENV_EXCLUDE_CODESET_COMPONENT)}, + {iiop_port, Port}]])), + + ?match(ok, orber_test_lib:remote_apply(Node, orber_test_lib, + install_test_data, + [pseudo])), + Obj = ?match({'IOP_IOR',"IDL:omg.org/orber_test/server:1.0",_}, + corba:string_to_object("corbaname::1.1@"++IP++":"++ + integer_to_list(Port)++"/NameService#mamba")), + ?match({'external', {IP, Port, _ObjectKey, _Counter, + #'IOP_TaggedProfile'{tag=?TAG_INTERNET_IOP, + profile_data= + #'IIOP_ProfileBody_1_1'{components=[]}}, + _NewHD}}, + iop_ior:get_key(Obj)), + ?match(ok, orber_test_lib:remote_apply(Node, orber_test_lib, + uninstall_test_data, + [pseudo])), + + ok. + + + +%%----------------------------------------------------------------- +%% API tests for ORB to ORB with limited concurrent requests +%%----------------------------------------------------------------- +max_requests_api(doc) -> + ["MULTI ORB PSEUDO with limited concurrent requests tests"]; +max_requests_api(suite) -> []; +max_requests_api(_Config) -> + %% --- Create a slave-node --- + {ok, Node, Host} = + ?match({ok,_,_}, orber_test_lib:js_node([{iiop_max_in_requests, 1}])), + Port = orber_test_lib:remote_apply(Node, orber, iiop_port, []), + max_requests(Node, Host, Port). + +max_requests_added_api(doc) -> + ["MULTI ORB PSEUDO with limited concurrent requests tests"]; +max_requests_added_api(suite) -> []; +max_requests_added_api(_Config) -> + %% --- Create a slave-node --- + [IP] = ?match([_], orber:host()), + {ok, Node, _Host} = + ?match({ok,_,_}, orber_test_lib:js_node([])), + Port = 1 + orber_test_lib:remote_apply(Node, orber, iiop_port, []), + ?match({ok, _}, + orber_test_lib:remote_apply(Node, orber, + add_listen_interface, + [IP, normal, + [{iiop_max_in_requests, 1}, + {flags, ?ORB_ENV_LOCAL_INTERFACE}, + {iiop_port, Port}]])), + max_requests(Node, IP, Port). + +max_requests(Node, Host, Port) -> + ?match(ok, orber_test_lib:remote_apply(Node, orber_test_lib, + install_test_data, + [pseudo])), + Obj = ?match({'IOP_IOR',"IDL:omg.org/orber_test/server:1.0",_}, + corba:string_to_object("corbaname::1.1@"++Host++":"++ + integer_to_list(Port)++"/NameService#mamba")), + + %% Can we even contact the object? + ?match(ok, orber_test_server:print(Obj)), + + %% Invoke one blocking call followed by several invokations. + spawn(orber_test_server, pseudo_call_delay, [Obj, 15000]), + %% Wait for a second to be sure that the previous request has been sent + timer:sleep(1000), + {MegaSecsB, Before, _} = now(), + pseudo_calls(5, Obj), + {MegaSecsA, After, _} = now(), + %% Normally we we can perform hundreds of pseudo-calls per second. Hence, + %% if we add 8 seconds to 'Before' it should still be less since we only + %% allow one request at a time to the target ORB. + ?match(true, (MegaSecsB + (Before+8)*1000000) < (MegaSecsA + After*1000000)), + + ?match(ok, orber_test_lib:remote_apply(Node, orber_test_lib, + uninstall_test_data, + [pseudo])), + + ok. + +%%----------------------------------------------------------------- +%% API tests for ORB to ORB with limited concurrent connections +%%----------------------------------------------------------------- +max_connections_api(doc) -> + ["MULTI ORB PSEUDO with limited concurrent connections tests"]; +max_connections_api(suite) -> []; +max_connections_api(_Config) -> + %% --- Create a slave-node --- + {ok, ServerNode, ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{iiop_backlog, 0}, + {iiop_max_in_connections, 2}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + ?match(ok, orber_test_lib:remote_apply(ServerNode, orber_test_lib, + install_test_data, + [nameservice])), + + %% Claim connection 1 & 2 + Obj = ?match({'IOP_IOR',"IDL:omg.org/orber_test/server:1.0",_}, + corba:string_to_object("corbaname::1.2@"++ServerHost++":"++ + integer_to_list(ServerPort)++"/NameService#mamba")), + %% Claim backlog + {ok, ClientNode, _ClientHost} = + ?match({ok,_,_}, orber_test_lib:js_node()), + + spawn(ClientNode, orber_test_server, print, [Obj]), + timer:sleep(5000), + ?match([_], orber_test_lib:remote_apply(ClientNode, orber, + iiop_connections, [])), + + %% Try to connect. Should fail. Due to the behavior of different TCP stacks, backlog 1 + %% might not be the precise value. Hence, we also need to define the iiop_timeout. Otherwise + %% this test case will fail. For the same reason we must GC this connection. + {ok, ClientNodeII, _ClientHostII} = + ?match({ok,_,_}, orber_test_lib:js_node([{iiop_setup_connection_timeout, 5}, + {iiop_timeout, 5}, + {iiop_connection_timeout, 8}])), + + ?match({'EXCEPTION', _}, + orber_test_lib:remote_apply(ClientNodeII, orber_test_server, + testing_iiop_string, [Obj, "Fail"])), + + %% Remove 2 connections. We need to wait a moment so that both sides has detected it. + timer:sleep(5000), + ?match([_,_], orber:iiop_connections()), + ?match(ok, orber_iiop_pm:close_connection([{ServerHost, ServerPort}])), + timer:sleep(5000), + [{Host, Port}] = ?match([_], orber:iiop_connections()), + ?match(ok, orber_iiop_pm:close_connection([{Host, Port}])), + timer:sleep(5000), + ?match([], orber:iiop_connections()), + + ?match([_], orber_test_lib:remote_apply(ClientNode, orber, + iiop_connections, [])), + + ?match([], orber_test_lib:remote_apply(ClientNodeII, orber, + iiop_connections, [])), + + ?match({ok, "OK"}, + orber_test_lib:remote_apply(ClientNodeII, orber_test_server, + testing_iiop_string, [Obj, "OK"])), + + timer:sleep(4000), + ?match([_], orber_test_lib:remote_apply(ClientNodeII, orber, + iiop_connections, [])), + + ?match(ok, orber_test_lib:remote_apply(ServerNode, orber_test_lib, + uninstall_test_data, + [pseudo])), + + ok. + + +%%----------------------------------------------------------------- +%% API tests for terminating connection by using an IOR. +%%----------------------------------------------------------------- +close_connections_api(doc) -> + ["Close outgoing connection "]; +close_connections_api(suite) -> []; +close_connections_api(_Config) -> + %% --- Create a slave-node --- + IP = orber_test_lib:get_host(), + Loopback = orber_test_lib:get_loopback_interface(), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{ip_address, IP}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + ?match(ok, orber_test_lib:remote_apply(ServerNode, orber_test_lib, + install_test_data, + [nameservice])), + orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + IP = orber_test_lib:get_host(), + + %% Create a connection + Obj = ?match({'IOP_IOR',"IDL:omg.org/orber_test/server:1.0",_}, + corba:string_to_object("corbaname::1.2@"++IP++":"++ + integer_to_list(ServerPort)++"/NameService#mamba")), + %% Check that it's up. + ?match([{IP, ServerPort}], orber:iiop_connections(out)), + %% Try to close using the wronge interface. + ?match(ok, orber:close_connection(Obj, Loopback)), + %% Should still be up. + ?match([{IP, ServerPort}], orber:iiop_connections(out)), + %% Try to close it properly + ?match(ok, orber:close_connection(Obj)), + %% Wait a moment so that both sides has detected it. + timer:sleep(5000), + %% Worked? + ?match([], orber:iiop_connections(out)), + ok. + + +close_connections_local_interface_api(doc) -> + ["IIOP Local Interface disconnect tests", + "This case test if the server ORB use the correct", + "local interface when connecting to another ORB"]; +close_connections_local_interface_api(suite) -> []; +close_connections_local_interface_api(_Config) -> + IP = orber_test_lib:get_host(), + Loopback = orber_test_lib:get_loopback_interface(), + {ok, ClientNode, _ClientHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{ip_address_local, Loopback}])), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{ip_address, IP}])), + Port = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + IOR = ?match(#'IOP_IOR'{}, + orber_test_lib:remote_apply(ClientNode, corba, string_to_object, + ["corbaloc::1.2@"++IP++":"++integer_to_list(Port)++"/NameService"])), + + %% Check that the connnection is up and running using the default interface + ?match([{Loopback,_RemotePort}], orber_test_lib:remote_apply(ServerNode, orber, + iiop_connections, [in])), + ?match([{IP, Port}], + orber_test_lib:remote_apply(ClientNode, orber, + iiop_connections, [out])), + %% Try to close the connection + ?match(ok, orber_test_lib:remote_apply(ClientNode, orber, + close_connection, [IOR])), + %% Wait a moment so that both sides has detected it. + timer:sleep(5000), + %% Now the connection shall be gone. + ?match([], orber_test_lib:remote_apply(ClientNode, orber, + iiop_connections, [out])), + ?match([], orber_test_lib:remote_apply(ServerNode, orber, + iiop_connections, [in])), + + ok. + +close_connections_local_interface_ctx_override_api(doc) -> + ["IIOP Local Interface disconnect tests", + "This case test if the server ORB use the correct", + "local interface when connecting to another ORB"]; +close_connections_local_interface_ctx_override_api(suite) -> []; +close_connections_local_interface_ctx_override_api(_Config) -> + IP = orber_test_lib:get_host(), + Loopback = orber_test_lib:get_loopback_interface(), + {ok, ClientNode, _ClientHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{ip_address_local, IP}, + {ip_address, IP}])), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{ip_address, IP}])), + Port = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + IOR = ?match(#'IOP_IOR'{}, + orber_test_lib:remote_apply(ClientNode, corba, string_to_object, + ["corbaloc::1.2@"++IP++":"++integer_to_list(Port)++"/NameService", + [#'IOP_ServiceContext' + {context_id=?ORBER_GENERIC_CTX_ID, + context_data = {interface, Loopback}}]])), + + timer:sleep(2000), + %% Check that the connnection is up and running using the default interface + ?match([{Loopback,_RemotePort}], orber_test_lib:remote_apply(ServerNode, orber, + iiop_connections, [in])), + + ?match([{IP, Port, Loopback}], + orber_test_lib:remote_apply(ClientNode, orber, + iiop_connections, [out])), + %% Try to close not supplying the interface. + ?match(ok, orber_test_lib:remote_apply(ClientNode, orber, + close_connection, [IOR])), + + timer:sleep(2000), + %% The connection shall still be up and running + ?match([{Loopback,_RemotePort}], orber_test_lib:remote_apply(ServerNode, orber, + iiop_connections, [in])), + ?match([{IP, Port, Loopback}], + orber_test_lib:remote_apply(ClientNode, orber, + iiop_connections, [out])), + %% Try to close not supplying the interface. + ?match(ok, orber_test_lib:remote_apply(ClientNode, orber, + close_connection, [IOR, IP])), + + timer:sleep(2000), + %% The connection shall still be up and running + ?match([{Loopback,_RemotePort}], orber_test_lib:remote_apply(ServerNode, orber, + iiop_connections, [in])), + ?match([{IP, Port, Loopback}], + orber_test_lib:remote_apply(ClientNode, orber, + iiop_connections, [out])), + + %% Try to close supplying the correct interface. + ?match(ok, orber_test_lib:remote_apply(ClientNode, orber, + close_connection, [IOR, Loopback])), + %% Wait a moment so that both sides has detected it. + timer:sleep(5000), + %% Now the connection shall be gone. + ?match([], orber_test_lib:remote_apply(ServerNode, orber, + iiop_connections, [in])), + ?match([], orber_test_lib:remote_apply(ClientNode, orber, + iiop_connections, [out])), + ok. + +close_connections_alt_iiop_addr_api(doc) -> + ["IIOP alternate address disconnect tests", + "This case test if the server ORB use the correct", + "local interface when connecting to another ORB"]; +close_connections_alt_iiop_addr_api(suite) -> []; +close_connections_alt_iiop_addr_api(_Config) -> + %% --- Create a slave-node --- + Loopback = orber_test_lib:get_loopback_interface(), + IP = orber_test_lib:get_host(), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{giop_version, {1, 2}}, + {ip_address, {multiple, [IP, Loopback]}}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + ?match(ok, orber_test_lib:remote_apply(ServerNode, orber_test_lib, + install_test_data, + [{nameservice, Loopback, ServerPort}])), + %% Create two connections + Obj = ?match({'IOP_IOR',"IDL:omg.org/orber_test/server:1.0",_}, + corba:string_to_object("corbaname::1.2@"++IP++":"++ + integer_to_list(ServerPort)++"/NameService#mamba")), + ?match({'IOP_IOR',"IDL:omg.org/orber_test/server:1.0",_}, + corba:string_to_object("corbaname::1.2@"++Loopback++":"++ + integer_to_list(ServerPort)++"/NameService#mamba")), + timer:sleep(2000), + %% The connection shall still be up and running + ?match([{_,_}, {_,_}], orber:iiop_connections(out)), + ?match([{_,_}, {_,_}], + orber_test_lib:remote_apply(ServerNode, orber, + iiop_connections, [in])), + + %% Try to close the connection + ?match(ok, orber:close_connection(Obj)), + %% Wait a moment so that both sides has detected it. + timer:sleep(5000), + %% Now the connections shall be gone. + ?match([], orber:iiop_connections(out)), + ?match([], orber_test_lib:remote_apply(ServerNode, orber, + iiop_connections, [in])), + ok. + +close_connections_multiple_profiles_api(doc) -> + ["IIOP alternate address disconnect tests", + "This case test if the server ORB use the correct", + "local interface when connecting to another ORB"]; +close_connections_multiple_profiles_api(suite) -> []; +close_connections_multiple_profiles_api(_Config) -> + IP = orber_test_lib:get_host(), + Loopback = orber_test_lib:get_loopback_interface(), + %% --- Create a slave-node --- + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{ip_address, + {multiple, [Loopback, IP]}}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + ?match(ok, orber_test_lib:remote_apply(ServerNode, orber_test_lib, + install_test_data, [nameservice])), + %% Create two connections + Obj = ?match({'IOP_IOR',"IDL:omg.org/orber_test/server:1.0",_}, + corba:string_to_object("corbaname::1.2@"++IP++":"++ + integer_to_list(ServerPort)++"/NameService#mamba")), + ?match({'IOP_IOR',"IDL:omg.org/orber_test/server:1.0",_}, + corba:string_to_object("corbaname::1.2@"++Loopback++":"++ + integer_to_list(ServerPort)++"/NameService#mamba")), + %% The connection shall still be up and running + ?match([{_,_}, {_,_}], orber:iiop_connections(out)), + ?match([{_,_}, {_,_}], + orber_test_lib:remote_apply(ServerNode, orber, + iiop_connections, [in])), + + %% Try to close the connection + ?match(ok, orber:close_connection(Obj)), + %% Wait a moment so that both sides has detected it. + timer:sleep(5000), + %% Now the connections shall be gone. + ?match([], orber:iiop_connections(out)), + ?match([], orber_test_lib:remote_apply(ServerNode, orber, + iiop_connections, [in])), + ok. + +%%----------------------------------------------------------------- +%% API tests for ORB to ORB with iiop_packet_size set +%%----------------------------------------------------------------- +max_packet_size_exceeded_api(doc) -> + ["Exceed the maximum request size"]; +max_packet_size_exceeded_api(suite) -> []; +max_packet_size_exceeded_api(_Config) -> + case catch gen_tcp:listen(0, [{packet,cdr}, {packet_size, 14}]) of + {'EXIT',badarg} -> + {skipped, "The inet option {packet_size, Max} not supported"}; + {ok, LS} -> + (catch gen_tcp:close(LS)), + %% --- Create a slave-node --- + {ok, ServerNode, ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{iiop_packet_size, 1}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, + iiop_port, []), + ?match({'EXCEPTION', #'CosNaming_NamingContextExt_InvalidAddress'{}}, + corba:string_to_object("corbaloc::1.2@"++ServerHost++":"++integer_to_list(ServerPort)++"/NameService")), + ok + end. + +%%----------------------------------------------------------------- +%% API tests for ORB to ORB with iiop_packet_size set +%%----------------------------------------------------------------- +max_packet_size_ok_api(doc) -> + ["Not exceed the maximum request size"]; +max_packet_size_ok_api(suite) -> []; +max_packet_size_ok_api(_Config) -> + case catch gen_tcp:listen(0, [{packet,cdr}, {packet_size, 14}]) of + {'EXIT',badarg} -> + {skipped, "The inet option {packet_size, Max} not supported"}; + {ok, LS} -> + (catch gen_tcp:close(LS)), + %% --- Create a slave-node --- + {ok, ServerNode, ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{iiop_packet_size, 5000}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, + iiop_port, []), + ?match({'IOP_IOR',_,_}, + corba:string_to_object("corbaloc::1.2@"++ServerHost++":"++integer_to_list(ServerPort)++"/NameService")), + ok + end. + + + +%%----------------------------------------------------------------- +%% API tests for ORB to ORB, no security +%%----------------------------------------------------------------- + +light_ifr_api(doc) -> ["LIGHT IFR ORB API tests"]; +light_ifr_api(suite) -> []; +light_ifr_api(_Config) -> + + {ok, ClientNode, _ClientHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, 128}])), + + ?match([_,_,_,_], orber_test_lib:remote_apply(ClientNode, orber, get_tables, [])), + ?match(ok, orber_test_lib:remote_apply(ClientNode, orber_test_lib, + install_test_data, + [nameservice])), + + + {ok, ServerNode, ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, 128}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + ?match(ok, orber_test_lib:remote_apply(ServerNode, orber_test_lib, + install_test_data, + [nameservice])), + ?match([_,_,_,_], orber_test_lib:remote_apply(ServerNode, orber, get_tables, [])), + + Obj = ?match({'IOP_IOR',_,_}, + corba:string_to_object("corbaname::1.2@"++ServerHost++":"++integer_to_list(ServerPort)++"/NameService#mamba")), + ?match(ok, orber_test_lib:remote_apply(ClientNode, orber_test_lib, test_coding, [Obj])), + + ?match(0, orber_test_lib:remote_apply(ClientNode, orber_diagnostics, missing_modules, [])), + + ?match(ok, orber_test_lib:remote_apply(ClientNode, mnesia, dirty_write, + [#orber_light_ifr{id = "FakeId1", + module=non_existing, + type=?IFR_StructDef}])), + ?match(ok, orber_test_lib:remote_apply(ClientNode, mnesia, dirty_write, + [#orber_light_ifr{id = "FakeId2", + module=non_existing, + type=?IFR_UnionDef}])), + ?match(ok, orber_test_lib:remote_apply(ClientNode, mnesia, dirty_write, + [#orber_light_ifr{id = "FakeId3", + module=non_existing, + type=?IFR_ExceptionDef}])), + ?match(ok, orber_test_lib:remote_apply(ClientNode, mnesia, dirty_write, + [#orber_light_ifr{id = "FakeId4", + module=non_existing, + type=?IFR_InterfaceDef}])), + ?match(ok, orber_test_lib:remote_apply(ClientNode, mnesia, dirty_write, + [#orber_light_ifr{id = "FakeId5", + module=orber_test_lib, + type=?IFR_InterfaceDef}])), + ?match(5, orber_test_lib:remote_apply(ClientNode, orber_diagnostics, missing_modules, [])), + + + ?match(ok, mnesia:dirty_write(#ir_UnionDef{ir_Internal_ID = "FakedIId1", + absolute_name="::Module::NonExisting"})), + ?match(ok, mnesia:dirty_write(#ir_StructDef{ir_Internal_ID = "FakedIId2", + absolute_name="::Module::NonExisting"})), + ?match(ok, mnesia:dirty_write(#ir_ExceptionDef{ir_Internal_ID = "FakedIId3", + absolute_name="::Module::NonExisting"})), + ?match(ok, mnesia:dirty_write(#ir_InterfaceDef{ir_Internal_ID = "FakedIId4", + absolute_name="::Module::NonExisting"})), + ?match(ok, mnesia:dirty_write(#ir_InterfaceDef{ir_Internal_ID = "FakedIId5", + absolute_name="::orber::test::lib"})), + + ?match(5, orber_diagnostics:missing_modules()), + + ?match(ok, orber_test_lib:remote_apply(ServerNode, orber_test_lib, + uninstall_test_data, + [nameservice])), + ?match(ok, orber_test_lib:remote_apply(ClientNode, orber_test_lib, + uninstall_test_data, + [nameservice])), + ok. + +%%----------------------------------------------------------------- +%% API tests for ORB to ORB, no security +%%----------------------------------------------------------------- + +light_orber_api(doc) -> ["LIGHT ORB API tests", + "This case test if a light Orber can communicate correctly", + "with an fully installed Orber."]; +light_orber_api(suite) -> []; +light_orber_api(_Config) -> + %% --- Create a slave-node --- + LocalHost = net_adm:localhost(), + {ok, Node, _Host} = + ?match({ok,_,_}, orber_test_lib:js_node([{lightweight, ["iiop://"++LocalHost++":"++integer_to_list(orber:iiop_port())]}], + lightweight)), + ?match(ok, orber:info(io)), + ?match([_], orber_test_lib:remote_apply(Node, orber_env, get_lightweight_nodes,[])), + + ?match(ok, orber_test_lib:remote_apply(Node, orber_test_lib, + install_test_data, + [light])), + + Obj1=(catch orber_test_server:oe_create(state,[{pseudo,true}])), + ?match({_,pseudo,orber_test_server_impl, _,_, _}, Obj1), + Obj2=(catch orber_test_server:oe_create(state,[])), + ?match({_,key,_, _,_, _}, Obj2), + + NS = corba:resolve_initial_references("NameService"), + 'CosNaming_NamingContext':bind(NS, lname:new(["mamba"]), Obj1), + 'CosNaming_NamingContext':bind(NS, lname:new(["viper"]), Obj2), + + ?match(ok, orber_test_lib:remote_apply(Node, orber_test_lib, + light_tests, + [LocalHost, + orber:iiop_port(), "viper"])), + ?match(ok, orber_test_lib:remote_apply(Node, orber_test_lib, + light_tests, + [LocalHost, + orber:iiop_port(), "mamba"])), + + %% Clean up. + + catch corba:dispose(Obj1), + catch corba:dispose(Obj2), + catch 'CosNaming_NamingContext':destroy(NS), + + ?match(ok, orber_test_lib:remote_apply(Node, orber_test_lib, + uninstall_test_data, + [light])), + ok. +%%----------------------------------------------------------------- +%% API tests for ORB to ORB, no security +%%----------------------------------------------------------------- + +light_orber2_api(doc) -> ["LIGHT ORB API tests", + "This case test if a light Orber can communicate correctly", + "with an fully installed Orber. This case test if we can", + "start as lightweight without first setting the environment", + "variable"]; +light_orber2_api(suite) -> []; +light_orber2_api(_Config) -> + %% --- Create a slave-node --- + LocalHost = net_adm:localhost(), + {ok, Node, _Host} = + ?match({ok,_,_}, orber_test_lib:js_node([], + {lightweigth, ["iiop://"++LocalHost++":"++integer_to_list(orber:iiop_port())]})), + ?match(ok, orber:info(io)), + ?match([_], orber_test_lib:remote_apply(Node, orber_env, get_lightweight_nodes,[])), + + ?match(ok, orber_test_lib:remote_apply(Node, orber_test_lib, + install_test_data, + [light])), + + Obj1=(catch orber_test_server:oe_create(state,[{pseudo,true}])), + ?match({_,pseudo,orber_test_server_impl, _,_, _}, Obj1), + Obj2=(catch orber_test_server:oe_create(state,[])), + ?match({_,key,_, _,_, _}, Obj2), + + NS = corba:resolve_initial_references("NameService"), + 'CosNaming_NamingContext':bind(NS, lname:new(["mamba"]), Obj1), + 'CosNaming_NamingContext':bind(NS, lname:new(["viper"]), Obj2), + + ?match(ok, orber_test_lib:remote_apply(Node, orber_test_lib, + light_tests, + [LocalHost, + orber:iiop_port(), "viper"])), + ?match(ok, orber_test_lib:remote_apply(Node, orber_test_lib, + light_tests, + [LocalHost, + orber:iiop_port(), "mamba"])), + + %% Clean up. + + catch corba:dispose(Obj1), + catch corba:dispose(Obj2), + catch 'CosNaming_NamingContext':destroy(NS), + + ?match(ok, orber_test_lib:remote_apply(Node, orber_test_lib, + uninstall_test_data, + [light])), + ok. + +%%----------------------------------------------------------------- +%% API tests for ORB to ORB, no security +%%----------------------------------------------------------------- + +multi_orber_api(doc) -> ["MULTI ORB API tests", + "This case test if data encode/decode (IIOP)", + "produce the correct result, i.e., the test_server echos", + "the input parameter or an exception is raised (MARSHAL)."]; +multi_orber_api(suite) -> []; +multi_orber_api(_Config) -> + + NewICObj1 = ?match({_,_,_,_,_,_}, orber_test_server:oe_create([])), + NewICObj2 = ?match({_,_,_,_,_,_}, orber_test_server:oe_create([], [{regname, {local, newic2}}])), + NewICObj3 = ?match({_,_,_,_,_,_}, orber_test_server:oe_create([], [{regname, {global, newic3}}])), + ?match(ok, orber_test_server:print(NewICObj1)), + ?match(ok, orber_test_server:print(NewICObj2)), + ?match(ok, orber_test_server:print(NewICObj3)), + catch corba:dispose(NewICObj1), + catch corba:dispose(NewICObj2), + catch corba:dispose(NewICObj3), + + %% --- Create a slave-node --- + {ok, Node, Host} = + ?match({ok,_,_}, orber_test_lib:js_node()), + Port = orber_test_lib:remote_apply(Node, orber, iiop_port, []), + + ?match(ok, orber_test_lib:remote_apply(Node, orber_test_lib, + install_test_data, + [nameservice])), + + NSR = ?match({'IOP_IOR',"IDL:omg.org/CosNaming/NamingContextExt:1.0",_}, + corba:string_to_object("corbaloc::1.2@"++Host++":"++ + integer_to_list(Port)++"/NameService")), + + ?match({'EXCEPTION',{'CosNaming_NamingContext_NotFound',_,_,_}}, + 'CosNaming_NamingContext':resolve(NSR, lname:new(["not_exist"]))), + + Obj = ?match({'IOP_IOR',"IDL:omg.org/orber_test/server:1.0",_}, + 'CosNaming_NamingContext':resolve(NSR, lname:new(["mamba"]))), + ?match(ok, orber_test_server:print(Obj)), + + Obj12B = ?match({'IOP_IOR',_,_}, + corba:string_to_object("corbaloc::1.2@"++Host++":"++integer_to_list(Port)++"/Mamba")), + + Obj11B = ?match({'IOP_IOR',_,_}, + corba:string_to_object("corbaloc::1.1@"++Host++":"++integer_to_list(Port)++"/Mamba")), + + Obj10B = ?match({'IOP_IOR',_,_}, + corba:string_to_object("corbaloc::1.0@"++Host++":"++integer_to_list(Port)++"/Mamba")), + + context_test(Obj12B), + context_test(Obj11B), + + ?match(ok, orber_test_server:print(Obj12B)), + ?match(ok, orber_test_server:print(Obj11B)), + ?match(ok, orber_test_server:print(Obj10B)), + ?match({'EXCEPTION',{'CosNaming_NamingContextExt_InvalidAddress',_}}, + corba:string_to_object("corbaloc::1.0@"++Host++":"++integer_to_list(Port)++"/Wrong")), + + ?match(ok, orber_test_lib:corba_object_tests(Obj12B, NSR)), + ?match(ok, orber_test_lib:corba_object_tests(Obj11B, NSR)), + ?match(ok, orber_test_lib:corba_object_tests(Obj10B, NSR)), + + %%--- Testing code and decode arguments --- + orber_test_lib:test_coding(Obj), + + ?match({'EXCEPTION',#'BAD_CONTEXT'{}}, + orber_test_server: + print(Obj12B, + [{context, + [#'IOP_ServiceContext'{context_id=?ORBER_GENERIC_CTX_ID, + context_data = {interface, + {127,0,0,1}}}]}])), + + ?match({'EXCEPTION',{'TRANSIENT',_,_,_}}, + orber_test_server:stop_brutal(Obj12B)), + ?match({'EXCEPTION',{'TRANSIENT',_,_,_}}, + orber_test_server:print(Obj12B)), + + ?match(ok, orber_test_lib:remote_apply(Node, orber_test_lib, + uninstall_test_data, + [nameservice])), + ok. + + +%%----------------------------------------------------------------- +%% API tests for ORB to ORB, no security, using basic interceptors +%%----------------------------------------------------------------- +basic_PI_api(doc) -> ["MULTI ORB API tests", + "This case test if data encode/decode (IIOP)", + "produce the correct result when using basic interceptors,", + "i.e., the test_server echos", + "the input parameter or an exception is raised (MARSHAL)."]; +basic_PI_api(suite) -> []; +basic_PI_api(_Config) -> + %% Change configuration to use Basic Interceptors. + orber:configure_override(interceptors, {native, [orber_test_lib]}), + %% --- Create a slave-node --- + {ok, Node, Host} = + ?match({ok,_,_}, orber_test_lib:js_node([{interceptors, {native, [orber_test_lib]}}])), + Port = orber_test_lib:remote_apply(Node, orber, iiop_port, []), + + ?match(ok, orber_test_lib:remote_apply(Node, orber_test_lib, + install_test_data, + [nameservice])), + + Obj12 = ?match({'IOP_IOR',"IDL:omg.org/orber_test/server:1.0",_}, + corba:string_to_object("corbaname::1.2@"++Host++":"++integer_to_list(Port)++"/NameService#mamba")), + + Obj11 = ?match({'IOP_IOR',"IDL:omg.org/orber_test/server:1.0",_}, + corba:string_to_object("corbaname::1.1@"++Host++":"++integer_to_list(Port)++"/NameService#mamba")), + + Obj10 = ?match({'IOP_IOR',"IDL:omg.org/orber_test/server:1.0",_}, + corba:string_to_object("corbaname::1.0@"++Host++":"++integer_to_list(Port)++"/NameService#mamba")), + + ?match(ok, corba:print_object(Obj12)), + ?match(ok, corba:print_object(Obj11, error_report)), + ?match(ok, corba:print_object(Obj10, {error_report, "Reason"})), + + ?match(ok, orber_test_server:print(Obj12)), + ?match(ok, orber_test_server:print(Obj11)), + ?match(ok, orber_test_server:print(Obj10)), + + + Obj12B = ?match({'IOP_IOR',_,_}, + corba:string_to_object("corbaloc::1.2@"++Host++":"++integer_to_list(Port)++"/Mamba")), + + Obj11B = ?match({'IOP_IOR',_,_}, + corba:string_to_object("corbaloc::1.1@"++Host++":"++integer_to_list(Port)++"/Mamba")), + + Obj10B = ?match({'IOP_IOR',_,_}, + corba:string_to_object("corbaloc::1.0@"++Host++":"++integer_to_list(Port)++"/Mamba")), + + ?match(ok, corba:print_object(Obj12B, info_msg)), + ?match(ok, corba:print_object(Obj11B, {info_msg, "Comment"})), + ?match([_|_], corba:print_object(Obj10B, string)), + + ?match(ok, orber_test_server:print(Obj12B)), + ?match(ok, orber_test_server:print(Obj11B)), + ?match(ok, orber_test_server:print(Obj10B)), + ?match({'EXCEPTION',{'CosNaming_NamingContextExt_InvalidAddress',_}}, + corba:string_to_object("corbaloc::1.0@"++Host++":"++integer_to_list(Port)++"/Wrong")), + + ?match(ok, orber_test_lib:alternate_iiop_address(Host, Port)), + + context_test(Obj12B), + context_test(Obj11B), + + %%--- Testing code and decode arguments --- + orber_test_lib:test_coding(Obj12), + orber_test_lib:test_coding(Obj11), + orber_test_lib:test_coding(Obj10), + + application:set_env(orber, interceptors, false), + + ?match(ok, orber_test_lib:remote_apply(Node, orber_test_lib, + uninstall_test_data, + [nameservice])), + ok. + + +%%----------------------------------------------------------------- +%% API tests for ORB to ORB, ssl security depth 1 +%%----------------------------------------------------------------- + +ssl_1_multi_orber_api(doc) -> ["SECURE MULTI ORB API tests (SSL depth 1)", + "This case set up two secure orbs and test if they can", + "communicate. The case also test to access one of the", + "secure orbs which must raise a NO_PERMISSION exception."]; +ssl_1_multi_orber_api(suite) -> []; +ssl_1_multi_orber_api(_Config) -> + case os:type() of + vxworks -> + {skipped, "No SSL-support for VxWorks."}; + _ -> + ServerOptions = orber_test_lib:get_options(iiop_ssl, server, + 1, [{iiop_ssl_port, 0}]), + ClientOptions = orber_test_lib:get_options(iiop_ssl, client, + 1, [{iiop_ssl_port, 0}]), + ssl_suite(ServerOptions, ClientOptions), + ok + end. + +ssl_1_multi_orber_generation_3_api(doc) -> ["SECURE MULTI ORB API tests (SSL depth 1)", + "This case set up two secure orbs and test if they can", + "communicate. The case also test to access one of the", + "secure orbs which must raise a NO_PERMISSION exception."]; +ssl_1_multi_orber_generation_3_api(suite) -> []; +ssl_1_multi_orber_generation_3_api(_Config) -> + case os:type() of + vxworks -> + {skipped, "No SSL-support for VxWorks."}; + _ -> + case orber_test_lib:ssl_version() of + 3 -> + ServerOptions = orber_test_lib:get_options(iiop_ssl, server, + 1, [{ssl_generation, 3}, + {iiop_ssl_port, 0}]), + ClientOptions = orber_test_lib:get_options(iiop_ssl, client, + 1, [{ssl_generation, 3}, + {iiop_ssl_port, 0}]), + ssl_suite(ServerOptions, ClientOptions), + ok; + _ -> + {skipped, "Required SSL generation not available"} + end + end. + + +%%----------------------------------------------------------------- +%% API tests for ORB to ORB, ssl security depth 2 +%%----------------------------------------------------------------- + +ssl_2_multi_orber_api(doc) -> ["SECURE MULTI ORB API tests (SSL depth 2)", + "This case set up two secure orbs and test if they can", + "communicate. The case also test to access one of the", + "secure orbs which must raise a NO_PERMISSION exception."]; +ssl_2_multi_orber_api(suite) -> []; +ssl_2_multi_orber_api(_Config) -> + case os:type() of + vxworks -> + {skipped, "No SSL-support for VxWorks."}; + _ -> + ServerOptions = orber_test_lib:get_options(iiop_ssl, server, + 2, [{iiop_ssl_port, 0}]), + ClientOptions = orber_test_lib:get_options(iiop_ssl, client, + 2, [{iiop_ssl_port, 0}]), + ssl_suite(ServerOptions, ClientOptions), + ok + end. + +ssl_2_multi_orber_generation_3_api(doc) -> ["SECURE MULTI ORB API tests (SSL depth 2)", + "This case set up two secure orbs and test if they can", + "communicate. The case also test to access one of the", + "secure orbs which must raise a NO_PERMISSION exception."]; +ssl_2_multi_orber_generation_3_api(suite) -> []; +ssl_2_multi_orber_generation_3_api(_Config) -> + case os:type() of + vxworks -> + {skipped, "No SSL-support for VxWorks."}; + _ -> + case orber_test_lib:ssl_version() of + 3 -> + ServerOptions = orber_test_lib:get_options(iiop_ssl, server, + 2, [{ssl_generation, 3}, + {iiop_ssl_port, 0}]), + ClientOptions = orber_test_lib:get_options(iiop_ssl, client, + 2, [{ssl_generation, 3}, + {iiop_ssl_port, 0}]), + ssl_suite(ServerOptions, ClientOptions), + ok; + _ -> + {skipped, "Required SSL generation not available"} + end + end. +%%----------------------------------------------------------------- +%% API tests for ORB to ORB, ssl security depth 2 +%%----------------------------------------------------------------- + +ssl_reconfigure_api(doc) -> ["SECURE MULTI ORB API tests (SSL depth 2)", + "This case set up two secure orbs and test if they can", + "communicate. The case also test to access one of the", + "secure orbs which must raise a NO_PERMISSION exception."]; +ssl_reconfigure_api(suite) -> []; +ssl_reconfigure_api(_Config) -> + ssl_reconfigure([]). + +ssl_reconfigure_generation_3_api(doc) -> ["SECURE MULTI ORB API tests (SSL depth 2)", + "This case set up two secure orbs and test if they can", + "communicate. The case also test to access one of the", + "secure orbs which must raise a NO_PERMISSION exception."]; +ssl_reconfigure_generation_3_api(suite) -> []; +ssl_reconfigure_generation_3_api(_Config) -> + case orber_test_lib:ssl_version() of + 3 -> + ssl_reconfigure([{ssl_generation, 3}]); + + _ -> + {skipped, "Required SSL generation not available"} + end. + +ssl_reconfigure(ExtraSSLOptions) -> + case os:type() of + vxworks -> + {skipped, "No SSL-support for VxWorks."}; + _ -> + IP = orber_test_lib:get_host(), + Loopback = orber_test_lib:get_loopback_interface(), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, + orber_test_lib:js_node([{iiop_port, 0}, + {flags, ?ORB_ENV_LOCAL_INTERFACE}, + {ip_address, IP}|ExtraSSLOptions])), + orber_test_lib:remote_apply(ServerNode, ssl, start, []), + orber_test_lib:remote_apply(ServerNode, crypto, start, []), + orber_test_lib:remote_apply(ServerNode, ssl, seed, ["testing"]), + ?match(ok, orber_test_lib:remote_apply(ServerNode, orber_test_lib, + install_test_data, + [ssl])), + ?match({ok, _}, + orber_test_lib:remote_apply(ServerNode, orber, + add_listen_interface, + [Loopback, normal, [{iiop_port, 5648}, + {iiop_ssl_port, 5649}, + {interceptors, {native, [orber_iiop_tracer_silent]}}|ExtraSSLOptions]])), + ServerOptions = orber_test_lib:get_options(iiop_ssl, server, + 2, [{flags, ?ORB_ENV_LOCAL_INTERFACE}, + {iiop_port, 5648}, + {iiop_ssl_port, 5649}, + {interceptors, {native, [orber_iiop_tracer_silent]}}|ExtraSSLOptions]), + ?match({ok, _}, + orber_test_lib:remote_apply(ServerNode, orber, + add_listen_interface, + [Loopback, ssl, ServerOptions])), + + ClientOptions = orber_test_lib:get_options(iiop_ssl, client, + 2, [{iiop_ssl_port, 0}|ExtraSSLOptions]), + {ok, ClientNode, _ClientHost} = + ?match({ok,_,_}, orber_test_lib:js_node(ClientOptions)), + + ?match(ok, orber_test_lib:remote_apply(ClientNode, orber_test_lib, + install_test_data, + [ssl])), + orber_test_lib:remote_apply(ClientNode, ssl, start, []), + orber_test_lib:remote_apply(ServerNode, crypto, start, []), + orber_test_lib:remote_apply(ClientNode, ssl, seed, ["testing"]), + Obj = ?match(#'IOP_IOR'{}, + orber_test_lib:remote_apply(ClientNode, corba, + string_to_object, ["corbaname:iiop:1.1@"++Loopback++":5648/NameService#mamba", + [{context, [#'IOP_ServiceContext'{context_id=?ORBER_GENERIC_CTX_ID, + context_data = {configuration, ClientOptions}}]}]])), + ?match(ok, orber_test_lib:remote_apply(ClientNode, orber_test_server, + print, [Obj])), + + ok + end. + + + +%%----------------------------------------------------------------- +%% API tests for Orber to Java ORB, no security +%%----------------------------------------------------------------- + +%orber_java_api(doc) -> ["ERLANG-ORB <-> JAVA-ORB API tests", +% "This case test if data encode/decode (IIOP)", +% "produce the correct result, i.e., the test_server echos", +% "the input parameter or an exception is raised (MARSHAL)."]; +%orber_java_api(suite) -> []; +%orber_java_api(Config) -> +% ok. + +%%------------------------------------------------------------ +%% function : ssl_suite +%% Arguments: Config +%% Depth +%% Returns : ok +%% Effect : +%%------------------------------------------------------------ + +ssl_suite(ServerOptions, ClientOptions) -> + + {ok, ServerNode, ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node(ServerOptions)), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + SSLServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_ssl_port, []), + + {ok, ClientNode, _ClientHost} = + ?match({ok,_,_}, orber_test_lib:js_node(ClientOptions)), + + ?match(ok, orber_test_lib:remote_apply(ServerNode, orber_test_lib, + install_test_data, + [ssl])), + %% Tell the client to interoperate with the server. The purpose of this + %% operation is to look up, using NameService, an object reference and + %% use it to contact the object. + ?match(ok, orber_test_lib:remote_apply(ClientNode, orber_test_lib, + lookup, + [ServerHost, ServerPort])), + + ?match(ok, orber_test_lib:remote_apply(ClientNode, orber_test_lib, + alternate_ssl_iiop_address, + [ServerHost, ServerPort, SSLServerPort])), + + %% 'This' node is not secure. Contact the server. Must refuse connection. + NSR = ?match({'IOP_IOR',"IDL:omg.org/CosNaming/NamingContextExt:1.0",_}, + corba:string_to_object("corbaloc::1.2@"++ServerHost++":"++ + integer_to_list(ServerPort)++"/NameService")), + + %% Should be 'NO_PERMISSION'?? + ?match({'EXCEPTION',{'COMM_FAILURE',_,_,_}}, + 'CosNaming_NamingContext':resolve(NSR, lname:new(["not_exist"]))), + + %% Should be 'NO_PERMISSION'?? + ?match({'EXCEPTION',{'COMM_FAILURE',_,_,_}}, + 'CosNaming_NamingContext':resolve(NSR, lname:new(["mamba"]))), + + %% Uninstall. + ?match(ok, orber_test_lib:remote_apply(ServerNode, orber_test_lib, + uninstall_test_data, + [ssl])), + ok. + +%%----------------------------------------------------------------- +%% iiop_setup_connection_timeout API tests for ORB to ORB. +%%----------------------------------------------------------------- +setup_connection_timeout_api(doc) -> ["iiop_setup_connection_timeout API tests for ORB to ORB."]; +setup_connection_timeout_api(suite) -> []; +setup_connection_timeout_api(_Config) -> + ?match(ok, application:set_env(orber, iiop_backlog, 0)), + %% Wait to be sure that the configuration has kicked in. + timer:sleep(2000), + {ok, Ref, Port} = create_fake_server_ORB(normal, 0, [], listen, []), + ?match(ok, orber:configure(iiop_setup_connection_timeout, 5)), + ?match(ok, orber:info(io)), + IP = orber_test_lib:get_host(), + spawn(?MODULE, do_connect, [IP, Port, [{active, false}]]), + spawn(?MODULE, do_connect, [IP, Port, [{active, false}]]), + spawn(?MODULE, do_connect, [IP, Port, [{active, false}]]), + spawn(?MODULE, do_connect, [IP, Port, [{active, false}]]), + spawn(?MODULE, do_connect, [IP, Port, [{active, false}]]), + timer:sleep(2000), + Corbaloc = "corbaloc::1.2@"++IP++":"++integer_to_list(Port)++"/NameService", + ?match({'EXCEPTION', _E}, corba:string_to_object(Corbaloc)), + destroy_fake_ORB(Ref), + ?match(ok, application:set_env(orber, iiop_backlog, 5)), + ok. + +%%----------------------------------------------------------------- +%% iiop_setup_connection_timeout API tests for ORB to ORB. +%%----------------------------------------------------------------- +setup_multi_connection_timeout_api(doc) -> + ["iiop_multi_setup_connection_timeout API tests for ORB to ORB."]; +setup_multi_connection_timeout_api(suite) -> []; +setup_multi_connection_timeout_api(_Config) -> + ?match(ok, application:set_env(orber, iiop_backlog, 0)), + %% Wait to be sure that the configuration has kicked in. + timer:sleep(2000), + {ok, Ref, Port} = create_fake_server_ORB(normal, 0, [], listen, []), + ?match(ok, application:set_env(orber, iiop_out_ports, {6042, 6234})), + ?match(ok, orber:configure(iiop_setup_connection_timeout, 5)), + ?match(ok, orber:info(io)), + IP = orber_test_lib:get_host(), + spawn(?MODULE, do_connect, [IP, Port, [{active, false}]]), + spawn(?MODULE, do_connect, [IP, Port, [{active, false}]]), + spawn(?MODULE, do_connect, [IP, Port, [{active, false}]]), + spawn(?MODULE, do_connect, [IP, Port, [{active, false}]]), + spawn(?MODULE, do_connect, [IP, Port, [{active, false}]]), + Corbaloc = "corbaloc::1.2@"++IP++":"++integer_to_list(Port)++"/NameService", + timer:sleep(2000), + ?match({'EXCEPTION', _E}, corba:string_to_object(Corbaloc)), + destroy_fake_ORB(Ref), + ?match(ok, application:set_env(orber, iiop_backlog, 5)), + ?match(ok, application:set_env(orber, iiop_out_ports, undefined)), + ok. + +setup_multi_connection_timeout_attempts_api(doc) -> + ["iiop_multi_setup_connection_timeout API tests for ORB to ORB."]; +setup_multi_connection_timeout_attempts_api(suite) -> []; +setup_multi_connection_timeout_attempts_api(_Config) -> + ?match(ok, application:set_env(orber, iiop_backlog, 0)), + %% Wait to be sure that the configuration has kicked in. + timer:sleep(2000), + {ok, Ref, Port} = create_fake_server_ORB(normal, 0, [], listen, []), + ?match(ok, application:set_env(orber, iiop_out_ports, {6042, 6234})), + ?match(ok, application:set_env(orber, iiop_out_ports_attempts, 1)), + ?match(ok, orber:configure(iiop_setup_connection_timeout, 5)), + ?match(ok, orber:info(io)), + IP = orber_test_lib:get_host(), + spawn(?MODULE, do_connect, [IP, Port, [{active, false}]]), + spawn(?MODULE, do_connect, [IP, Port, [{active, false}]]), + spawn(?MODULE, do_connect, [IP, Port, [{active, false}]]), + spawn(?MODULE, do_connect, [IP, Port, [{active, false}]]), + spawn(?MODULE, do_connect, [IP, Port, [{active, false}]]), + Corbaloc = "corbaloc::1.2@"++IP++":"++integer_to_list(Port)++"/NameService", + timer:sleep(2000), + ?match({'EXCEPTION', _E}, corba:string_to_object(Corbaloc)), + destroy_fake_ORB(Ref), + ?match(ok, application:set_env(orber, iiop_backlog, 5)), + ?match(ok, application:set_env(orber, iiop_out_ports, undefined)), + ok. + +setup_multi_connection_timeout_random_api(doc) -> + ["iiop_multi_setup_connection_timeout API tests for ORB to ORB."]; +setup_multi_connection_timeout_random_api(suite) -> []; +setup_multi_connection_timeout_random_api(_Config) -> + ?match(ok, application:set_env(orber, iiop_backlog, 0)), + %% Wait to be sure that the configuration has kicked in. + timer:sleep(2000), + {ok, Ref, Port} = create_fake_server_ORB(normal, 0, [], listen, []), + ?match(ok, application:set_env(orber, iiop_out_ports, {6042, 6234})), + ?match(ok, application:set_env(orber, iiop_out_ports_random, true)), + ?match(ok, orber:configure(iiop_setup_connection_timeout, 5)), + ?match(ok, orber:info(io)), + IP = orber_test_lib:get_host(), + spawn(?MODULE, do_connect, [IP, Port, [{active, false}]]), + spawn(?MODULE, do_connect, [IP, Port, [{active, false}]]), + spawn(?MODULE, do_connect, [IP, Port, [{active, false}]]), + spawn(?MODULE, do_connect, [IP, Port, [{active, false}]]), + spawn(?MODULE, do_connect, [IP, Port, [{active, false}]]), + Corbaloc = "corbaloc::1.2@"++IP++":"++integer_to_list(Port)++"/NameService", + timer:sleep(2000), + ?match({'EXCEPTION', _E}, corba:string_to_object(Corbaloc)), + destroy_fake_ORB(Ref), + ?match(ok, application:set_env(orber, iiop_backlog, 5)), + ?match(ok, application:set_env(orber, iiop_out_ports, undefined)), + ok. + +%%----------------------------------------------------------------- +%% Sending an incorrect header to the server-side ORB. +%%----------------------------------------------------------------- +bad_giop_header_api(doc) -> ["Sending an incorrect header to the server-side ORB."]; +bad_giop_header_api(suite) -> []; +bad_giop_header_api(_Config) -> + orber:configure_override(interceptors, {native,[orber_iiop_tracer]}), + orber:configure(orber_debug_level, 10), + ?match(ok, orber:info(io)), + {ok, ServerNode, ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node()), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + Req = <<"GIOP",1,2,0,100,0,0,0,5,0,0,0,10,50>> , + ?match(ok, fake_client_ORB(normal, ServerHost, ServerPort, [], + message_error, [Req])), + + application:set_env(orber, interceptors, false), + orber:configure(orber_debug_level, 0), + ok. + + +%%----------------------------------------------------------------- +%% Fragmented IIOP tests (Server-side). +%%----------------------------------------------------------------- +-define(REQUEST_ID, 0). + +-define(REPLY_FRAG_1, <<71,73,79,80,1,2,2,1,0,0,0,41,0,0,0,?REQUEST_ID,0,0,0,0,0,0,0,1,78,69,79,0,0,0,0,2,0,10,0,0,0,0,0,0,0,0,0,18,0,0,0,0,0,0,0,4,49>>). +%% The fragments are identical for requests and replies. +-define(FRAG_2, <<71,73,79,80,1,2,2,7,0,0,0,5,0,0,0,?REQUEST_ID,50>>). +-define(FRAG_3, <<71,73,79,80,1,2,2,7,0,0,0,5,0,0,0,?REQUEST_ID,51>>). +-define(FRAG_4, <<71,73,79,80,1,2,0,7,0,0,0,5,0,0,0,?REQUEST_ID,0>>). + + +fragments_server_api(doc) -> ["fragments API tests for server-side ORB."]; +fragments_server_api(suite) -> []; +fragments_server_api(_Config) -> + %% --- Create a slave-node --- + {ok, Node, Host} = + ?match({ok,_,_}, orber_test_lib:js_node()), + Port = orber_test_lib:remote_apply(Node, orber, iiop_port, []), + + ?match(ok, orber_test_lib:remote_apply(Node, orber_test_lib, + install_test_data, + [nameservice])), + + NSR = ?match({'IOP_IOR',"IDL:omg.org/CosNaming/NamingContextExt:1.0",_}, + corba:string_to_object("corbaloc::1.2@"++Host++":"++ + integer_to_list(Port)++"/NameService")), + + Obj = ?match({'IOP_IOR',"IDL:omg.org/orber_test/server:1.0",_}, + 'CosNaming_NamingContext':resolve(NSR, lname:new(["mamba"]))), + + Any = #any{typecode = {tk_string,0}, + value = "123"}, + Target = #'GIOP_TargetAddress'{label = ?GIOP_KeyAddr, + value = iop_ior:get_objkey(Obj)}, + %% Fix a request header. + {Hdr, Body, HdrLen, _What, _Flags} = + cdr_encode:enc_request_split( + #giop_env{version = {1,2}, objkey = Target, + request_id = ?REQUEST_ID, + response_expected = true, + op = testing_iiop_any, + parameters = [49], ctx = [], + tc = {tk_void,[tk_char],[]}, + host = [orber_test_lib:get_host()], + iiop_port = orber:iiop_port(), + iiop_ssl_port = orber:iiop_ssl_port(), + domain = orber:domain(), + partial_security = orber:partial_security()}), + NewBody = + case size(Body) of + 1 -> + <<0,0,0,18,0,0,0,0,0,0,0,4,49>> ; + Size -> + Aligned = Size -1, + <<AligmnetData:Aligned/binary,49>> = Body, + list_to_binary([AligmnetData, <<0,0,0,18,0,0,0,0,0,0,0,4,49>> ]) + end, + + MessSize = HdrLen+size(NewBody), + ReqFrag = list_to_binary([ <<"GIOP",1:8,2:8,2:8,0:8, + MessSize:32/big-unsigned-integer>> , Hdr |NewBody]), + ?match(Any, fake_client_ORB(normal, Host, Port, [], fragments, + [ReqFrag, ?FRAG_2, ?FRAG_3, ?FRAG_4])), + + ok. + +%%----------------------------------------------------------------- +%% Fragmented IIOP tests (Server-side). Exceeding Maximum. +%%----------------------------------------------------------------- +fragments_max_server_api(doc) -> ["Maximum fragments API tests for server-side ORB."]; +fragments_max_server_api(suite) -> []; +fragments_max_server_api(_Config) -> + %% --- Create a slave-node --- + IP = orber_test_lib:get_host(), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{iiop_max_fragments, 2}, + {ip_address, IP}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + fragments_max_server(ServerNode, IP, ServerPort). + +fragments_max_server_added_api(doc) -> ["Maximum fragments API tests for server-side ORB."]; +fragments_max_server_added_api(suite) -> []; +fragments_max_server_added_api(_Config) -> + %% --- Create a slave-node --- + IP = orber_test_lib:get_host(), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([])), + ServerPort = 1 + orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + ?match({ok, _}, + orber_test_lib:remote_apply(ServerNode, orber, + add_listen_interface, + [IP, normal, + [{iiop_max_fragments, 2}, + {flags, ?ORB_ENV_LOCAL_INTERFACE}, + {iiop_port, ServerPort}]])), + fragments_max_server(ServerNode, IP, ServerPort). + +fragments_max_server(ServerNode, ServerHost, ServerPort) -> + ?match(ok, orber_test_lib:remote_apply(ServerNode, orber_test_lib, + install_test_data, + [nameservice])), + Obj = ?match({'IOP_IOR',"IDL:omg.org/orber_test/server:1.0",_}, + corba:string_to_object("corbaname::1.2@"++ServerHost++":"++ + integer_to_list(ServerPort)++"/NameService#mamba")), + Target = #'GIOP_TargetAddress'{label = ?GIOP_KeyAddr, + value = iop_ior:get_objkey(Obj)}, + %% Fix a request header. + {Hdr, Body, HdrLen, _What, _Flags} = + cdr_encode:enc_request_split( + #giop_env{version = {1,2}, + objkey = Target, + request_id = ?REQUEST_ID, + response_expected = true, + op = testing_iiop_any, + parameters = [49], ctx = [], + tc = {tk_void,[tk_char],[]}, + host = [orber_test_lib:get_host()], + iiop_port = orber:iiop_port(), + iiop_ssl_port = orber:iiop_ssl_port(), + domain = orber:domain(), + partial_security = orber:partial_security()}), + NewBody = + case size(Body) of + 1 -> + <<0,0,0,18,0,0,0,0,0,0,0,4,49>> ; + Size -> + Aligned = Size -1, + <<AligmnetData:Aligned/binary,49>> = Body, + list_to_binary([AligmnetData, <<0,0,0,18,0,0,0,0,0,0,0,4,49>> ]) + end, + + MessSize = HdrLen+size(NewBody), + ReqFrag = list_to_binary([ <<"GIOP",1:8,2:8,2:8,0:8, + MessSize:32/big-unsigned-integer>> , Hdr |NewBody]), + ?match(#'IMP_LIMIT'{}, + fake_client_ORB(normal, ServerHost, ServerPort, [], fragments_max, + [ReqFrag, ?FRAG_2, ?FRAG_3, ?FRAG_4])), + + ok. + +%%----------------------------------------------------------------- +%% Fragmented IIOP tests (Client-side). +%%----------------------------------------------------------------- +fragments_client_api(doc) -> ["fragments API tests for client-side ORB."]; +fragments_client_api(suite) -> []; +fragments_client_api(_Config) -> + Any = #any{typecode = {tk_string,0}, + value = "123"}, + application:set_env(orber, interceptors, {native,[orber_iiop_tracer]}), + orber:configure(orber_debug_level, 10), + orber:info(), + IOR = ?match({'IOP_IOR',_,_}, + iop_ior:create_external({1, 2}, "IDL:FAKE:1.0", + "localhost", 6004, "FAKE", [])), + spawn(?MODULE, create_fake_server_ORB, [normal, 6004, [], fragments, + [?REPLY_FRAG_1, ?FRAG_2, + ?FRAG_3, ?FRAG_4]]), + ?match({ok, Any}, orber_test_server:testing_iiop_any(IOR, Any)), + application:set_env(orber, interceptors, false), + orber:configure(orber_debug_level, 0), + ok. + +%%----------------------------------------------------------------- +%% Fragmented IIOP tests (Client-side). +%%----------------------------------------------------------------- +bad_fragment_id_client_api(doc) -> ["fragments API tests for client-side ORB."]; +bad_fragment_id_client_api(suite) -> []; +bad_fragment_id_client_api(_Config) -> + application:set_env(orber, interceptors, {native,[orber_iiop_tracer]}), + orber:configure(orber_debug_level, 10), + orber:info(), + {ok, ServerNode, ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node()), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + Req = <<71,73,79,80,1,2,2,7,0,0,0,5,0,0,0,100,50>> , + ?match(ok, fake_client_ORB(normal, ServerHost, ServerPort, [], + message_error, [Req])), + + application:set_env(orber, interceptors, false), + orber:configure(orber_debug_level, 0), + + ok. + +%%----------------------------------------------------------------- +%% Non-existing request id +%%----------------------------------------------------------------- +bad_id_cancel_request_api(doc) -> ["Description", "more description"]; +bad_id_cancel_request_api(suite) -> []; +bad_id_cancel_request_api(Config) when is_list(Config) -> + Req10 = cdr_encode:enc_cancel_request(#giop_env{version = {1, 0}, + request_id = 556}), + Req11 = cdr_encode:enc_cancel_request(#giop_env{version = {1, 1}, + request_id = 556}), + Req12 = cdr_encode:enc_cancel_request(#giop_env{version = {1, 2}, + request_id = 556}), + {ok, ServerNode, ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node()), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + ?match(ok, fake_client_ORB(normal, ServerHost, ServerPort, [], + message_error, [Req10])), + ?match(ok, fake_client_ORB(normal, ServerHost, ServerPort, [], + message_error, [Req11])), + ?match(ok, fake_client_ORB(normal, ServerHost, ServerPort, [], + message_error, [Req12])), + ok. + +%%----------------------------------------------------------------- +%% Local functions. +%%----------------------------------------------------------------- + +do_connect(Host, Port, Options) -> + gen_tcp:connect(Host, Port, Options), + timer:sleep(20000). + +pseudo_calls(0, _) -> + ok; +pseudo_calls(Times, Obj) -> + orber_test_server:pseudo_call(Obj), + New = Times - 1, + pseudo_calls(New, Obj). +pseudo_casts(0, _) -> + ok; +pseudo_casts(Times, Obj) -> + orber_test_server:pseudo_cast(Obj), + New = Times - 1, + pseudo_casts(New, Obj). + +context_test(Obj) -> + CodeSetCtx = #'CONV_FRAME_CodeSetContext'{char_data = 65537, + wchar_data = 65801}, + FTGrp = #'FT_FTGroupVersionServiceContext'{object_group_ref_version = ?ULONGMAX}, + FTReq = #'FT_FTRequestServiceContext'{client_id = "ClientId", + retention_id = ?LONGMAX, + expiration_time = ?ULONGLONGMAX}, + + IDToken1 = #'CSI_IdentityToken'{label = ?CSI_IdentityTokenType_ITTAbsent, + value = true}, + IDToken2 = #'CSI_IdentityToken'{label = ?CSI_IdentityTokenType_ITTAnonymous, + value = false}, + IDToken3 = #'CSI_IdentityToken'{label = ?CSI_IdentityTokenType_ITTPrincipalName, + value = [0,255]}, + IDToken4 = #'CSI_IdentityToken'{label = ?CSI_IdentityTokenType_ITTX509CertChain, + value = [1,255]}, + IDToken5 = #'CSI_IdentityToken'{label = ?CSI_IdentityTokenType_ITTDistinguishedName, + value = [2,255]}, + IDToken6 = #'CSI_IdentityToken'{label = ?ULONGMAX, + value = [3,255]}, + + MTEstablishContext1 = #'CSI_SASContextBody' + {label = ?CSI_MsgType_MTEstablishContext, + value = #'CSI_EstablishContext'{client_context_id = ?ULONGLONGMAX, + authorization_token = + [#'CSI_AuthorizationElement' + {the_type = ?ULONGMAX, + the_element = [0,255]}], + identity_token = IDToken1, + client_authentication_token = [1, 255]}}, + MTEstablishContext2 = #'CSI_SASContextBody' + {label = ?CSI_MsgType_MTEstablishContext, + value = #'CSI_EstablishContext'{client_context_id = ?ULONGLONGMAX, + authorization_token = + [#'CSI_AuthorizationElement' + {the_type = ?ULONGMAX, + the_element = [0,255]}], + identity_token = IDToken2, + client_authentication_token = [1, 255]}}, + MTEstablishContext3 = #'CSI_SASContextBody' + {label = ?CSI_MsgType_MTEstablishContext, + value = #'CSI_EstablishContext'{client_context_id = ?ULONGLONGMAX, + authorization_token = + [#'CSI_AuthorizationElement' + {the_type = ?ULONGMAX, + the_element = [0,255]}], + identity_token = IDToken3, + client_authentication_token = [1, 255]}}, + MTEstablishContext4 = #'CSI_SASContextBody' + {label = ?CSI_MsgType_MTEstablishContext, + value = #'CSI_EstablishContext'{client_context_id = ?ULONGLONGMAX, + authorization_token = + [#'CSI_AuthorizationElement' + {the_type = ?ULONGMAX, + the_element = [0,255]}], + identity_token = IDToken4, + client_authentication_token = [1, 255]}}, + MTEstablishContext5 = #'CSI_SASContextBody' + {label = ?CSI_MsgType_MTEstablishContext, + value = #'CSI_EstablishContext'{client_context_id = ?ULONGLONGMAX, + authorization_token = + [#'CSI_AuthorizationElement' + {the_type = ?ULONGMAX, + the_element = [0,255]}], + identity_token = IDToken5, + client_authentication_token = [1, 255]}}, + MTEstablishContext6 = #'CSI_SASContextBody' + {label = ?CSI_MsgType_MTEstablishContext, + value = #'CSI_EstablishContext'{client_context_id = ?ULONGLONGMAX, + authorization_token = + [#'CSI_AuthorizationElement' + {the_type = ?ULONGMAX, + the_element = [0,255]}], + identity_token = IDToken6, + client_authentication_token = [1, 255]}}, + MTCompleteEstablishContext = #'CSI_SASContextBody' + {label = ?CSI_MsgType_MTCompleteEstablishContext, + value = #'CSI_CompleteEstablishContext'{client_context_id = ?ULONGLONGMAX, + context_stateful = false, + final_context_token = [1, 255]}}, + MTContextError = #'CSI_SASContextBody' + {label = ?CSI_MsgType_MTContextError, + value = #'CSI_ContextError'{client_context_id = ?ULONGLONGMAX, + major_status = 1, + minor_status = 2, + error_token = [2,255]}}, + MTMessageInContext = #'CSI_SASContextBody' + {label = ?CSI_MsgType_MTMessageInContext, + value = #'CSI_MessageInContext'{client_context_id = ?ULONGLONGMAX, + discard_context = true}}, + Ctx = [#'IOP_ServiceContext'{context_id=?IOP_CodeSets, + context_data = CodeSetCtx}, + #'IOP_ServiceContext'{context_id=?IOP_FT_GROUP_VERSION, + context_data = FTGrp}, + #'IOP_ServiceContext'{context_id=?IOP_FT_REQUEST, + context_data = FTReq}, + #'IOP_ServiceContext'{context_id=?IOP_SecurityAttributeService, + context_data = MTEstablishContext1}, + #'IOP_ServiceContext'{context_id=?IOP_SecurityAttributeService, + context_data = MTEstablishContext2}, + #'IOP_ServiceContext'{context_id=?IOP_SecurityAttributeService, + context_data = MTEstablishContext3}, + #'IOP_ServiceContext'{context_id=?IOP_SecurityAttributeService, + context_data = MTEstablishContext4}, + #'IOP_ServiceContext'{context_id=?IOP_SecurityAttributeService, + context_data = MTEstablishContext5}, + #'IOP_ServiceContext'{context_id=?IOP_SecurityAttributeService, + context_data = MTEstablishContext6}, + #'IOP_ServiceContext'{context_id=?IOP_SecurityAttributeService, + context_data = MTCompleteEstablishContext}, + #'IOP_ServiceContext'{context_id=?IOP_SecurityAttributeService, + context_data = MTContextError}, + #'IOP_ServiceContext'{context_id=?IOP_SecurityAttributeService, + context_data = MTMessageInContext}, + #'IOP_ServiceContext'{context_id=?ORBER_GENERIC_CTX_ID, + context_data = {any_kind_of_data, {127,0,0,1}, 4001}}], + ?match(ok, orber_test_server:testing_iiop_context(Obj, [{context, Ctx}])). + + +create_fake_server_ORB(Type, Port, Options, listen, _Data) -> + {ok, _ListenSocket, NewPort} = + orber_socket:listen(Type, Port, + [{backlog, 0}, {active, false}|Options]), + Socket = orber_socket:connect(Type, 'localhost', NewPort, [{active, false}|Options]), + {ok, {Type, Socket}, NewPort}; +create_fake_server_ORB(Type, Port, Options, Action, Data) -> + {ok, ListenSocket, _NewPort} = + orber_socket:listen(Type, Port, [{active, false}|Options]), + Socket = orber_socket:accept(Type, ListenSocket), + do_server_action(Type, Socket, Action, Data), + orber_socket:close(Type, Socket), + ok. + +destroy_fake_ORB({Type, Socket}) -> + orber_socket:close(Type, Socket); +destroy_fake_ORB(_) -> + ok. + +fake_client_ORB(Type, Host, Port, Options, connect, _Data) -> + Socket = orber_socket:connect(Type, Host, Port, [{active, false}|Options]), + {Type, Socket}; +fake_client_ORB(Type, Host, Port, Options, Action, Data) -> + Socket = orber_socket:connect(Type, Host, Port, [{active, false}|Options]), + Result = do_client_action(Type, Socket, Action, Data), + orber_socket:close(Type, Socket), + Result. + + + +do_server_action(Type, Socket, fragments, FragList) -> + timer:sleep(3000), + {ok, _B} = gen_tcp:recv(Socket, 0), + ok = send_data(Type, Socket, FragList); +do_server_action(_Type, _Socket, _Action, _Data) -> + ok. + +do_client_action(Type, Socket, fragments, FragList) -> + ok = send_data(Type, Socket, FragList), + timer:sleep(3000), + {ok, Bytes} = gen_tcp:recv(Socket, 0), + {#reply_header{request_id = ?REQUEST_ID, reply_status = no_exception}, ok, [Par]} = + cdr_decode:dec_message({tk_void,[tk_any],[tk_any]}, Bytes), + Par; +do_client_action(Type, Socket, fragments_max, FragList) -> + ok = send_data(Type, Socket, FragList), + timer:sleep(3000), + {ok, Bytes} = gen_tcp:recv(Socket, 0), + {#reply_header{request_id = ?REQUEST_ID, reply_status = system_exception}, Exc, []} = + cdr_decode:dec_message({tk_void,[tk_any],[tk_any]}, Bytes), + Exc; +do_client_action(Type, Socket, message_error, Data) -> + ok = send_data(Type, Socket, Data), + timer:sleep(3000), + {ok,Bytes} = gen_tcp:recv(Socket, 0), + 'message_error' = cdr_decode:dec_message({tk_void,[tk_any],[tk_any]}, Bytes), + ok; +do_client_action(_Type, _Socket, _Action, _Data) -> + ok. + +send_data(_Type, _Socket, []) -> + ok; +send_data(Type, Socket, [H|T]) -> + orber_socket:write(Type, Socket, H), + send_data(Type, Socket, T). + diff --git a/lib/orber/test/naming_context_SUITE.erl b/lib/orber/test/naming_context_SUITE.erl new file mode 100644 index 0000000000..4406e01d5a --- /dev/null +++ b/lib/orber/test/naming_context_SUITE.erl @@ -0,0 +1,385 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1997-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%----------------------------------------------------------------- +%% +%% Description: +%% Test suite for Name service +%% +%%----------------------------------------------------------------- +-module(naming_context_SUITE). + +-include("test_server.hrl"). +-include_lib("orber/COSS/CosNaming/CosNaming.hrl"). +-include_lib("orber/src/orber_iiop.hrl"). +-include_lib("orber/include/corba.hrl"). + +-define(default_timeout, ?t:minutes(5)). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1]). + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- + +-export([name_context/1, check_list/1, name_context_ext/1]). + +-export([init_all/1, finish_all/1, init_per_testcase/2, fin_per_testcase/2]). + + +%%----------------------------------------------------------------- +%% Macros +%%----------------------------------------------------------------- +-define(REMAP_EXCEPT(F), case catch F of + {'EXCEPTION', E} -> exit(E); + {'EXIT', E} -> exit(E); + R -> R + end). + +-define(match(ExpectedRes, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + io:format("------ CORRECT RESULT ------~n~p~n", + [AcTuAlReS]), + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS) + end + end()). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["Description", "more description"]; +all(suite) -> {req, + [mnesia], + {conf, init_all, cases(), finish_all}}. + +cases() -> + [name_context, check_list, name_context_ext]. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- + +init_per_testcase(_Case, Config) -> + Path = code:which(?MODULE), + code:add_pathz(filename:join(filename:dirname(Path), "idl_output")), + ?line Dog=test_server:timetrap(?default_timeout), + orber:jump_start(0), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Path = code:which(?MODULE), + code:del_path(filename:join(filename:dirname(Path), "idl_output")), + orber:jump_stop(), + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +init_all(Config) -> + Config. + +finish_all(Config) -> + Config. + +%%----------------------------------------------------------------- +%% Test Case: name handling tests +%% Description: +%%----------------------------------------------------------------- +name_context(doc) -> ["Description", "more description"]; +name_context(suite) -> []; +name_context(_) -> + ?REMAP_EXCEPT(name_context_run()). + +name_context_run() -> + ?line Ns = corba:resolve_initial_references("NameService"), + + ?match({'EXCEPTION', #'NO_PERMISSION'{}}, + 'CosNaming_NamingContextExt':destroy(Ns)), + + %% Create a test context. + ?line Tc = 'CosNaming_NamingContext':bind_new_context(Ns, + [#'CosNaming_NameComponent'{id="testcontext", + kind=""}]), + %% Start testing + ?line 'CosNaming_NamingContext':bind(Tc, [#'CosNaming_NameComponent' + {id="hej", + kind=""}], Ns), + ?line Ns = 'CosNaming_NamingContext':resolve(Tc, + [#'CosNaming_NameComponent'{id="hej", + kind=""}]), + ?line Nc = 'CosNaming_NamingContext':new_context(Tc), + ?line 'CosNaming_NamingContext':bind(Tc, [#'CosNaming_NameComponent' + {id="stop", + kind=""}], Nc), + ?line Nc = 'CosNaming_NamingContext':resolve(Tc, + [#'CosNaming_NameComponent'{id="stop", + kind=""}]), + ?line {'EXCEPTION', E0} = + (catch 'CosNaming_NamingContext':bind(Tc, + [#'CosNaming_NameComponent'{id="stop", + kind=""}], Ns)), + ?line ok = 'CosNaming_NamingContext':rebind(Tc, + [#'CosNaming_NameComponent'{id="stop", + kind=""}], Ns), + ?line {'CosNaming_NamingContext_AlreadyBound', _} = E0, + ?line 'CosNaming_NamingContext':bind_context(Tc, + [#'CosNaming_NameComponent'{id="evaluate", + kind=""}], Nc), + ?line Nc = + 'CosNaming_NamingContext':resolve(Tc, + [#'CosNaming_NameComponent'{id="evaluate", + kind=""}]), + ?line 'CosNaming_NamingContext':bind(Tc, + [#'CosNaming_NameComponent'{id="evaluate", + kind=""}, + #'CosNaming_NameComponent'{id="hej", + kind=""}], Ns), + ?line ok = 'CosNaming_NamingContext':rebind(Tc, + [#'CosNaming_NameComponent'{id="evaluate", + kind=""}, + #'CosNaming_NameComponent'{id="hej", + kind=""}], Ns), + ?line Ns = 'CosNaming_NamingContext':resolve(Tc, + [#'CosNaming_NameComponent'{id="evaluate", + kind=""}, + #'CosNaming_NameComponent'{id="hej", + kind=""}]), + ?line {'EXCEPTION', E1} = + (catch 'CosNaming_NamingContext':resolve(Tc, + [#'CosNaming_NameComponent'{id="stop", + kind=""}, + #'CosNaming_NameComponent'{id="hej", + kind=""}])), + ?line ?match(ok, orber_diagnostics:nameservice()), + + ?line {'CosNaming_NamingContext_CannotProceed', _,_,_} = E1, + ?line {'EXCEPTION', E2} = (catch 'CosNaming_NamingContext':destroy(Nc)), + ?line {'CosNaming_NamingContext_NotEmpty', _} = E2, + ?line ok = 'CosNaming_NamingContext':unbind(Tc, + [#'CosNaming_NameComponent'{id="evaluate", + kind=""}, + #'CosNaming_NameComponent'{id="hej", + kind=""}]), + ?line ok = 'CosNaming_NamingContext':destroy(Nc), + ?line ok = 'CosNaming_NamingContext':unbind(Tc, + [#'CosNaming_NameComponent'{id="evaluate", + kind=""}]), + ?line ok = 'CosNaming_NamingContext':unbind(Tc, + [#'CosNaming_NameComponent'{id="stop", + kind=""}]), + ?line ok = 'CosNaming_NamingContext':unbind(Tc, + [#'CosNaming_NameComponent'{id="hej", + kind=""}]), + ?line case 'CosNaming_NamingContext':list(Tc, 3) of + {ok, [], ?ORBER_NIL_OBJREF} -> + ok; + _ -> + exit(not_empty) + end, + ?line ok = 'CosNaming_NamingContext':unbind(Ns, + [#'CosNaming_NameComponent'{id="testcontext", + kind=""}]), + ?line ok = 'CosNaming_NamingContext':destroy(Tc), + ok. + + + +check_list(doc) -> + ["Check that the CosNaming::NamingContext::list()", + "returns ok.", + "Own Id: OTP-2023"]; +check_list(suite) -> []; +check_list(Config) when is_list(Config) -> + ?REMAP_EXCEPT(check_list_run(Config)). + +check_list_run(_Config) -> + create_default_contexts(), + ?line Ns = corba:resolve_initial_references("NameService"), + ?line {_, BL, _} = ?match({ok, _, ?ORBER_NIL_OBJREF}, + 'CosNaming_NamingContext':list(Ns, 256)), + + FF = fun(X) -> XX = hd(X#'CosNaming_Binding'.binding_name), + XX#'CosNaming_NameComponent'.id end, + + L = lists:sort(lists:map(FF, BL)), + ?line ["host", "workgroup"] = L, + + %% Test next_n/2 + ?line {_, _, BI} = ?match({ok, [], _BI}, 'CosNaming_NamingContext':list(Ns, 0)), + ?line ?match({true, []}, 'CosNaming_BindingIterator':next_n(BI, 0)), + ?line ?match({true, [_]}, 'CosNaming_BindingIterator':next_n(BI, 1)), + ?line ?match({false, [_]}, 'CosNaming_BindingIterator':next_n(BI, 1)), + ?line ?match({false, []}, 'CosNaming_BindingIterator':next_n(BI, 1)), + ?line ?match(ok, 'CosNaming_BindingIterator':destroy(BI)), + + ?line {_, _, BI2} = ?match({ok, [], _BI2}, 'CosNaming_NamingContext':list(Ns, 0)), + ?line ?match({true, _}, 'CosNaming_BindingIterator':next_one(BI2)), + ?line ?match({true, _}, 'CosNaming_BindingIterator':next_one(BI2)), + ?line ?match({false, _}, 'CosNaming_BindingIterator':next_one(BI2)), + ?line ?match(ok, 'CosNaming_BindingIterator':destroy(BI2)), + ?line ?match(ok, orber_diagnostics:nameservice()), + ok. + +create_default_contexts() -> + HostComponent = lname_component:set_id(lname_component:create(), + "host"), + HostsComponent = lname_component:set_id(lname_component:create(), + "hosts"), + ResourcesComponent = lname_component:set_id(lname_component:create(), + "resources"), + DevelopmentComponent = lname_component:set_id(lname_component:create(), + "development"), + FactoriesComponent = lname_component:set_id(lname_component:create(), + "factories"), + WGComponent = lname_component:set_id(lname_component:create(), + "workgroup"), + %% Creation of Naming Context host and it's subcontexts + NS = corba:resolve_initial_references("NameService"), + H = 'CosNaming_NamingContext':bind_new_context(NS, + lname:insert_component(lname:create(), 1, HostComponent)), + HR = 'CosNaming_NamingContext':bind_new_context(H, + lname:insert_component(lname:create(), 1, ResourcesComponent)), + 'CosNaming_NamingContext':bind_new_context(HR, + lname:insert_component(lname:create(), 1, FactoriesComponent)), + HD = 'CosNaming_NamingContext':bind_new_context(H, + lname:insert_component(lname:create(), 1, DevelopmentComponent)), + HDR = 'CosNaming_NamingContext':bind_new_context(HD, + lname:insert_component(lname:create(), 1, ResourcesComponent)), + 'CosNaming_NamingContext':bind_new_context(HDR, + lname:insert_component(lname:create(), 1, FactoriesComponent)), + %% Creation of Naming Context workgroup and it's subcontexts + W = 'CosNaming_NamingContext':bind_new_context(NS, + lname:insert_component(lname:create(), 1, WGComponent)), + 'CosNaming_NamingContext':bind_new_context(W, + lname:insert_component(lname:create(), 1, HostsComponent)), + WR = 'CosNaming_NamingContext':bind_new_context(W, + lname:insert_component(lname:create(), 1, ResourcesComponent)), + 'CosNaming_NamingContext':bind_new_context(WR, + lname:insert_component(lname:create(), 1, FactoriesComponent)), + WD = 'CosNaming_NamingContext':bind_new_context(W, + lname:insert_component(lname:create(), 1, DevelopmentComponent)), + WDR = 'CosNaming_NamingContext':bind_new_context(WD, + lname:insert_component(lname:create(), 1, ResourcesComponent)), + 'CosNaming_NamingContext':bind_new_context(WDR, + lname:insert_component(lname:create(), 1, FactoriesComponent)), + ok. + +%%----------------------------------------------------------------- +%% Test Case: +%% Description: +%%----------------------------------------------------------------- +name_context_ext(doc) -> ["Description", "more description"]; +name_context_ext(suite) -> []; +name_context_ext(_Config) -> + ?REMAP_EXCEPT(name_context_ext_run()). + +name_context_ext_run() -> + ?line NS = ?match({_,pseudo,_, _,_, _}, + corba:resolve_initial_references("NameService")), + + Name1 = [#'CosNaming_NameComponent'{id="\\<id1\\>", kind="kind1"}, + #'CosNaming_NameComponent'{id="id2", kind="kind2"}], + String1 = "\\<id1\\>.kind1/id2.kind2", + Name2 = [#'CosNaming_NameComponent'{id="id1", kind=""}, + #'CosNaming_NameComponent'{id="id2", kind=""}, + #'CosNaming_NameComponent'{id="id3", kind=""}], + String2 = "id1/id2/id3", + Name3 = [#'CosNaming_NameComponent'{id="id1", kind="kind1"}, + #'CosNaming_NameComponent'{id="", kind=""}, + #'CosNaming_NameComponent'{id="id3", kind="kind3"}], + String3 = "id1.kind1/./id3.kind3", + Name4 = [#'CosNaming_NameComponent'{id="id1", kind="kind1"}, + #'CosNaming_NameComponent'{id="i.d.2", kind="kind2"}, + #'CosNaming_NameComponent'{id="id3", kind="kind3"}], + String4 = "id1.kind1/i\\.d\\.2.kind2/id3.kind3", + Name5 = [#'CosNaming_NameComponent'{id="id1", kind=""}, + #'CosNaming_NameComponent'{id="i/d/2", kind="kind2"}, + #'CosNaming_NameComponent'{id="id3", kind=""}], + String5 = "id1/i\\/d\\/2.kind2/id3", + + BadString1 = "id1./id2/id3", + BadString2 = "id1//id3", + + ?match(String1, 'CosNaming_NamingContextExt':to_string(NS, Name1)), + ?match(String2, 'CosNaming_NamingContextExt':to_string(NS, Name2)), + ?match(String3, 'CosNaming_NamingContextExt':to_string(NS, Name3)), + ?match(String4, 'CosNaming_NamingContextExt':to_string(NS, Name4)), + ?match(String5, 'CosNaming_NamingContextExt':to_string(NS, Name5)), + ?match(Name1, 'CosNaming_NamingContextExt':to_name(NS, String1)), + ?match(Name2, 'CosNaming_NamingContextExt':to_name(NS, String2)), + ?match(Name3, 'CosNaming_NamingContextExt':to_name(NS, String3)), + ?match(Name4, 'CosNaming_NamingContextExt':to_name(NS, String4)), + ?match(Name5, 'CosNaming_NamingContextExt':to_name(NS, String5)), + + ?match({'EXCEPTION', {'CosNaming_NamingContext_InvalidName',_}}, + 'CosNaming_NamingContextExt':to_name(NS, BadString1)), + ?match({'EXCEPTION', {'CosNaming_NamingContext_InvalidName',_}}, + 'CosNaming_NamingContextExt':to_name(NS, BadString2)), + + %% Create a test context. + ?line Tc = ?match({_,pseudo,_, _,_, _}, + 'CosNaming_NamingContext':bind_new_context(NS, + [#'CosNaming_NameComponent'{id="testcontext", + kind=""}])), + ?match(ok, 'CosNaming_NamingContext':bind(Tc, [#'CosNaming_NameComponent' + {id="hej", + kind=""}], NS)), + + ?match(NS, 'CosNaming_NamingContextExt':resolve_str(Tc, "hej")), + + ?match("corbaloc:rir:", 'CosNaming_NamingContextExt':to_url(Tc, "rir:", "")), + ?match("corbaname:rir:/NameService#org/erlang/", + 'CosNaming_NamingContextExt':to_url(Tc, "rir:/NameService", "org/erlang/")), + ?match("corbaloc::1.1@555%3cxyz.com:9999/Dev/NameService", + 'CosNaming_NamingContextExt':to_url(Tc, ":1.1@555\\<xyz.com:9999/Dev/NameService", "")), + + %% Bad port + ?match({'EXCEPTION', {'CosNaming_NamingContextExt_InvalidAddress',_}}, + 'CosNaming_NamingContextExt':to_url(Tc, ":[email protected]:99a9/", "")), + %% BAd IIOP-version + ?match({'EXCEPTION', {'CosNaming_NamingContextExt_InvalidAddress',_}}, + 'CosNaming_NamingContextExt':to_url(Tc, ":[email protected]:99a9/", "")), + %% Bad IIOP-version + ?match({'EXCEPTION', {'CosNaming_NamingContextExt_InvalidAddress',_}}, + 'CosNaming_NamingContextExt':to_url(Tc, ":@555xyz.com:99a9/", "")), + %% Bad protocol + ?match({'EXCEPTION', {'CosNaming_NamingContextExt_InvalidAddress',_}}, + 'CosNaming_NamingContextExt':to_url(Tc, "iop:@555xyz.com:99a9/", "")), + %% Unsupported protocol + ?match({'EXCEPTION', {'CosNaming_NamingContextExt_InvalidAddress',_}}, + 'CosNaming_NamingContextExt':to_url(Tc, "atm:@555xyz.com:9999/", "")), + %% Bad Name + ?match({'EXCEPTION', {'CosNaming_NamingContext_InvalidName',_}}, + 'CosNaming_NamingContextExt':to_url(Tc, ":555xyz.com:9999/", "id1./id2.kind2")), + + ok. + + diff --git a/lib/orber/test/orber.spec b/lib/orber/test/orber.spec new file mode 100644 index 0000000000..9d19ea7fc1 --- /dev/null +++ b/lib/orber/test/orber.spec @@ -0,0 +1,19 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1997-2010. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +{topcase, {dir, "../orber_test"}}. diff --git a/lib/orber/test/orber_SUITE.erl b/lib/orber/test/orber_SUITE.erl new file mode 100644 index 0000000000..f54da02c0e --- /dev/null +++ b/lib/orber/test/orber_SUITE.erl @@ -0,0 +1,179 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1997-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +-module(orber_SUITE). +-include("test_server.hrl"). + + +-define(default_timeout, ?t:minutes(15)). +-define(application, orber). + +% Test server specific exports +-export([all/1]). +-export([init_per_testcase/2, fin_per_testcase/2]). + +% Test cases must be exported. +-export([app_test/1, undefined_functions/1, install_load_order/1, + install_local_content/1]). + +%% +%% all/1 +%% +all(doc) -> + []; +all(suite) -> + [app_test, undefined_functions, + install_load_order, install_local_content]. + +init_per_testcase(_Case, Config) -> + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + +fin_per_testcase(_Case, Config) -> + Dog=?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +% +% Test cases starts here. +% +app_test(doc) -> []; +app_test(suite) -> []; +app_test(_Config) -> + ?line ok=?t:app_test(orber), + ok. + +%% Install Orber using the load_order option. +install_load_order(suite) -> + []; +install_load_order(doc) -> + []; +install_load_order(_Config) -> + orber:jump_stop(), + case catch install_load_order2() of + ok -> + orber:jump_stop(); + What -> + orber:jump_stop(), + exit(What) + end. + +install_load_order2() -> + application:load(orber), + mnesia:start(), + corba:orb_init([{iiop_port, 0}]), + orber:install([node()], [{ifr_storage_type, ram_copies}, + {load_order, 10}]), + orber:start(), + [H|_] = orber:get_tables(), + 10 = mnesia:table_info(H, load_order), + ok. + +%% Install Orber using the local_content option. +install_local_content(suite) -> + []; +install_local_content(doc) -> + []; +install_local_content(_Config) -> + orber:jump_stop(), + case catch install_local_content2() of + ok -> + orber:jump_stop(); + What -> + orber:jump_stop(), + exit(What) + end. + +install_local_content2() -> + application:load(orber), + mnesia:start(), + corba:orb_init([{iiop_port, 0}]), + orber:install([node()], [{ifr_storage_type, ram_copies}, + {local_content, true}]), + orber:start(), + [H|_] = orber:get_tables(), + true = mnesia:table_info(H, local_content), + ok. + + + +%% Check for undefined functions +undefined_functions(suite) -> + []; +undefined_functions(doc) -> + []; +undefined_functions(_Config) -> + App = orber, + Root = code:root_dir(), + LibDir = code:lib_dir(App), + EbinDir = filename:join([LibDir,"ebin"]), + AppFilePath = filename:join([LibDir,"ebin", "orber.app"]), + {ok, [{application,orber,AppFile}]} = file:consult(AppFilePath), + io:format("Using ~p~n~p~n", [AppFilePath, AppFile]), + Mods = key1search(modules, AppFile), + XRefTestName = undef_funcs_make_name(App, xref_test_name), + {ok, XRef} = xref:start(XRefTestName), + ok = xref:set_default(XRef, + [{verbose,false},{warnings,false}]), + XRefName = undef_funcs_make_name(App, xref_name), + {ok, XRefName} = xref:add_release(XRef, Root, {name,XRefName}), + {ok, App} = xref:replace_application(XRef, App, EbinDir), + {ok, Undefs} = xref:analyze(XRef, undefined_function_calls), + xref:stop(XRef), + analyze_undefined_function_calls(Undefs, Mods, []). + +analyze_undefined_function_calls([], _, []) -> + ok; +analyze_undefined_function_calls([], _, AppUndefs) -> + exit({suite_failed, {undefined_function_calls, AppUndefs}}); +analyze_undefined_function_calls([{{Mod, _F, _A}, _C} = AppUndef|Undefs], + AppModules, AppUndefs) -> + %% Check that this module is our's + case lists:member(Mod,AppModules) of + true -> + {Calling,Called} = AppUndef, + {Mod1,Func1,Ar1} = Calling, + {Mod2,Func2,Ar2} = Called, + io:format("undefined function call: " + "~n ~w:~w/~w calls ~w:~w/~w~n", + [Mod1,Func1,Ar1,Mod2,Func2,Ar2]), + analyze_undefined_function_calls(Undefs, AppModules, + [AppUndef|AppUndefs]); + false -> + io:format("dropping ~p~n", [Mod]), + analyze_undefined_function_calls(Undefs, AppModules, AppUndefs) + end. + +%% This function is used simply to avoid cut-and-paste errors later... +undef_funcs_make_name(App, PostFix) -> + list_to_atom(atom_to_list(App) ++ "_" ++ atom_to_list(PostFix)). + +key1search(Key, L) -> + case lists:keysearch(Key, 1, L) of + false -> + fail({not_found, Key, L}); + {value, {Key, Value}} -> + Value + end. + +fail(Reason) -> + exit({suite_failed, Reason}). + + + diff --git a/lib/orber/test/orber_acl_SUITE.erl b/lib/orber/test/orber_acl_SUITE.erl new file mode 100644 index 0000000000..2c2a768af2 --- /dev/null +++ b/lib/orber/test/orber_acl_SUITE.erl @@ -0,0 +1,303 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2004-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% +%% +%% +%%----------------------------------------------------------------- +%% +%% Description: +%% Test suite for the ACL functions +%% +%%----------------------------------------------------------------- +-module(orber_acl_SUITE). + +-include("test_server.hrl"). + +-define(default_timeout, ?t:minutes(5)). + +-define(match(ExpectedRes,Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + io:format("------ CORRECT RESULT ------~n~p~n", + [AcTuAlReS]), + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~nRESULT: ~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS) + end + end()). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1]). + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- +-compile(export_all). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["Testing API for ACL (Access Control List)"]; +all(suite) -> + [ipv4_verify, ipv4_range, ipv4_interfaces, ipv4_bm, + ipv6_verify, ipv6_range, ipv6_interfaces, ipv6_bm]. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- +init_all(Config) -> + if + list(Config) -> + Config; + true -> + exit("Config not a list") + end. + +finish_all(Config) -> + Config. + + +init_per_testcase(_Case, Config) -> + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +%%----------------------------------------------------------------- +%% Test Case : +%% Description: +%%----------------------------------------------------------------- +ipv4_verify(doc) -> ["Testing IPv4 Verify Operation."]; +ipv4_verify(suite) -> []; +ipv4_verify(_) -> + ?match(true, orber_acl:verify("192.168.64.148", "192.168.64.0/17", inet)), + ?match({false,"192.168.128.0","192.168.255.255"}, + orber_acl:verify("192.168.64.148", "192.168.255.0/17", inet)), + ?match(true, orber_acl:verify("192.168.255.148", "192.168.128.0/17", inet)), + ?match(true, orber_acl:verify("192.168.128.148", "192.168.128.0/17", inet)), + ?match(true, orber_acl:verify("192.168.255.255", "192.168.128.0/16", inet)), + ?match({false,"192.168.0.0","192.168.255.255"}, + orber_acl:verify("192.169.255.255", "192.168.128.0/16", inet)), + ?match(true, orber_acl:verify("192.168.128.255", "192.168.128.0/24", inet)), + ?match({false,"192.168.128.0","192.168.128.255"}, + orber_acl:verify("192.168.255.255", "192.168.128.0/24", inet)), + ?match({false,"192.168.128.0","192.168.128.127"}, + orber_acl:verify("192.168.128.255", "192.168.128.0/25", inet)), + ?match(true, orber_acl:verify("192.168.128.255", "192.168.128.128/25", inet)), + ?match(true, orber_acl:verify("192.168.128.128", "192.168.128.128/32", inet)), + ?match({false,"192.168.128.128.","192.168.128.128."}, + orber_acl:verify("192.168.128.255", "192.168.128.128/32", inet)), + ?match(true, orber_acl:verify("192.168.128.128", "192.168.128.128", inet)), + ?match({false,"192.168.128.128.","192.168.128.128."}, + orber_acl:verify("192.168.128.255", "192.168.128.128", inet)), + ?match(true, orber_acl:verify("192.168.128.255", "192.168.128.128/7", inet)), + ok. + +%%----------------------------------------------------------------- +%% Test Case : +%% Description: +%%----------------------------------------------------------------- +ipv4_range(doc) -> ["Testing IPv4 Range Operation."]; +ipv4_range(suite) -> []; +ipv4_range(_) -> + ?match({ok,"192.168.0.0", "192.168.127.255"}, + orber_acl:range("192.168.64.0/17")), + ?match({ok, "192.168.128.0", "192.168.255.255"}, + orber_acl:range("192.168.255.0/17")), + ?match({ok,"192.168.128.0","192.168.255.255"}, + orber_acl:range("192.168.128.0/17")), + ?match({ok,"192.168.0.0","192.168.255.255"}, + orber_acl:range("192.168.128.0/16")), + ?match({ok,"192.168.128.0","192.168.128.255"}, + orber_acl:range("192.168.128.0/24")), + ?match({ok,"192.168.128.0","192.168.128.127"}, + orber_acl:range("192.168.128.0/25")), + ?match({ok,"192.168.128.128","192.168.128.255"}, + orber_acl:range("192.168.128.128/25")), + ?match({ok,"192.168.128.128.","192.168.128.128."}, + orber_acl:range("192.168.128.128/32")), + ?match({ok,"192.168.128.128.","192.168.128.128."}, + orber_acl:range("192.168.128.128")), + ?match({ok,"192.0.0.0","193.255.255.255"}, + orber_acl:range("192.168.128.128/7")), + ok. + +%%----------------------------------------------------------------- +%% Test Case : +%% Description: +%%----------------------------------------------------------------- +ipv4_interfaces(doc) -> ["Testing IPv4 Interfaces Operation."]; +ipv4_interfaces(suite) -> []; +ipv4_interfaces(_) -> + ?match({ok, _}, + orber_acl:init_acl([{tcp_in, "192.168.128.0/18", ["10.1.1.1"]}, + {tcp_in, "192.167.64.0/18#4001/5001", ["10.1.1.2"]}, + {tcp_in, "192.166.192.0/18"}], inet)), + {ok, IPTuple1} = ?match({ok, _}, inet:getaddr("192.168.128.0", inet)), + ?match({true, ["10.1.1.1"], 0}, orber_acl:match(IPTuple1, tcp_in, true)), + ?match({false, [], 0}, orber_acl:match(IPTuple1, tcp_out, true)), + {ok, IPTuple2} = ?match({ok, _}, inet:getaddr("192.167.64.0", inet)), + ?match({true, ["10.1.1.2"], {4001,5001}}, orber_acl:match(IPTuple2, tcp_in, true)), + ?match({false, [], 0}, orber_acl:match(IPTuple2, tcp_out, true)), + {ok, IPTuple3} = ?match({ok, _}, inet:getaddr("192.166.192.0", inet)), + ?match({true, [], 0}, orber_acl:match(IPTuple3, tcp_in, true)), + ?match(false, orber_acl:match(IPTuple3, tcp_out)), + ?match(ok, orber_acl:clear_acl()), + ok. + +%%----------------------------------------------------------------- +%% Test Case : +%% Description: +%%----------------------------------------------------------------- +ipv4_bm(doc) -> ["Benchmarking runtime critical IPv4 Operations."]; +ipv4_bm(suite) -> []; +ipv4_bm(_) -> + ?match({ok, _, _, _}, bm2([{tcp_in, "192.168.64.0/17"}], inet, "192.168.64.148")), + ok. +%%----------------------------------------------------------------- +%% Test Case : +%% Description: +%%----------------------------------------------------------------- +ipv6_verify(doc) -> ["Testing IPv6 Verify Operation."]; +ipv6_verify(suite) -> []; +ipv6_verify(_) -> + case orber_test_lib:version_ok() of + true -> + ?match(true, orber_acl:verify("2002:C0A8:0:0:0:0:0:0", "2002:C0A8::/48", inet6)), + ?match(true, orber_acl:verify("2002:C0A8:0:FFFF:FFFF:FFFF:FFFF:FFFF", "2002:C0A8::/48", inet6)), + ?match({false,"2002:C0A8:0:0:0:0:0:0", "2002:C0A8:0:FFFF:FFFF:FFFF:FFFF:FFFF"}, + orber_acl:verify("2002:C0A8:1:FFFF:FFFF:FFFF:FFFF:FFFF", "2002:C0A8::/48", inet6)), + ?match(true, orber_acl:verify("2002:C0A8:1:FFFF:FFFF:FFFF:FFFF:FFFF", "2002:C0A8::/47", inet6)), + ?match({false,"2002:C0A8:0:0:0:0:0:0", "2002:C0A8:1:FFFF:FFFF:FFFF:FFFF:FFFF"}, + orber_acl:verify("2002:C0A8:2:FFFF:FFFF:FFFF:FFFF:FFFF", "2002:C0A8::/47", inet6)), + ok; + Reason -> + Reason + end. + +%%----------------------------------------------------------------- +%% Test Case : +%% Description: +%%----------------------------------------------------------------- +ipv6_range(doc) -> ["Testing IPv6 Range Operation."]; +ipv6_range(suite) -> []; +ipv6_range(_) -> + case orber_test_lib:version_ok() of + true -> + ?match({ok,"2002:C0A8:0:0:0:0:0:0", "2002:C0A8:0:FFFF:FFFF:FFFF:FFFF:FFFF"}, + orber_acl:range("2002:C0A8::/48", inet6)), + ?match({ok,"2002:C0A8:0:0:0:0:0:0", "2002:C0A8:1:FFFF:FFFF:FFFF:FFFF:FFFF"}, + orber_acl:range("2002:C0A8::/47", inet6)), + ok; + Reason -> + Reason + end. + +%%----------------------------------------------------------------- +%% Test Case : +%% Description: +%%----------------------------------------------------------------- +ipv6_interfaces(doc) -> ["Testing IPv6 Interfaces Operation."]; +ipv6_interfaces(suite) -> []; +ipv6_interfaces(_) -> + case orber_test_lib:version_ok() of + true -> + ?match({ok, _}, orber_acl:init_acl([{tcp_in, "2002:C0A8::/49", ["0:0:0:0:0:0:10.1.1.1"]}], inet6)), + {ok, IPTuple1} = ?match({ok, _}, inet:getaddr("2002:C0A8:0:7FFF:FFFF:FFFF:FFFF:FFFF", inet6)), + ?match({true, ["0:0:0:0:0:0:10.1.1.1"], 0}, orber_acl:match(IPTuple1, tcp_in, true)), + ?match(false, orber_acl:match(IPTuple1, tcp_out)), + ?match(ok, orber_acl:clear_acl()), + ok; + Reason -> + Reason + end. + +%%----------------------------------------------------------------- +%% Test Case : +%% Description: +%%----------------------------------------------------------------- +ipv6_bm(doc) -> ["Benchmarking runtime critical IPv6 Operations."]; +ipv6_bm(suite) -> []; +ipv6_bm(_) -> + case orber_test_lib:version_ok() of + true -> + ?match({ok, _, _, _}, bm2([{tcp_in, "2002:C0A8::/48"}], inet6, "2002:C0A8:0:0:0:0:0:0")), + ok; + Reason -> + Reason + end. + +%%----------------------------------------------------------------- +%% Local Functions +%%----------------------------------------------------------------- +-define(NO_OF_TIMES, 1000). + +bm2(Filters, Family, Ip) -> + {ok, IPTuple} = inet:getaddr(Ip, Family), + orber_acl:init_acl(Filters, Family), + TimeBefore1 = erlang:now(), + bm_loop(IPTuple, ?NO_OF_TIMES), + TimeAfter1 = erlang:now(), + orber_acl:clear_acl(), + Time1 = computeTime(TimeBefore1, TimeAfter1), + orber_acl:init_acl(Filters, Family), + TimeBefore2 = erlang:now(), + bm_loop2(Ip, ?NO_OF_TIMES, Family), + TimeAfter2 = erlang:now(), + orber_acl:clear_acl(), + Time2 = computeTime(TimeBefore2, TimeAfter2), + orber_acl:init_acl(Filters, Family), + TimeBefore3 = erlang:now(), + bm_loop2(IPTuple, ?NO_OF_TIMES, Family), + TimeAfter3 = erlang:now(), + orber_acl:clear_acl(), + Time3 = computeTime(TimeBefore3, TimeAfter3), + {ok, round(?NO_OF_TIMES/Time1), round(?NO_OF_TIMES/Time2), round(?NO_OF_TIMES/Time3)}. + + +bm_loop(_Ip, 0) -> + ok; +bm_loop(Ip, N) -> + true = orber_acl:match(Ip, tcp_in), + bm_loop(Ip, N-1). + +bm_loop2(_Ip, 0, _Family) -> + ok; +bm_loop2(Ip, N, Family) -> + {ok, IPTuple} = inet:getaddr(Ip, Family), + true = orber_acl:match(IPTuple, tcp_in), + bm_loop2(Ip, N-1, Family). + +computeTime({_MegaSecb, Secb, MicroSecb}, {_MegaSeca, Seca, MicroSeca}) -> + (Seca - Secb) + ((MicroSeca - MicroSecb) / 1000000). + + +%%----------------------------------------------------------------- +%% END OF MODULE +%%----------------------------------------------------------------- diff --git a/lib/orber/test/orber_firewall_ipv4_in_SUITE.erl b/lib/orber/test/orber_firewall_ipv4_in_SUITE.erl new file mode 100644 index 0000000000..3ac0cb7921 --- /dev/null +++ b/lib/orber/test/orber_firewall_ipv4_in_SUITE.erl @@ -0,0 +1,280 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2004-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% + +-module(orber_firewall_ipv4_in_SUITE). + +-include("test_server.hrl"). +-include_lib("orber/include/corba.hrl"). +-include_lib("orber/COSS/CosNaming/CosNaming.hrl"). +-include_lib("orber/src/orber_iiop.hrl"). +-include_lib("orber/src/ifr_objects.hrl"). +-include("idl_output/orber_test_server.hrl"). +-include_lib("orber/COSS/CosNaming/CosNaming_NamingContextExt.hrl"). +-include_lib("orber/COSS/CosNaming/CosNaming_NamingContext.hrl"). + +-define(default_timeout, ?t:minutes(15)). + +-define(match(ExpectedRes,Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + io:format("------ CORRECT RESULT ------~n~p~n", + [AcTuAlReS]), + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~nRESULT: ~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS) + end + end()). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1, cases/0, init_all/1, finish_all/1, + init_per_testcase/2, fin_per_testcase/2, + deny_port_api/1, deny_port_range_api/1, deny_host_api/1, + deny_peerhost_api/1, allow_port_range_api/1, + allow_host_api/1, allow_peerhost_api/1, check_address_api/1]). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["API tests for orber's firewall functionallity."]; +all(suite) -> {req, + [mnesia], + {conf, init_all, cases(), finish_all}}. + +%% NOTE - the fragment test cases must bu first since we explicitly set a request +%% id. Otherwise, the request-id counter would be increased and we cannot know +%% what it is. +cases() -> + [deny_port_api, deny_port_range_api, deny_host_api, deny_peerhost_api, + allow_port_range_api, allow_host_api, allow_peerhost_api, check_address_api]. + + +init_per_testcase(_Case, Config) -> + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +init_all(Config) -> + if + is_list(Config) -> + orber:jump_start([{iiop_port, 0}, + {iiop_out_ports, {5980, 6000}}]), + Config; + true -> + exit("Config not a list") + end. + +finish_all(Config) -> + orber:jump_stop(), + Config. + +%%----------------------------------------------------------------- +%% Incomming connections - Deny +%%----------------------------------------------------------------- +deny_port_api(doc) -> ["Deny Access due to invalid local port"]; +deny_port_api(suite) -> []; +deny_port_api(_Config) -> + [IP] = ?match([_], orber:host()), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_USE_ACL_INCOMING}, + {iiop_acl, [{tcp_in, IP++"/32#7000"}]}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + ?match({'EXCEPTION', #'CosNaming_NamingContextExt_InvalidAddress'{}}, + corba:string_to_object("corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService")), +% ?line catch orber_test_lib:destroy_node(ServerNode, timeout), + ok. + +deny_port_range_api(doc) -> ["Deny Access due to invalid local port range"]; +deny_port_range_api(suite) -> []; +deny_port_range_api(_Config) -> + [IP] = ?match([_], orber:host()), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_USE_ACL_INCOMING}, + {iiop_acl, [{tcp_in, IP++"/32#7000/8000"}]}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + ?match({'EXCEPTION', #'CosNaming_NamingContextExt_InvalidAddress'{}}, + corba:string_to_object("corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService")), +% ?line catch orber_test_lib:destroy_node(ServerNode, timeout), + ok. + + +deny_host_api(doc) -> ["Deny Access due to invalid host"]; +deny_host_api(suite) -> []; +deny_host_api(_Config) -> + [IP] = ?match([_], orber:host()), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_USE_ACL_INCOMING}, + {iiop_acl, [{tcp_in, "123.123.123.123/32"}]}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + ?match({'EXCEPTION', #'CosNaming_NamingContextExt_InvalidAddress'{}}, + corba:string_to_object("corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService")), +% ?line catch orber_test_lib:destroy_node(ServerNode, timeout), + ok. + +deny_peerhost_api(doc) -> ["Deny Access due to invalid peerhost"]; +deny_peerhost_api(suite) -> []; +deny_peerhost_api(_Config) -> + [IP] = ?match([_], orber:host()), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_USE_ACL_INCOMING}, + {iiop_acl, [{tcp_in, IP++"/32", ["123.123.123.123"]}]}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + ?match({'EXCEPTION', #'CosNaming_NamingContextExt_InvalidAddress'{}}, + corba:string_to_object("corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService")), +% ?line catch orber_test_lib:destroy_node(ServerNode, timeout), + ok. + +%%----------------------------------------------------------------- +%% Incomming connections - Allow +%%----------------------------------------------------------------- +allow_port_range_api(doc) -> ["Allow Access due to valid local port range"]; +allow_port_range_api(suite) -> []; +allow_port_range_api(_Config) -> + [IP] = ?match([_], orber:host()), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_USE_ACL_INCOMING}, + {iiop_acl, [{tcp_in, IP++"/32#5980/6000"}]}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + IOR = + ?match({'IOP_IOR',_,_}, + corba:string_to_object("corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService")), + ?match(false, corba_object:not_existent(IOR)), +% ?line catch orber_test_lib:destroy_node(ServerNode, timeout), + ok. + + +allow_host_api(doc) -> ["Allow Access due to valid host"]; +allow_host_api(suite) -> []; +allow_host_api(_Config) -> + [IP] = ?match([_], orber:host()), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_USE_ACL_INCOMING}, + {iiop_acl, [{tcp_in, IP++"/32"}]}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + IOR = + ?match({'IOP_IOR',_,_}, + corba:string_to_object("corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService")), + ?match(false, corba_object:not_existent(IOR)), +% ?line catch orber_test_lib:destroy_node(ServerNode, timeout), + ok. + +allow_peerhost_api(doc) -> ["Allow Access due to valid peerhost"]; +allow_peerhost_api(suite) -> []; +allow_peerhost_api(_Config) -> + [IP] = ?match([_], orber:host()), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_USE_ACL_INCOMING}, + {iiop_acl, [{tcp_in, IP++"/32", [IP]}]}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + IOR = + ?match({'IOP_IOR',_,_}, + corba:string_to_object("corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService", + [#'IOP_ServiceContext' + {context_id=?ORBER_GENERIC_CTX_ID, + context_data = {interface, IP}}])), + ?match(false, corba_object:not_existent(IOR, + [#'IOP_ServiceContext' + {context_id=?ORBER_GENERIC_CTX_ID, + context_data = {interface, IP}}])), +% ?line catch orber_test_lib:destroy_node(ServerNode, timeout), + ok. + +%%----------------------------------------------------------------- +%% Test corbaloc strings +%%----------------------------------------------------------------- +check_address_api(doc) -> ["Test corbaloc strings"]; +check_address_api(suite) -> []; +check_address_api(_Config) -> + ?match({[[iiop,{1,0},"10.0.0.1",2809]],"NameService"}, + orber_cosnaming_utils:addresses(":10.0.0.1/NameService")), + ?match({[[iiop,{1,0},"10.0.0.1",2809]],[]}, + orber_cosnaming_utils:addresses(":10.0.0.1")), + ?match({[[iiop,{1,2},"10.0.0.1",2809]],"NameService"}, + orber_cosnaming_utils:addresses(":[email protected]/NameService")), + ?match({[[iiop,{1,0},"10.0.0.1",4001]],"NameService"}, + orber_cosnaming_utils:addresses(":10.0.0.1:4001/NameService")), + ?match({[[iiop,{1,1},"10.0.0.1",4001]],"NameService"}, + orber_cosnaming_utils:addresses(":[email protected]:4001/NameService")), + ?match({[[iiop,{1,1},"10.0.0.1",4001]],[]}, + orber_cosnaming_utils:addresses(":[email protected]:4001")), + ?match({[[iiop,{1,1},"10.0.0.1",4001]],[]}, + orber_cosnaming_utils:addresses("iiop:[email protected]:4001")), + ?match({[[iiop,{1,1},"10.0.0.1",4001]],[]}, + orber_cosnaming_utils:addresses("iiop:[email protected]:4001/")), + + ?match({[[iiop,{1,1},"myhost",4001]],[]}, + orber_cosnaming_utils:addresses("iiop:1.1@myhost:4001")), + ?match({[[iiop,{1,1},"myhost.full.name",4001]],"NameService"}, + orber_cosnaming_utils:addresses("iiop:[email protected]:4001/NameService")), + ?match({[[iiop,{1,1},"myhost",4001], + [iiop,{1,1},"myhost.full.name",2809]],"NameService"}, + orber_cosnaming_utils:addresses("iiop:1.1@myhost:4001,iiop:[email protected]/NameService")), + + ?match({[[iiop,{1,1},"123.12.23.2",4001], + [iiop,{1,1},"10.0.0.1",4001]], "NameService"}, + orber_cosnaming_utils:addresses(":[email protected]:4001,:[email protected]:4001/NameService")), + ?match({[[iiop,{1,1},"123.12.23.2",4001], + [iiop,{1,1},"10.0.0.1",4001]], []}, + orber_cosnaming_utils:addresses(":[email protected]:4001,:[email protected]:4001")), + ?match({[[iiop,{1,0},"123.12.23.2",4001], + [iiop,{1,1},"10.0.0.1",4001]], "NameService"}, + orber_cosnaming_utils:addresses(":123.12.23.2:4001,:[email protected]:4001/NameService")), + ?match({[[iiop,{1,1},"123.12.23.2",4001], + [iiop,{1,0},"10.0.0.1",4001]], "NameService"}, + orber_cosnaming_utils:addresses(":[email protected]:4001,:10.0.0.1:4001/NameService")), + ?match({[[iiop,{1,1},"123.12.23.2",2809], + [iiop,{1,1},"10.0.0.1",4001]], "NameService"}, + orber_cosnaming_utils:addresses(":[email protected],:[email protected]:4001/NameService")), + ?match({[[iiop,{1,1},"123.12.23.2",4001], + [iiop,{1,1},"10.0.0.1",2809]], "NameService"}, + orber_cosnaming_utils:addresses(":[email protected]:4001,:[email protected]/NameService")), + ?match({[[iiop,{1,0},"123.12.23.2",2809], + [iiop,{1,0},"10.0.0.1",2809]], "NameService"}, + orber_cosnaming_utils:addresses(":123.12.23.2,:10.0.0.1/NameService")), + ?match({[[iiop,{1,0},"123.12.23.2",2809], + [iiop,{1,0},"10.0.0.1",2809]], []}, + orber_cosnaming_utils:addresses(":123.12.23.2,:10.0.0.1/")), + ?match({[[iiop,{1,0},"123.12.23.2",2809], + [iiop,{1,0},"10.0.0.1",2809]], []}, + orber_cosnaming_utils:addresses("iiop:123.12.23.2,:10.0.0.1/")), + + [IP] = ?match([_], orber:host()), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_USE_ACL_INCOMING}, + {iiop_acl, [{tcp_in, IP++"/32"}]}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + ?match({'IOP_IOR',_,_}, + corba:string_to_object("corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService")), +% ?line catch orber_test_lib:destroy_node(ServerNode, timeout), + + ok. + diff --git a/lib/orber/test/orber_firewall_ipv4_out_SUITE.erl b/lib/orber/test/orber_firewall_ipv4_out_SUITE.erl new file mode 100644 index 0000000000..193fc72f7c --- /dev/null +++ b/lib/orber/test/orber_firewall_ipv4_out_SUITE.erl @@ -0,0 +1,224 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2004-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% + +-module(orber_firewall_ipv4_out_SUITE). + +-include("test_server.hrl"). +-include_lib("orber/include/corba.hrl"). +-include_lib("orber/COSS/CosNaming/CosNaming.hrl"). +-include_lib("orber/src/orber_iiop.hrl"). +-include_lib("orber/src/ifr_objects.hrl"). +-include("idl_output/orber_test_server.hrl"). +-include_lib("orber/COSS/CosNaming/CosNaming_NamingContextExt.hrl"). +-include_lib("orber/COSS/CosNaming/CosNaming_NamingContext.hrl"). + +-define(default_timeout, ?t:minutes(15)). + +-define(match(ExpectedRes,Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + io:format("------ CORRECT RESULT ------~n~p~n", + [AcTuAlReS]), + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~nRESULT: ~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS) + end + end()). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1, cases/0, init_all/1, finish_all/1, + init_per_testcase/2, fin_per_testcase/2, + deny_port_api/1, deny_port_range_api/1, deny_host_api/1, + allow_port_api/1, allow_port_range_api/1, allow_host_api/1, + local_interface_api/1]). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["API tests for orber's firewall functionallity."]; +all(suite) -> {req, + [mnesia], + {conf, init_all, cases(), finish_all}}. + +%% NOTE - the fragment test cases must bu first since we explicitly set a request +%% id. Otherwise, the request-id counter would be increased and we cannot know +%% what it is. +cases() -> + [deny_port_api, deny_port_range_api, deny_host_api, + allow_port_api, allow_port_range_api, allow_host_api, + local_interface_api]. + + +init_per_testcase(_Case, Config) -> + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +init_all(Config) -> + if + is_list(Config) -> + orber:jump_start([{iiop_port, 0}, + {iiop_out_ports, {5980, 6000}}]), + Config; + true -> + exit("Config not a list") + end. + +finish_all(Config) -> + orber:jump_stop(), + Config. + +%%----------------------------------------------------------------- +%% Incomming connections - Deny +%%----------------------------------------------------------------- +deny_port_api(doc) -> ["Deny Access due to invalid local port"]; +deny_port_api(suite) -> []; +deny_port_api(_Config) -> + [IP] = ?match([_], orber:host()), + ServerPort = orber:iiop_port(), + {ok, ClientNode, _ClientHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_USE_ACL_OUTGOING}, + {iiop_acl, [{tcp_out, IP++"/32#" ++ integer_to_list(ServerPort+10)}]}])), + ?match({'EXCEPTION', #'CosNaming_NamingContextExt_InvalidAddress'{}}, + orber_test_lib:remote_apply(ClientNode, corba, string_to_object, + ["corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService"])), +% ?line catch orber_test_lib:destroy_node(ClientNode, timeout), + ok. + +deny_port_range_api(doc) -> ["Deny Access due to invalid local port range"]; +deny_port_range_api(suite) -> []; +deny_port_range_api(_Config) -> + [IP] = ?match([_], orber:host()), + ServerPort = orber:iiop_port(), + {ok, ClientNode, _ClientHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_USE_ACL_OUTGOING}, + {iiop_acl, [{tcp_out, IP++"/32#"++integer_to_list(ServerPort+100)++ "/" ++ integer_to_list(ServerPort+120)}]}])), + ?match({'EXCEPTION', #'CosNaming_NamingContextExt_InvalidAddress'{}}, + orber_test_lib:remote_apply(ClientNode, corba, string_to_object, + ["corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService"])), +% ?line catch orber_test_lib:destroy_node(ClientNode, timeout), + ok. + + +deny_host_api(doc) -> ["Deny Access due to invalid host"]; +deny_host_api(suite) -> []; +deny_host_api(_Config) -> + [IP] = ?match([_], orber:host()), + {ok, ClientNode, _ClientHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_USE_ACL_OUTGOING}, + {iiop_acl, [{tcp_out, "123.123.123.123/32"}]}])), + ServerPort = orber:iiop_port(), + ?match({'EXCEPTION', #'CosNaming_NamingContextExt_InvalidAddress'{}}, + orber_test_lib:remote_apply(ClientNode, corba, string_to_object, + ["corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService"])), +% ?line catch orber_test_lib:destroy_node(ClientNode, timeout), + ok. + +%%----------------------------------------------------------------- +%% Incomming connections - Allow +%%----------------------------------------------------------------- +allow_port_api(doc) -> ["Allow Access due to valid local port range"]; +allow_port_api(suite) -> []; +allow_port_api(_Config) -> + [IP] = ?match([_], orber:host()), + ServerPort = orber:iiop_port(), + {ok, ClientNode, _ClientHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_USE_ACL_OUTGOING}, + {iiop_acl, [{tcp_out, IP++"/32#"++integer_to_list(ServerPort)}]}])), + IOR = + ?match({'IOP_IOR',_,_}, + orber_test_lib:remote_apply(ClientNode, corba, string_to_object, + ["corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService"])), + ?match(false, + orber_test_lib:remote_apply(ClientNode, corba_object, not_existent, [IOR])), +% ?line catch orber_test_lib:destroy_node(ClientNode, timeout), + ok. + +allow_port_range_api(doc) -> ["Allow Access due to valid local port range"]; +allow_port_range_api(suite) -> []; +allow_port_range_api(_Config) -> + [IP] = ?match([_], orber:host()), + ServerPort = orber:iiop_port(), + {ok, ClientNode, _ClientHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_USE_ACL_OUTGOING}, + {iiop_acl, [{tcp_out, IP++"/32#" ++ integer_to_list(ServerPort-10) ++ "/" ++ integer_to_list(ServerPort+10)}]}])), + IOR = + ?match({'IOP_IOR',_,_}, + orber_test_lib:remote_apply(ClientNode, corba, string_to_object, + ["corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService"])), + ?match(false, + orber_test_lib:remote_apply(ClientNode, corba_object, not_existent, [IOR])), +% ?line catch orber_test_lib:destroy_node(ClientNode, timeout), + ok. + + +allow_host_api(doc) -> ["Allow Access due to valid host"]; +allow_host_api(suite) -> []; +allow_host_api(_Config) -> + [IP] = ?match([_], orber:host()), + {ok, ClientNode, _ClientHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_USE_ACL_OUTGOING}, + {iiop_acl, [{tcp_out, IP++"/32"}]}])), + ServerPort = orber:iiop_port(), + IOR = + ?match({'IOP_IOR',_,_}, + orber_test_lib:remote_apply(ClientNode, corba, string_to_object, + ["corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService"])), + ?match(false, + orber_test_lib:remote_apply(ClientNode, corba_object, not_existent, [IOR])), +% ?line catch orber_test_lib:destroy_node(ClientNode, timeout), + ok. + +local_interface_api(doc) -> ["Allow Access due to valid host via a spcific interface"]; +local_interface_api(suite) -> []; +local_interface_api(_Config) -> + IP = orber_test_lib:get_host(), + Loopback = orber_test_lib:get_loopback_interface(), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{iiop_port, 0}, + {iiop_out_ports, {5980, 6000}}, + {ip_address, IP}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + + {ok, ClientNode, _ClientHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_USE_ACL_OUTGOING}, + {iiop_acl, [{tcp_out, IP, [Loopback]}]}])), + IOR = + ?match({'IOP_IOR',_,_}, + orber_test_lib:remote_apply(ClientNode, corba, string_to_object, + ["corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService"])), + ?match(false, + orber_test_lib:remote_apply(ClientNode, corba_object, not_existent, [IOR])), +% ?line catch orber_test_lib:destroy_node(ClientNode, timeout), + ok. + diff --git a/lib/orber/test/orber_firewall_ipv6_in_SUITE.erl b/lib/orber/test/orber_firewall_ipv6_in_SUITE.erl new file mode 100644 index 0000000000..83f48cba0c --- /dev/null +++ b/lib/orber/test/orber_firewall_ipv6_in_SUITE.erl @@ -0,0 +1,311 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2004-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(orber_firewall_ipv6_in_SUITE). + +-include("test_server.hrl"). +-include_lib("orber/include/corba.hrl"). +-include_lib("orber/COSS/CosNaming/CosNaming.hrl"). +-include_lib("orber/src/orber_iiop.hrl"). +-include_lib("orber/src/ifr_objects.hrl"). +-include("idl_output/orber_test_server.hrl"). +-include_lib("orber/COSS/CosNaming/CosNaming_NamingContextExt.hrl"). +-include_lib("orber/COSS/CosNaming/CosNaming_NamingContext.hrl"). + +-define(default_timeout, ?t:minutes(15)). + +-define(match(ExpectedRes,Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + io:format("------ CORRECT RESULT ------~n~p~n", + [AcTuAlReS]), + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~nRESULT: ~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS) + end + end()). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1, cases/0, init_all/1, finish_all/1, + init_per_testcase/2, fin_per_testcase/2, + deny_port_api/1, deny_port_range_api/1, deny_host_api/1, + deny_peerhost_api/1, allow_port_range_api/1, + allow_host_api/1, allow_peerhost_api/1, check_address_api/1]). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["API tests for orber's firewall functionallity."]; +all(suite) -> {req, + [mnesia], + {conf, init_all, cases(), finish_all}}. + +%% NOTE - the fragment test cases must bu first since we explicitly set a request +%% id. Otherwise, the request-id counter would be increased and we cannot know +%% what it is. +cases() -> + [deny_port_api, deny_port_range_api, deny_host_api, deny_peerhost_api, + allow_port_range_api, allow_host_api, allow_peerhost_api, + check_address_api]. + + +init_per_testcase(_Case, Config) -> + ?line Dog=test_server:timetrap(?default_timeout), + orber:jump_start([{iiop_port, 0}, + {iiop_out_ports, {5980, 6000}}, + {flags, ?ORB_ENV_USE_IPV6}]), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + orber:jump_stop(), + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +init_all(Config) -> + case orber_test_lib:version_ok() of + true -> + if + is_list(Config) -> + Config; + true -> + exit("Config not a list") + end; + Reason -> + Reason + end. + +finish_all(Config) -> + Config. + + +%%----------------------------------------------------------------- +%% Incomming connections - Deny +%%----------------------------------------------------------------- +deny_port_api(doc) -> ["Deny Access due to invalid local port"]; +deny_port_api(suite) -> []; +deny_port_api(_Config) -> + [IP] = ?match([_], orber:host()), + {ok, ServerNode, ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, (?ORB_ENV_USE_IPV6 bor + ?ORB_ENV_USE_ACL_INCOMING)}, + {iiop_acl, [{tcp_in, IP++"/128#7000"}]}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + ?match({'EXCEPTION', #'CosNaming_NamingContextExt_InvalidAddress'{}}, + corba:string_to_object("corbaloc::1.2@"++ServerHost++":"++integer_to_list(ServerPort)++"/NameService")), + % ?line catch orber_test_lib:destroy_node(ServerNode, timeout), + ok. + +deny_port_range_api(doc) -> ["Deny Access due to invalid local port range"]; +deny_port_range_api(suite) -> []; +deny_port_range_api(_Config) -> + [IP] = ?match([_], orber:host()), + {ok, ServerNode, ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, (?ORB_ENV_USE_IPV6 bor + ?ORB_ENV_USE_ACL_INCOMING)}, + {iiop_acl, [{tcp_in, IP++"/128#7000/8000"}]}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + ?match({'EXCEPTION', #'CosNaming_NamingContextExt_InvalidAddress'{}}, + corba:string_to_object("corbaloc::1.2@"++ServerHost++":"++integer_to_list(ServerPort)++"/NameService")), +% ?line catch orber_test_lib:destroy_node(ServerNode, timeout), + ok. + + +deny_host_api(doc) -> ["Deny Access due to invalid host"]; +deny_host_api(suite) -> []; +deny_host_api(_Config) -> + {ok, ServerNode, ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, (?ORB_ENV_USE_IPV6 bor + ?ORB_ENV_USE_ACL_INCOMING)}, + {iiop_acl, [{tcp_in, "0:0:0:0:0:0:10.1.1.1/128"}]}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + ?match({'EXCEPTION', #'CosNaming_NamingContextExt_InvalidAddress'{}}, + corba:string_to_object("corbaloc::1.2@"++ServerHost++":"++integer_to_list(ServerPort)++"/NameService")), +% ?line catch orber_test_lib:destroy_node(ServerNode, timeout), + ok. + +deny_peerhost_api(doc) -> ["Deny Access due to invalid peer host"]; +deny_peerhost_api(suite) -> []; +deny_peerhost_api(_Config) -> + [IP] = ?match([_], orber:host()), + {ok, ServerNode, ServerHost} = + ?match({ok,_,_}, + orber_test_lib:js_node([{flags, (?ORB_ENV_USE_IPV6 bor + ?ORB_ENV_USE_ACL_INCOMING)}, + {iiop_acl, [{tcp_in, IP++"/128", ["0:0:0:0:0:0:10.1.1.1"]}]}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + ?match({'EXCEPTION', #'CosNaming_NamingContextExt_InvalidAddress'{}}, + corba:string_to_object("corbaloc::1.2@"++ServerHost++":"++integer_to_list(ServerPort)++"/NameService")), +% ?line catch orber_test_lib:destroy_node(ServerNode, timeout), + ok. + +%%----------------------------------------------------------------- +%% Incomming connections - Allow +%%----------------------------------------------------------------- +allow_port_range_api(doc) -> ["Allow Access due to valid local port range"]; +allow_port_range_api(suite) -> []; +allow_port_range_api(_Config) -> + [IP] = ?match([_], orber:host()), + {ok, ServerNode, ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, (?ORB_ENV_USE_IPV6 bor + ?ORB_ENV_USE_ACL_INCOMING)}, + {iiop_acl, [{tcp_in, IP++"/128#5980/6000"}]}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + IOR = + ?match({'IOP_IOR',_,_}, + corba:string_to_object("corbaloc::1.2@"++ServerHost++":"++integer_to_list(ServerPort)++"/NameService")), + ?match(false, corba_object:not_existent(IOR)), +% ?line catch orber_test_lib:destroy_node(ServerNode, timeout), + ok. + + +allow_host_api(doc) -> ["Allow Access due to valid host"]; +allow_host_api(suite) -> []; +allow_host_api(_Config) -> + [IP] = ?match([_], orber:host()), + {ok, ServerNode, ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, (?ORB_ENV_USE_IPV6 bor + ?ORB_ENV_USE_ACL_INCOMING)}, + {iiop_acl, [{tcp_in, IP++"/128"}]}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + IOR = + ?match({'IOP_IOR',_,_}, + corba:string_to_object("corbaloc::1.2@"++ServerHost++":"++integer_to_list(ServerPort)++"/NameService")), + ?match(false, corba_object:not_existent(IOR)), + +% ?line catch orber_test_lib:destroy_node(ServerNode, timeout), + ok. + +allow_peerhost_api(doc) -> ["Allow Access due to valid host"]; +allow_peerhost_api(suite) -> []; +allow_peerhost_api(_Config) -> + [IP] = ?match([_], orber:host()), + {ok, ServerNode, ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, (?ORB_ENV_USE_IPV6 bor + ?ORB_ENV_USE_ACL_INCOMING)}, + {iiop_acl, [{tcp_in, IP++"/128", [IP]}]}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + IOR = + ?match({'IOP_IOR',_,_}, + corba:string_to_object("corbaloc::1.2@"++ServerHost++":"++integer_to_list(ServerPort)++"/NameService", + [#'IOP_ServiceContext' + {context_id=?ORBER_GENERIC_CTX_ID, + context_data = {interface, IP}}])), + ?match(false, corba_object:not_existent(IOR, + [#'IOP_ServiceContext' + {context_id=?ORBER_GENERIC_CTX_ID, + context_data = {interface, IP}}])), + +% ?line catch orber_test_lib:destroy_node(ServerNode, timeout), + ok. + +%%----------------------------------------------------------------- +%% Test corbaloc strings +%%----------------------------------------------------------------- +check_address_api(doc) -> ["Test corbaloc strings"]; +check_address_api(suite) -> []; +check_address_api(_Config) -> + ?match({[[iiop,{1,0},"0:0:0:0:0:FFFF:C02A:2A2A",2809]],"NameService"}, + orber_cosnaming_utils:addresses(":0:0:0:0:0:FFFF:C02A:2A2A/NameService")), + ?match({[[iiop,{1,0},"0:0:0:0:0:FFFF:C02A:2A2A",2809]],[]}, + orber_cosnaming_utils:addresses(":0:0:0:0:0:FFFF:C02A:2A2A")), + ?match({[[iiop,{1,2},"0:0:0:0:0:FFFF:C02A:2A2A",2809]],"NameService"}, + orber_cosnaming_utils:addresses(":1.2@0:0:0:0:0:FFFF:C02A:2A2A/NameService")), + ?match({[[iiop,{1,0},"0:0:0:0:0:FFFF:C02A:2A2A",4001]],"NameService"}, + orber_cosnaming_utils:addresses(":0:0:0:0:0:FFFF:C02A:2A2A:4001/NameService")), + ?match({[[iiop,{1,1},"0:0:0:0:0:FFFF:C02A:2A2A",4001]],"NameService"}, + orber_cosnaming_utils:addresses(":1.1@0:0:0:0:0:FFFF:C02A:2A2A:4001/NameService")), + ?match({[[iiop,{1,1},"0:0:0:0:0:FFFF:C02A:2A2A",4001]],[]}, + orber_cosnaming_utils:addresses(":1.1@0:0:0:0:0:FFFF:C02A:2A2A:4001")), + ?match({[[iiop,{1,1},"0:0:0:0:0:FFFF:C02A:2A2A",4001]],[]}, + orber_cosnaming_utils:addresses("iiop:1.1@0:0:0:0:0:FFFF:C02A:2A2A:4001")), + + ?match({[[iiop,{1,0},"0:0:0:0:0:FFFF:10.11.11.11",2809]],"NameService"}, + orber_cosnaming_utils:addresses(":0:0:0:0:0:FFFF:10.11.11.11/NameService")), + ?match({[[iiop,{1,0},"0:0:0:0:0:FFFF:10.11.11.11",2809]],[]}, + orber_cosnaming_utils:addresses(":0:0:0:0:0:FFFF:10.11.11.11")), + ?match({[[iiop,{1,2},"0:0:0:0:0:FFFF:10.11.11.11",2809]],"NameService"}, + orber_cosnaming_utils:addresses(":1.2@0:0:0:0:0:FFFF:10.11.11.11/NameService")), + ?match({[[iiop,{1,0},"0:0:0:0:0:FFFF:10.11.11.11",4001]],"NameService"}, + orber_cosnaming_utils:addresses(":0:0:0:0:0:FFFF:10.11.11.11:4001/NameService")), + ?match({[[iiop,{1,1},"0:0:0:0:0:FFFF:10.11.11.11",4001]],"NameService"}, + orber_cosnaming_utils:addresses(":1.1@0:0:0:0:0:FFFF:10.11.11.11:4001/NameService")), + ?match({[[iiop,{1,1},"0:0:0:0:0:FFFF:10.11.11.11",4001]],[]}, + orber_cosnaming_utils:addresses(":1.1@0:0:0:0:0:FFFF:10.11.11.11:4001/")), + ?match({[[iiop,{1,1},"0:0:0:0:0:FFFF:10.11.11.11",4001]],[]}, + orber_cosnaming_utils:addresses("iiop:1.1@0:0:0:0:0:FFFF:10.11.11.11:4001/")), + + ?match({[[iiop,{1,1},"myhost",4001]],[]}, + orber_cosnaming_utils:addresses("iiop:1.1@myhost:4001")), + ?match({[[iiop,{1,1},"myhost.full.name",4001]],"NameService"}, + orber_cosnaming_utils:addresses("iiop:[email protected]:4001/NameService")), + ?match({[[iiop,{1,1},"myhost",4001], + [iiop,{1,1},"myhost.full.name",2809]],"NameService"}, + orber_cosnaming_utils:addresses("iiop:1.1@myhost:4001,iiop:[email protected]/NameService")), + + ?match({[[iiop,{1,1},"0:0:0:0:0:FFFF:10.11.11.11",4001], + [iiop,{1,1},"0:0:0:0:0:FFFF:C02A:2A2A",4001]], "NameService"}, + orber_cosnaming_utils:addresses(":1.1@0:0:0:0:0:FFFF:10.11.11.11:4001,:1.1@0:0:0:0:0:FFFF:C02A:2A2A:4001/NameService")), + ?match({[[iiop,{1,1},"0:0:0:0:0:FFFF:10.11.11.11",4001], + [iiop,{1,1},"0:0:0:0:0:FFFF:C02A:2A2A",4001]], []}, + orber_cosnaming_utils:addresses(":1.1@0:0:0:0:0:FFFF:10.11.11.11:4001,:1.1@0:0:0:0:0:FFFF:C02A:2A2A:4001")), + ?match({[[iiop,{1,0},"0:0:0:0:0:FFFF:10.11.11.11",4001], + [iiop,{1,1},"0:0:0:0:0:FFFF:C02A:2A2A",4001]], "NameService"}, + orber_cosnaming_utils:addresses(":0:0:0:0:0:FFFF:10.11.11.11:4001,:1.1@0:0:0:0:0:FFFF:C02A:2A2A:4001/NameService")), + ?match({[[iiop,{1,1},"0:0:0:0:0:FFFF:10.11.11.11",4001], + [iiop,{1,0},"0:0:0:0:0:FFFF:C02A:2A2A",4001]], "NameService"}, + orber_cosnaming_utils:addresses(":1.1@0:0:0:0:0:FFFF:10.11.11.11:4001,:0:0:0:0:0:FFFF:C02A:2A2A:4001/NameService")), + ?match({[[iiop,{1,1},"0:0:0:0:0:FFFF:10.11.11.11",2809], + [iiop,{1,1},"0:0:0:0:0:FFFF:C02A:2A2A",4001]], "NameService"}, + orber_cosnaming_utils:addresses(":1.1@0:0:0:0:0:FFFF:10.11.11.11,:1.1@0:0:0:0:0:FFFF:C02A:2A2A:4001/NameService")), + ?match({[[iiop,{1,1},"0:0:0:0:0:FFFF:10.11.11.11",4001], + [iiop,{1,1},"0:0:0:0:0:FFFF:C02A:2A2A",2809]], "NameService"}, + orber_cosnaming_utils:addresses(":1.1@0:0:0:0:0:FFFF:10.11.11.11:4001,:1.1@0:0:0:0:0:FFFF:C02A:2A2A/NameService")), + ?match({[[iiop,{1,0},"0:0:0:0:0:FFFF:10.11.11.11",2809], + [iiop,{1,0},"0:0:0:0:0:FFFF:C02A:2A2A",2809]], "NameService"}, + orber_cosnaming_utils:addresses(":0:0:0:0:0:FFFF:10.11.11.11,:0:0:0:0:0:FFFF:C02A:2A2A/NameService")), + ?match({[[iiop,{1,0},"0:0:0:0:0:FFFF:10.11.11.11",2809], + [iiop,{1,0},"0:0:0:0:0:FFFF:C02A:2A2A",2809]], []}, + orber_cosnaming_utils:addresses(":0:0:0:0:0:FFFF:10.11.11.11,:0:0:0:0:0:FFFF:C02A:2A2A/")), + ?match({[[iiop,{1,0},"0:0:0:0:0:FFFF:10.11.11.11",2809], + [iiop,{1,0},"0:0:0:0:0:FFFF:C02A:2A2A",2809]], []}, + orber_cosnaming_utils:addresses("iiop:0:0:0:0:0:FFFF:10.11.11.11,:0:0:0:0:0:FFFF:C02A:2A2A/")), + + [IP] = ?match([_], orber:host()), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, (?ORB_ENV_USE_IPV6 bor + ?ORB_ENV_USE_ACL_INCOMING)}, + {iiop_acl, [{tcp_in, IP++"/128"}]}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + ?match({'IOP_IOR',_,_}, + corba:string_to_object("corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService")), +% ?line catch orber_test_lib:destroy_node(ServerNode, timeout), + ok. + + diff --git a/lib/orber/test/orber_firewall_ipv6_out_SUITE.erl b/lib/orber/test/orber_firewall_ipv6_out_SUITE.erl new file mode 100644 index 0000000000..e1856b9a47 --- /dev/null +++ b/lib/orber/test/orber_firewall_ipv6_out_SUITE.erl @@ -0,0 +1,231 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2004-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% + +-module(orber_firewall_ipv6_out_SUITE). + +-include("test_server.hrl"). +-include_lib("orber/include/corba.hrl"). +-include_lib("orber/COSS/CosNaming/CosNaming.hrl"). +-include_lib("orber/src/orber_iiop.hrl"). +-include_lib("orber/src/ifr_objects.hrl"). +-include("idl_output/orber_test_server.hrl"). +-include_lib("orber/COSS/CosNaming/CosNaming_NamingContextExt.hrl"). +-include_lib("orber/COSS/CosNaming/CosNaming_NamingContext.hrl"). + +-define(default_timeout, ?t:minutes(15)). + +-define(match(ExpectedRes,Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + io:format("------ CORRECT RESULT ------~n~p~n", + [AcTuAlReS]), + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~nRESULT: ~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS) + end + end()). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1, cases/0, init_all/1, finish_all/1, + init_per_testcase/2, fin_per_testcase/2, + deny_port_api/1, deny_port_range_api/1, deny_host_api/1, + allow_port_api/1, allow_port_range_api/1, allow_host_api/1, + local_interface_api/1]). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["API tests for orber's firewall functionallity."]; +all(suite) -> {req, + [mnesia], + {conf, init_all, cases(), finish_all}}. + +%% NOTE - the fragment test cases must bu first since we explicitly set a request +%% id. Otherwise, the request-id counter would be increased and we cannot know +%% what it is. +cases() -> + [deny_port_api, deny_port_range_api, deny_host_api, + allow_port_api, allow_port_range_api, allow_host_api, + local_interface_api]. + + +init_per_testcase(_Case, Config) -> + ?line Dog=test_server:timetrap(?default_timeout), + orber:jump_start([{iiop_port, 0}, + {iiop_out_ports, {5980, 6000}}, + {flags, ?ORB_ENV_USE_IPV6}]), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + orber:jump_stop(), + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +init_all(Config) -> + case orber_test_lib:version_ok() of + true -> + if + is_list(Config) -> + Config; + true -> + exit("Config not a list") + end; + Reason -> + Reason + end. + +finish_all(Config) -> + Config. + + +%%----------------------------------------------------------------- +%% Incomming connections - Deny +%%----------------------------------------------------------------- +deny_port_api(doc) -> ["Deny Access due to invalid local port"]; +deny_port_api(suite) -> []; +deny_port_api(_Config) -> + [IP] = ?match([_], orber:host()), + ServerPort = orber:iiop_port(), + {ok, ServerNode, ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, (?ORB_ENV_USE_IPV6 bor + ?ORB_ENV_USE_ACL_OUTGOING)}, + {iiop_acl, [{tcp_out, IP++"/128#" ++ integer_to_list(ServerPort+10)}]}])), + ?match({'EXCEPTION', #'CosNaming_NamingContextExt_InvalidAddress'{}}, + orber_test_lib:remote_apply(ServerNode, corba, string_to_object, + ["corbaloc::1.2@"++ServerHost++":"++integer_to_list(ServerPort)++"/NameService"])), +% ?line catch orber_test_lib:destroy_node(ServerNode, timeout), + ok. + +deny_port_range_api(doc) -> ["Deny Access due to invalid local port range"]; +deny_port_range_api(suite) -> []; +deny_port_range_api(_Config) -> + [IP] = ?match([_], orber:host()), + ServerPort = orber:iiop_port(), + {ok, ServerNode, ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, (?ORB_ENV_USE_IPV6 bor + ?ORB_ENV_USE_ACL_OUTGOING)}, + {iiop_acl, [{tcp_out, IP++"/128#"++integer_to_list(ServerPort+100)++ "/" ++ integer_to_list(ServerPort+120)}]}])), + ?match({'EXCEPTION', #'CosNaming_NamingContextExt_InvalidAddress'{}}, + orber_test_lib:remote_apply(ServerNode, corba, string_to_object, + ["corbaloc::1.2@"++ServerHost++":"++integer_to_list(ServerPort)++"/NameService"])), +% ?line catch orber_test_lib:destroy_node(ServerNode, timeout), + ok. + + +deny_host_api(doc) -> ["Deny Access due to invalid host"]; +deny_host_api(suite) -> []; +deny_host_api(_Config) -> + {ok, ServerNode, ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, (?ORB_ENV_USE_IPV6 bor + ?ORB_ENV_USE_ACL_OUTGOING)}, + {iiop_acl, [{tcp_out, "0:0:0:0:0:0:10.1.1.1/128"}]}])), + ServerPort = orber:iiop_port(), + ?match({'EXCEPTION', #'CosNaming_NamingContextExt_InvalidAddress'{}}, + orber_test_lib:remote_apply(ServerNode, corba, string_to_object, + ["corbaloc::1.2@"++ServerHost++":"++integer_to_list(ServerPort)++"/NameService"])), +% ?line catch orber_test_lib:destroy_node(ServerNode, timeout), + ok. + +%%----------------------------------------------------------------- +%% Incomming connections - Allow +%%----------------------------------------------------------------- +allow_port_api(doc) -> ["Allow Access due to valid local port"]; +allow_port_api(suite) -> []; +allow_port_api(_Config) -> + [IP] = ?match([_], orber:host()), + ServerPort = orber:iiop_port(), + {ok, ServerNode, ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, (?ORB_ENV_USE_IPV6 bor + ?ORB_ENV_USE_ACL_OUTGOING)}, + {iiop_acl, [{tcp_out, IP++"/128#" ++ integer_to_list(ServerPort)}]}])), + IOR = + ?match({'IOP_IOR',_,_}, + orber_test_lib:remote_apply(ServerNode, corba, string_to_object, + ["corbaloc::1.2@"++ServerHost++":"++integer_to_list(ServerPort)++"/NameService"])), + ?match(false, + orber_test_lib:remote_apply(ServerNode, corba_object, not_existent, [IOR])), +% ?line catch orber_test_lib:destroy_node(ServerNode, timeout), + ok. + +allow_port_range_api(doc) -> ["Allow Access due to valid local port range"]; +allow_port_range_api(suite) -> []; +allow_port_range_api(_Config) -> + [IP] = ?match([_], orber:host()), + ServerPort = orber:iiop_port(), + {ok, ServerNode, ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, (?ORB_ENV_USE_IPV6 bor + ?ORB_ENV_USE_ACL_OUTGOING)}, + {iiop_acl, [{tcp_out, IP++"/128#" ++ integer_to_list(ServerPort-10) ++ "/" ++ integer_to_list(ServerPort+10)}]}])), + IOR = + ?match({'IOP_IOR',_,_}, + orber_test_lib:remote_apply(ServerNode, corba, string_to_object, + ["corbaloc::1.2@"++ServerHost++":"++integer_to_list(ServerPort)++"/NameService"])), + ?match(false, + orber_test_lib:remote_apply(ServerNode, corba_object, not_existent, [IOR])), +% ?line catch orber_test_lib:destroy_node(ServerNode, timeout), + ok. + + +allow_host_api(doc) -> ["Allow Access due to valid host"]; +allow_host_api(suite) -> []; +allow_host_api(_Config) -> + [IP] = ?match([_], orber:host()), + {ok, ServerNode, ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, (?ORB_ENV_USE_IPV6 bor + ?ORB_ENV_USE_ACL_OUTGOING)}, + {iiop_acl, [{tcp_out, IP}]}])), + ServerPort = orber:iiop_port(), + IOR = + ?match({'IOP_IOR',_,_}, + orber_test_lib:remote_apply(ServerNode, corba, string_to_object, + ["corbaloc::1.2@"++ServerHost++":"++integer_to_list(ServerPort)++"/NameService"])), + ?match(false, + orber_test_lib:remote_apply(ServerNode, corba_object, not_existent, [IOR])), +% ?line catch orber_test_lib:destroy_node(ServerNode, timeout), + ok. + +local_interface_api(doc) -> ["Allow Access due to valid host via a spcific interface"]; +local_interface_api(suite) -> []; +local_interface_api(_Config) -> + [IP] = ?match([_], orber:host()), + {ok, ServerNode, ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, (?ORB_ENV_USE_IPV6 bor + ?ORB_ENV_USE_ACL_OUTGOING)}, + {iiop_acl, [{tcp_out, IP, [IP]}]}])), + ServerPort = orber:iiop_port(), + IOR = + ?match({'IOP_IOR',_,_}, + orber_test_lib:remote_apply(ServerNode, corba, string_to_object, + ["corbaloc::1.2@"++ServerHost++":"++integer_to_list(ServerPort)++"/NameService"])), + ?match(false, + orber_test_lib:remote_apply(ServerNode, corba_object, not_existent, [IOR])), +% ?line catch orber_test_lib:destroy_node(ServerNode, timeout), + ok. + diff --git a/lib/orber/test/orber_nat_SUITE.erl b/lib/orber/test/orber_nat_SUITE.erl new file mode 100644 index 0000000000..5b295dd1aa --- /dev/null +++ b/lib/orber/test/orber_nat_SUITE.erl @@ -0,0 +1,372 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2006-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% + +-module(orber_nat_SUITE). + +-include("test_server.hrl"). +-include_lib("orber/include/corba.hrl"). +-include_lib("orber/COSS/CosNaming/CosNaming.hrl"). +-include_lib("orber/src/orber_iiop.hrl"). +-include_lib("orber/src/ifr_objects.hrl"). +-include("idl_output/orber_test_server.hrl"). +-include_lib("orber/COSS/CosNaming/CosNaming_NamingContextExt.hrl"). +-include_lib("orber/COSS/CosNaming/CosNaming_NamingContext.hrl"). + + +-define(default_timeout, ?t:minutes(15)). + +-define(match(ExpectedRes,Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + io:format("------ CORRECT RESULT ------~n~p~n", + [AcTuAlReS]), + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~nRESULT: ~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS) + end + end()). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1, cases/0, init_all/1, finish_all/1, + init_per_testcase/2, fin_per_testcase/2, + nat_ip_address/1, nat_ip_address_multiple/1, + nat_ip_address_local/1, nat_ip_address_local_local/1, + nat_iiop_port/1, nat_iiop_port_local/1, + nat_iiop_port_local_local/1, nat_iiop_ssl_port/1, + nat_iiop_ssl_port_local/1]). + + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["API tests for multi orber interfaces", + "This suite test intra-ORB communication. There are three scenarios:", + "* No security at all (multi_orber_api)", + "* Two secure orbs using ssl (ssl_multi_orb_api)", + "* One secure and one orb with no security. (ssl_multi_orb_api)"]; +all(suite) -> {req, + [mnesia], + {conf, init_all, cases(), finish_all}}. + +cases() -> + [ + nat_ip_address, + nat_ip_address_multiple, + nat_ip_address_local, + nat_iiop_port, + nat_iiop_port_local, + nat_ip_address_local_local, + nat_iiop_port_local_local, + nat_iiop_ssl_port, + nat_iiop_ssl_port_local + ]. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- + +init_per_testcase(_Case, Config) -> + Path = code:which(?MODULE), + code:add_pathz(filename:join(filename:dirname(Path), "idl_output")), + Dog=test_server:timetrap(?default_timeout), + orber:jump_start([{iiop_port, 0}, + {flags, 0}]), + oe_orber_test_server:oe_register(), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + oe_orber_test_server:oe_unregister(), + orber:jump_stop(), + Path = code:which(?MODULE), + code:del_path(filename:join(filename:dirname(Path), "idl_output")), + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +init_all(Config) -> + if + is_list(Config) -> + Config; + true -> + exit("Config not a list") + end. + +finish_all(Config) -> + Config. + +%%----------------------------------------------------------------- +%% API tests for NAT +%%----------------------------------------------------------------- + +nat_ip_address(doc) -> ["This case test if the server ORB use the correct", + "interface when exporting IOR:s"]; +nat_ip_address(suite) -> []; +nat_ip_address(_Config) -> + IP = orber_test_lib:get_host(), + Loopback = orber_test_lib:get_loopback_interface(), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_ENABLE_NAT}, + {nat_ip_address, Loopback}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + IOR = ?match(#'IOP_IOR'{}, + corba:string_to_object("corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService")), + ?match({'external', {Loopback, ServerPort, _ObjectKey, _Counter, _TP, _NewHD}}, + iop_ior:get_key(IOR)), + ok. + +nat_ip_address_multiple(doc) -> ["This case test if the server ORB use the correct", + "interface when exporting IOR:s"]; +nat_ip_address_multiple(suite) -> []; +nat_ip_address_multiple(_Config) -> + IP = orber_test_lib:get_host(), + + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_ENABLE_NAT}, + {nat_ip_address, {multiple, ["10.0.0.1"]}}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + IOR = ?match(#'IOP_IOR'{}, + corba:string_to_object("corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService")), + ?match({'external', {"10.0.0.1", ServerPort, _ObjectKey, _Counter, _TP, _NewHD}}, + iop_ior:get_key(IOR)), + ok. + +nat_ip_address_local(doc) -> ["This case test if the server ORB use the correct", + "interface when exporting IOR:s"]; +nat_ip_address_local(suite) -> []; +nat_ip_address_local(_Config) -> + IP = orber_test_lib:get_host(), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_ENABLE_NAT}, + {nat_ip_address, {local, "10.0.0.1", [{IP, "127.0.0.1"}]}}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + IOR = ?match(#'IOP_IOR'{}, + corba:string_to_object("corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService")), + ?match({'external', {"10.0.0.1", ServerPort, _ObjectKey, _Counter, _TP, _NewHD}}, + iop_ior:get_key(IOR)), + ok. + +nat_ip_address_local_local(doc) -> ["This case test if the server ORB use the correct", + "interface when exporting IOR:s"]; +nat_ip_address_local_local(suite) -> []; +nat_ip_address_local_local(_Config) -> + IP = orber_test_lib:get_host(), + Loopback = orber_test_lib:get_loopback_interface(), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, + (?ORB_ENV_LOCAL_INTERFACE bor + ?ORB_ENV_ENABLE_NAT)}, + {nat_ip_address, {local, "10.0.0.1", [{IP, "10.0.0.2"}]}}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + IOR1 = ?match(#'IOP_IOR'{}, + corba:string_to_object("corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService")), + ?match({'external', {"10.0.0.2", ServerPort, _ObjectKey, _Counter, _TP, _NewHD}}, + iop_ior:get_key(IOR1)), + IOR2 = ?match(#'IOP_IOR'{}, + corba:string_to_object("corbaloc::1.2@"++Loopback++":"++integer_to_list(ServerPort)++"/NameService")), + ?match({'external', {"10.0.0.1", ServerPort, _ObjectKey, _Counter, _TP, _NewHD}}, + iop_ior:get_key(IOR2)), + ok. + +nat_iiop_port(doc) -> ["This case test if the server ORB use the correct", + "port when exporting IOR:s"]; +nat_iiop_port(suite) -> []; +nat_iiop_port(_Config) -> + IP = orber_test_lib:get_host(), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_ENABLE_NAT}, + {nat_iiop_port, 42}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + IOR = ?match(#'IOP_IOR'{}, + corba:string_to_object("corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService")), + ?match({'external', {_IP, 42, _ObjectKey, _Counter, _TP, _NewHD}}, + iop_ior:get_key(IOR)), + ok. + +nat_iiop_port_local(doc) -> ["This case test if the server ORB use the correct", + "port when exporting IOR:s"]; +nat_iiop_port_local(suite) -> []; +nat_iiop_port_local(_Config) -> + IP = orber_test_lib:get_host(), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, ?ORB_ENV_ENABLE_NAT}, + {nat_iiop_port, {local, 42, [{4001, 43}]}}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + IOR = ?match(#'IOP_IOR'{}, + corba:string_to_object("corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService")), + ?match({'external', {_IP, 42, _ObjectKey, _Counter, _TP, _NewHD}}, + iop_ior:get_key(IOR)), + ok. + +nat_iiop_port_local_local(doc) -> ["This case test if the server ORB use the correct", + "port when exporting IOR:s"]; +nat_iiop_port_local_local(suite) -> []; +nat_iiop_port_local_local(_Config) -> + IP = orber_test_lib:get_host(), + Loopback = orber_test_lib:get_loopback_interface(), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node([{flags, + (?ORB_ENV_LOCAL_INTERFACE bor + ?ORB_ENV_ENABLE_NAT)}, + {ip_address, IP}])), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + orber_test_lib:remote_apply(ServerNode, orber_env, configure_override, [nat_iiop_port, {local, 42, [{ServerPort, 43}]}]), + IOR1 = ?match(#'IOP_IOR'{}, + corba:string_to_object("corbaloc::1.2@"++IP++":"++integer_to_list(ServerPort)++"/NameService")), + ?match({'external', {IP, 43, _ObjectKey, _Counter, _TP, _NewHD}}, + iop_ior:get_key(IOR1)), + {ok, Ref} = ?match({ok, _}, + orber_test_lib:remote_apply(ServerNode, orber, + add_listen_interface, + [Loopback, normal, 10088])), + IOR2 = ?match(#'IOP_IOR'{}, + corba:string_to_object("corbaloc::1.2@"++Loopback++":10088/NameService")), + ?match({'external', {IP, 42, _ObjectKey, _Counter, _TP, _NewHD}}, + iop_ior:get_key(IOR2)), + ?match(ok, + orber_test_lib:remote_apply(ServerNode, orber, + remove_listen_interface, [Ref])), + ok. + + +%%----------------------------------------------------------------- +%% API tests for ORB to ORB, ssl security depth 1 +%%----------------------------------------------------------------- + +nat_iiop_ssl_port(doc) -> ["SECURE MULTI ORB API tests (SSL depth 1)", + "Make sure NAT works for SSL"]; +nat_iiop_ssl_port(suite) -> []; +nat_iiop_ssl_port(_Config) -> + case os:type() of + vxworks -> + {skipped, "No SSL-support for VxWorks."}; + _ -> + IP = orber_test_lib:get_host(), + ServerOptions = orber_test_lib:get_options(iiop_ssl, server, + 1, [{iiop_ssl_port, 0}, + {flags, ?ORB_ENV_ENABLE_NAT}, + {ip_address, IP}]), + ClientOptions = orber_test_lib:get_options(iiop_ssl, client, + 1, [{iiop_ssl_port, 0}]), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node(ServerOptions)), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + SSLServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_ssl_port, []), + NATSSLServerPort = SSLServerPort+1, + {ok, Ref} = ?match({ok, _}, + orber_test_lib:remote_apply(ServerNode, orber, + add_listen_interface, + [IP, ssl, NATSSLServerPort])), + orber_test_lib:remote_apply(ServerNode, orber_env, configure_override, + [nat_iiop_ssl_port, + {local, NATSSLServerPort, [{4001, 43}]}]), + + {ok, ClientNode, _ClientHost} = + ?match({ok,_,_}, orber_test_lib:js_node(ClientOptions)), + ?match(ok, orber_test_lib:remote_apply(ServerNode, orber_test_lib, + install_test_data, + [ssl])), + + IOR1 = ?match(#'IOP_IOR'{}, + orber_test_lib:remote_apply(ClientNode, corba, + string_to_object, + ["corbaname::1.2@"++IP++":"++ + integer_to_list(ServerPort)++"/NameService#mamba"])), + + ?match({'external', {_IP, _Port, _ObjectKey, _Counter, _TP, + #host_data{protocol = ssl, + ssl_data = #'SSLIOP_SSL'{port = NATSSLServerPort}}}}, + iop_ior:get_key(IOR1)), + ?match(ok, orber_test_lib:remote_apply(ServerNode, orber_test_lib, + uninstall_test_data, + [ssl])), + ?match(ok, + orber_test_lib:remote_apply(ServerNode, orber, + remove_listen_interface, [Ref])), + ok + end. + +nat_iiop_ssl_port_local(doc) -> ["SECURE MULTI ORB API tests (SSL depth 1)", + "Make sure NAT works for SSL"]; +nat_iiop_ssl_port_local(suite) -> []; +nat_iiop_ssl_port_local(_Config) -> + case os:type() of + vxworks -> + {skipped, "No SSL-support for VxWorks."}; + _ -> + IP = orber_test_lib:get_host(), + ServerOptions = orber_test_lib:get_options(iiop_ssl, server, + 1, [{iiop_ssl_port, 0}, + {flags, + (?ORB_ENV_LOCAL_INTERFACE bor + ?ORB_ENV_ENABLE_NAT)}, + {ip_address, IP}]), + ClientOptions = orber_test_lib:get_options(iiop_ssl, client, + 1, [{iiop_ssl_port, 0}]), + {ok, ServerNode, _ServerHost} = + ?match({ok,_,_}, orber_test_lib:js_node(ServerOptions)), + ServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_port, []), + SSLServerPort = orber_test_lib:remote_apply(ServerNode, orber, iiop_ssl_port, []), + NATSSLServerPort = SSLServerPort+1, + {ok, Ref} = ?match({ok, _}, + orber_test_lib:remote_apply(ServerNode, orber, + add_listen_interface, + [IP, ssl, NATSSLServerPort])), + orber_test_lib:remote_apply(ServerNode, orber_env, configure_override, + [nat_iiop_ssl_port, + {local, NATSSLServerPort, [{NATSSLServerPort, NATSSLServerPort}]}]), + + {ok, ClientNode, _ClientHost} = + ?match({ok,_,_}, orber_test_lib:js_node(ClientOptions)), + ?match(ok, orber_test_lib:remote_apply(ServerNode, orber_test_lib, + install_test_data, + [ssl])), + + IOR1 = ?match(#'IOP_IOR'{}, + orber_test_lib:remote_apply(ClientNode, corba, + string_to_object, + ["corbaname::1.2@"++IP++":"++ + integer_to_list(ServerPort)++"/NameService#mamba"])), + + ?match({'external', {_IP, _Port, _ObjectKey, _Counter, _TP, + #host_data{protocol = ssl, + ssl_data = #'SSLIOP_SSL'{port = NATSSLServerPort}}}}, + iop_ior:get_key(IOR1)), + ?match(ok, orber_test_lib:remote_apply(ServerNode, orber_test_lib, + uninstall_test_data, + [ssl])), + ?match(ok, + orber_test_lib:remote_apply(ServerNode, orber, + remove_listen_interface, [Ref])), + ok + end. + diff --git a/lib/orber/test/orber_test.idl b/lib/orber/test/orber_test.idl new file mode 100644 index 0000000000..3d943f2d18 --- /dev/null +++ b/lib/orber/test/orber_test.idl @@ -0,0 +1,95 @@ +// +// %CopyrightBegin% +// +// Copyright Ericsson AB 1997-2010. All Rights Reserved. +// +// The contents of this file are subject to the Erlang Public License, +// Version 1.1, (the "License"); you may not use this file except in +// compliance with the License. You should have received a copy of the +// Erlang Public License along with this software. If not, it can be +// retrieved online at http://www.erlang.org/. +// +// Software distributed under the License is distributed on an "AS IS" +// basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +// the License for the specific language governing rights and limitations +// under the License. +// +// %CopyrightEnd% +// +module Module +{ + + enum Enum {horse, pig, cow}; + + struct Struct0 { + long l; + short s; + char c; + }; + + struct Struct1 { + string s; + unsigned short us; + unsigned long ul; + }; + + struct Struct2 { + sequence <long> long_sequence; + Enum e; + octet o; + }; + + struct HEADER { + short EID; + short NDW; + short SSID; + }; + + enum Enum1 {orange,banana, apple}; + + union Union switch (short) { + case 0: short First; + case 1: string Second; + case 2: char Third; + }; + + union Union1 switch (Enum){ + case horse: short horse; + case pig: sequence <string> Second; + case cow: Enum1 Third; + }; + + union Union2 switch (Enum){ + case horse: long a[10]; + case pig: Union u; + case cow: Union1 u1; + }; + + exception Except1 { + string why; + sequence <string> rest_of_name; + }; + + exception Except2 { + Enum1 e; + Struct2 s; + }; + + exception Except3 { + Union1 u; + unsigned short s; + Object o ; + }; + + exception Except4 {}; + + interface I1 { + void a(); + }; + + interface I2 { + void a(); + }; + +}; + diff --git a/lib/orber/test/orber_test_lib.erl b/lib/orber/test/orber_test_lib.erl new file mode 100644 index 0000000000..a694dc58c4 --- /dev/null +++ b/lib/orber/test/orber_test_lib.erl @@ -0,0 +1,1498 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1999-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(orber_test_lib). +-include("test_server.hrl"). +-include_lib("orber/include/corba.hrl"). +-include_lib("orber/include/ifr_types.hrl"). +-include_lib("orber/src/orber_iiop.hrl"). +-include("idl_output/orber_test_server.hrl"). +-include_lib("orber/COSS/CosNaming/CosNaming.hrl"). + +-define(match(ExpectedRes,Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + io:format("------ CORRECT RESULT ------~n~p~n", + [AcTuAlReS]), + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~nRESULT: ~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS) + end + end()). + +-export([js_node/2, + js_node/1, + js_node/0, + slave_sup/0, + remote_apply/4, + install_test_data/1, + light_tests/3, + uninstall_test_data/1, + destroy_node/2, + lookup/2, + alternate_iiop_address/2, + create_alternate_iiop_address/2, + alternate_ssl_iiop_address/3, + create_alternate_ssl_iiop_address/3, + test_coding/1, + test_coding/2, + corba_object_tests/2, + timeouts/3, + precond/3, + postcond/4, + oe_get_interface/0, + create_components_IOR/1, + get_options/2, + get_options/3, + get_options/4, + version_ok/0, + ssl_version/0, + get_loopback_interface/0, + get_loopback_interface/1, + get_host/0, + get_host/1]). + +%% Interceptor functions. +-export([new_out_connection/3, + new_in_connection/3, + closed_in_connection/1, + closed_out_connection/1, + in_request_encoded/6, + in_reply_encoded/6, + out_reply_encoded/6, + out_request_encoded/6, + in_request/6, + in_reply/6, + out_reply/6, + out_request/6]). + +%%------------------------------------------------------------ +%% function : ssl_version +%% Arguments: +%% Returns : integer() +%% Effect : +%% +%%------------------------------------------------------------ +ssl_version() -> + case catch erlang:system_info(otp_release) of + Version when is_list(Version) -> + if + "R12B" < Version -> + 3; + true -> + 2 + end; + _ -> + 2 + end. + +%%------------------------------------------------------------ +%% function : version_ok +%% Arguments: +%% Returns : true | {skipped, Reason} +%% Effect : +%% +%%------------------------------------------------------------ +version_ok() -> + {ok, Hostname} = inet:gethostname(), + case inet:getaddr(Hostname, inet6) of + {error,nxdomain} -> + {skipped, "Inet cannot handle IPv6"}; + _ -> + case inet:getaddr("0:0:0:0:0:FFFF:127.0.0.1", inet6) of + {error,nxdomain} -> + {skipped, "Inet cannot handle IPv6"}; + _ -> + case gen_tcp:listen(0, [{reuseaddr, true}, inet6]) of + {ok, LSock} -> + gen_tcp:close(LSock), + true; + {error, _} -> + {skipped, "Inet cannot handle IPv6"} + end + end + end. +%%------------------------------------------------------------ +%% function : get_host +%% Arguments: Family - inet | inet6 +%% Returns : string() +%% Effect : +%% +%%------------------------------------------------------------ +get_host() -> + get_host(inet). +get_host(Family) -> + case os:type() of + {win32, _} -> + case os:version() of + {6, _, _} when Family == inet -> + "127.0.0.1"; + {6, _, _} -> + "0:0:0:0:0:FFFF:7F00:0001"; + _ -> + [IP] = ?match([_], orber:host()), + IP + end; + _ -> + [IP] = ?match([_], orber:host()), + IP + end. + +%%------------------------------------------------------------ +%% function : get_loopback_interface +%% Arguments: Family - inet | inet6 +%% Returns : string() +%% Effect : +%% +%%------------------------------------------------------------ +get_loopback_interface() -> + get_loopback_interface(inet). +get_loopback_interface(Family) -> + case os:type() of + {win32, _} -> + case os:version() of + {6, _, _} when Family == inet -> + "127.0.0.2"; + {6, _, _} -> + "0:0:0:0:0:FFFF:7F00:0002"; + _ when Family == inet -> + "127.0.0.1"; + _ -> + "0:0:0:0:0:FFFF:7F00:0001" + end; + _ when Family == inet -> + "127.0.0.1"; + _ -> + "0:0:0:0:0:FFFF:7F00:0001" + end. + +%%------------------------------------------------------------ +%% function : js_node/4 +%% Arguments: Port - which iiop_port (integer()) +%% InitOptions - [{Key, Value}] +%% {Type, StartOptions} - {lightweight, [{Key, Value}]} +%% Returns : {ok, Node} | {error, _} +%% Effect : Starts a new slave-node with given (optinally) +%% extra arguments. If fails it retries 'Retries' times. +%%------------------------------------------------------------ +js_node() -> + js_node([], []). + +js_node(InitOptions) when is_list(InitOptions) -> + js_node(InitOptions, []). + +js_node(InitOptions, StartOptions) when is_list(InitOptions) -> + {A,B,C} = erlang:now(), + [_, Host] = string:tokens(atom_to_list(node()), [$@]), + _NewInitOptions = check_options(InitOptions), + js_node_helper(Host, 0, lists:concat([A,'_',B,'_',C]), + InitOptions, 10, StartOptions). + +js_node_helper(Host, Port, Name, Options, Retries, StartOptions) -> + case starter(Host, Name, create_paths()) of + {ok, NewNode} -> + case net_adm:ping(NewNode) of + pong -> + start_ssl(lists:member({secure, ssl}, Options), NewNode), + {ok, Cwd} = file:get_cwd(), + Path = code:get_path(), + ok = rpc:call(NewNode, file, set_cwd, [Cwd]), + true = rpc:call(NewNode, code, set_path, [Path]), + rpc:call(NewNode, application, load, [orber]), + ok = rpc:call(NewNode, corba, orb_init, + [[{iiop_port, Port}, + {orber_debug_level, 10}|Options]]), + start_orber(StartOptions, NewNode), + spawn_link(NewNode, ?MODULE, slave_sup, []), + rpc:multicall([node() | nodes()], global, sync, []), + ok = rpc:call(NewNode, orber, info, [io]), + {ok, NewNode, Host}; + _ -> + {error, "net_adm:ping(Node) failed"} + end; + {error, Reason} when Retries == 0 -> + {error, Reason}; + {error, Reason} -> + io:format("Could not start slavenode ~p:~p due to: ~p~n", + [Host, Port, Reason]), + timer:sleep(500), + js_node_helper(Host, Port, Name, Options, Retries-1, StartOptions) + end. + +check_options(Options) -> + case {os:type(), os:version()} of + {{win32, _}, {6, _, _}} -> + %% Vista, need to run additional checks. + case {orber_tb:keysearch(ip_address, Options), + orber_tb:keysearch(flags, Options, 0)} of + {undefined, Flags} -> + case ?ORB_FLAG_TEST(Flags, ?ORB_ENV_USE_IPV6) of + true -> + [{ip_address, get_host(inet6)}|Options]; + false -> + [{ip_address, get_host(inet)}|Options] + end; + _ -> + Options + end; + _ -> + Options + end. + +starter(Host, Name, Args) -> + case os:type() of + vxworks -> + test_server:start_node(Name, slave, [{args,Args}]); + _ -> + slave:start_link(Host, Name, Args) + end. + +slave_sup() -> + process_flag(trap_exit, true), + receive + {'EXIT', _, _} -> + case os:type() of + vxworks -> + erlang:halt(); + _ -> + ignore + end + end. + +start_ssl(true, Node) -> + rpc:call(Node, ssl, start, []), + rpc:call(Node, crypto, start, []), + rpc:call(Node, ssl, seed, ["testing"]); +start_ssl(_, _) -> + ok. + +start_orber({lightweigth, Options}, Node) -> + ok = rpc:call(Node, orber, start_lightweight, [Options]); +start_orber(lightweight, Node) -> + ok = rpc:call(Node, orber, start_lightweight, []); +start_orber(_, Node) -> + ok = rpc:call(Node, orber, jump_start, []). + + +%%----------------------------------------------------------------- +%% Type - ssl | iiop_ssl +%% Role - 'server' | 'client' +%% Options - [{Key, Value}] +%%----------------------------------------------------------------- +get_options(Type, Role) -> + get_options(Type, Role, 2, []). + +get_options(ssl, Role, Level) -> + get_options(ssl, Role, Level, []). + +get_options(ssl, Role, 2, Options) -> + Dir = filename:join([code:lib_dir(ssl), "examples", "certs", "etc"]), + [{depth, 2}, + {verify, 2}, + {keyfile, filename:join([Dir, Role, "key.pem"])}, + {cacertfile, filename:join([Dir, Role, "cacerts.pem"])}, + {certfile, filename:join([Dir, Role, "cert.pem"])}|Options]; +get_options(iiop_ssl, _Role, 2, Options) -> + Dir = filename:join([code:lib_dir(ssl), "examples", "certs", "etc"]), + [{ssl_server_depth, 2}, + {ssl_server_verify, 2}, + {ssl_server_certfile, filename:join([Dir, "server", "cert.pem"])}, + {ssl_server_cacertfile, filename:join([Dir, "server", "cacerts.pem"])}, + {ssl_server_keyfile, filename:join([Dir, "server", "key.pem"])}, + {ssl_client_depth, 2}, + {ssl_client_verify, 2}, + {ssl_client_certfile, filename:join([Dir, "client", "cert.pem"])}, + {ssl_client_cacertfile, filename:join([Dir, "client", "cacerts.pem"])}, + {ssl_client_keyfile, filename:join([Dir, "client", "key.pem"])}, + {secure, ssl}|Options]; +get_options(iiop_ssl, _Role, 1, Options) -> + Dir = filename:join([code:lib_dir(ssl), "examples", "certs", "etc"]), + [{ssl_server_depth, 1}, + {ssl_server_verify, 0}, + {ssl_server_certfile, filename:join([Dir, "server", "cert.pem"])}, + {ssl_server_cacertfile, filename:join([Dir, "server", "cacerts.pem"])}, + {ssl_server_keyfile, filename:join([Dir, "server", "key.pem"])}, + {ssl_client_depth, 1}, + {ssl_client_verify, 0}, + {ssl_client_certfile, filename:join([Dir, "client", "cert.pem"])}, + {ssl_client_cacertfile, filename:join([Dir, "client", "cacerts.pem"])}, + {ssl_client_keyfile, filename:join([Dir, "client", "key.pem"])}, + {secure, ssl}|Options]. + + +create_paths() -> + Path = filename:dirname(code:which(?MODULE)), + " -pa " ++ Path ++ " -pa " ++ + filename:join(Path, "idl_output") ++ + " -pa " ++ + filename:join(Path, "all_SUITE_data") ++ + " -pa " ++ + filename:dirname(code:which(orber)). + +%%------------------------------------------------------------ +%% function : destroy_node +%% Arguments: Node - which node to destroy. +%% Type - normal | ssl +%% Returns : +%% Effect : +%%------------------------------------------------------------ + +destroy_node(Node, Type) -> + stopper(Node, Type). + +stopper(Node, _Type) -> + case os:type() of + vxworks -> + test_server:stop_node(Node); + _ -> + slave:stop(Node) + end. + + +%%------------------------------------------------------------ +%% function : remote_apply +%% Arguments: N - Node, M - Module, +%% F - Function, A - Arguments (list) +%% Returns : +%% Effect : +%%------------------------------------------------------------ +remote_apply(N, M,F,A) -> + case rpc:call(N, M, F, A) of + {badrpc, Reason} -> + exit(Reason); + Other -> + Other + end. + + + +%%------------------------------------------------------------ +%% function : install_test_data +%% Arguments: WhichSuite +%% Returns : ok +%% Effect : Installs test data associated with 'WhichSuite' +%%------------------------------------------------------------ + +install_test_data(nameservice) -> + oe_orber_test_server:oe_register(), + Mamba = orber_test_server:oe_create([], [{regname, {local, mamba}}]), + true = corba:add_initial_service("Mamba", Mamba), + NS = corba:resolve_initial_references("NameService"), + NC1 = lname_component:set_id(lname_component:create(), "mamba"), + N = lname:insert_component(lname:create(), 1, NC1), + 'CosNaming_NamingContext':bind(NS, N,Mamba); + +install_test_data({nameservice, AltAddr, AltPort}) -> + oe_orber_test_server:oe_register(), + Obj = orber_test_server:oe_create([], [{regname, {local, mamba}}]), + Mamba = corba:add_alternate_iiop_address(Obj, AltAddr, AltPort), + true = corba:add_initial_service("Mamba", Mamba), + NS = corba:resolve_initial_references("NameService"), + NC1 = lname_component:set_id(lname_component:create(), "mamba"), + N = lname:insert_component(lname:create(), 1, NC1), + 'CosNaming_NamingContext':bind(NS, N,Mamba); + +install_test_data(timeout) -> + oe_orber_test_server:oe_register(), + Mamba = orber_test_server:oe_create([], {local, mamba}), + Viper = orber_test_timeout_server:oe_create([], {local, viper}), + NS = corba:resolve_initial_references("NameService"), + NC1 = lname_component:set_id(lname_component:create(), "mamba"), + N1 = lname:insert_component(lname:create(), 1, NC1), + NC2 = lname_component:set_id(lname_component:create(), "viper"), + N2 = lname:insert_component(lname:create(), 1, NC2), + 'CosNaming_NamingContext':bind(NS, N1, Mamba), + 'CosNaming_NamingContext':bind(NS, N2, Viper); + +install_test_data(pseudo) -> + oe_orber_test_server:oe_register(), + Mamba = orber_test_server:oe_create([], [{pseudo,true}]), + NS = corba:resolve_initial_references("NameService"), + NC1 = lname_component:set_id(lname_component:create(), "mamba"), + N = lname:insert_component(lname:create(), 1, NC1), + 'CosNaming_NamingContext':bind(NS, N,Mamba); + +install_test_data(ssl) -> + oe_orber_test_server:oe_register(), + Mamba = orber_test_server:oe_create([], [{regname, {local, mamba}}]), + NS = corba:resolve_initial_references("NameService"), + NC1 = lname_component:set_id(lname_component:create(), "mamba"), + N = lname:insert_component(lname:create(), 1, NC1), + 'CosNaming_NamingContext':bind(NS, N,Mamba); + +install_test_data(ssl_simple) -> + oe_orber_test_server:oe_register(); + +install_test_data(light) -> + %% Nothing to do at the moment but we might in the future + ok; + +install_test_data(_) -> + {error, "no_implement"}. + + +%%------------------------------------------------------------ +%% function : uninstall_test_data +%% Arguments: WhichSuite +%% Returns : ok +%% Effect : Uninstalls test data associated with 'WhichSuite' +%%------------------------------------------------------------ + +uninstall_test_data(pseudo) -> + NS = corba:resolve_initial_references("NameService"), + NC1 = lname_component:set_id(lname_component:create(), "mamba"), + N = lname:insert_component(lname:create(), 1, NC1), + _Obj = (catch 'CosNaming_NamingContext':resolve(NS, N)), + catch 'CosNaming_NamingContext':destroy(NS), + oe_orber_test_server:oe_unregister(); + +uninstall_test_data(timeout) -> + NS = corba:resolve_initial_references("NameService"), + NC1 = lname_component:set_id(lname_component:create(), "mamba"), + N1 = lname:insert_component(lname:create(), 1, NC1), + + NC2 = lname_component:set_id(lname_component:create(), "viper"), + N2 = lname:insert_component(lname:create(), 1, NC2), + Mamba = (catch 'CosNaming_NamingContext':resolve(NS, N1)), + Viper = (catch 'CosNaming_NamingContext':resolve(NS, N2)), + catch corba:dispose(Mamba), + catch corba:dispose(Viper), + catch 'CosNaming_NamingContext':destroy(NS), + oe_orber_test_server:oe_unregister(); + +uninstall_test_data(nameservice) -> + true = corba:remove_initial_service("Mamba"), + NS = corba:resolve_initial_references("NameService"), + NC1 = lname_component:set_id(lname_component:create(), "mamba"), + N = lname:insert_component(lname:create(), 1, NC1), + Obj = (catch 'CosNaming_NamingContext':resolve(NS, N)), + catch corba:dispose(Obj), + catch 'CosNaming_NamingContext':destroy(NS), + oe_orber_test_server:oe_unregister(); + +uninstall_test_data(ssl) -> + NS = corba:resolve_initial_references("NameService"), + NC1 = lname_component:set_id(lname_component:create(), "mamba"), + N = lname:insert_component(lname:create(), 1, NC1), + Obj = (catch 'CosNaming_NamingContext':resolve(NS, N)), + catch corba:dispose(Obj), + catch 'CosNaming_NamingContext':destroy(NS), + oe_orber_test_server:oe_unregister(); + +uninstall_test_data(ssl_simple) -> + oe_orber_test_server:oe_unregister(); + +uninstall_test_data(light) -> + %% Nothing to do at the moment but we might in the future + ok; + +uninstall_test_data(_) -> + {error, "no_implement"}. + +%%------------------------------------------------------------ +%% function : corba_object_tests +%% Arguments: TestServerObj a orber_test_server ref +%% OtherObj - any other Orber object. +%% Returns : term() +%% Effect : +%%------------------------------------------------------------ + +corba_object_tests(TestServerObj, OtherObj) -> + ?match(false, + corba_object:is_a(TestServerObj, "IDL:orber_parent/inherrit:1.0")), + ?match(true, + corba_object:is_a(TestServerObj, "IDL:omg.org/orber_parent/inherrit:1.0")), + ?match(true, + corba_object:is_a(TestServerObj, "IDL:omg.org/orber_test/server:1.0")), + ?match(false, + corba_object:is_a(TestServerObj, "IDL:orber_test/server:1.0")), + ?match(false, + corba_object:is_a(TestServerObj, "IDL:omg.org/orber_parent/inherrit:1.1")), + ?match(false, + corba_object:is_a(TestServerObj, "NotValidIFRID")), + ?match(false, + corba_object:is_nil(TestServerObj)), + ?match(false, + corba_object:is_equivalent(OtherObj,TestServerObj)), + ?match(true, + corba_object:is_equivalent(TestServerObj,TestServerObj)), + ?match(false, corba_object:non_existent(TestServerObj)), + ?match(false, corba_object:not_existent(TestServerObj)), + ?match(#fullinterfacedescription{}, corba_object:get_interface(TestServerObj)), + + ok. + +%%------------------------------------------------------------ +%% function : lookup +%% Arguments: Port - which port the other orb uses. +%% Returns : term() +%% Effect : +%%------------------------------------------------------------ + +lookup(Host, Port) -> + Key = Host++":"++integer_to_list(Port), + NSR = corba:resolve_initial_references_remote("NameService", + ["iiop://"++Key]), + + NC1 = lname_component:set_id(lname_component:create(), "not_exist"), + N1 = lname:insert_component(lname:create(), 1, NC1), + ?match({'EXCEPTION',{'CosNaming_NamingContext_NotFound',_,_,_}}, + 'CosNaming_NamingContext':resolve(NSR, N1)), + + NC2 = lname_component:set_id(lname_component:create(), "mamba"), + N2 = lname:insert_component(lname:create(), 1, NC2), + Obj = ?match({'IOP_IOR',"IDL:omg.org/orber_test/server:1.0",_}, + 'CosNaming_NamingContext':resolve(NSR, N2)), + orber_test_server:print(Obj), + Obj2 = ?match({'IOP_IOR',"IDL:omg.org/orber_test/server:1.0",_}, + corba:string_to_object("corbaname:iiop:1.1@"++Key++"/NameService#mamba")), + + orber_test_server:print(Obj2), + + NSR2 = ?match({'IOP_IOR',"IDL:omg.org/CosNaming/NamingContextExt:1.0",_}, + corba:string_to_object("corbaloc:iiop:1.1@"++Key++"/NameService")), + Obj3 = ?match({'IOP_IOR',"IDL:omg.org/orber_test/server:1.0",_}, + 'CosNaming_NamingContext':resolve(NSR2, N2)), + orber_test_server:print(Obj3). + +%%------------------------------------------------------------ +%% function : alternate_iiop_address +%% Arguments: Port - which port the other orb uses. +%% Returns : term() +%% Effect : +%%------------------------------------------------------------ +alternate_iiop_address(Host, Port) -> + IOR = create_alternate_iiop_address(Host, Port), + + ?match(false, corba_object:non_existent(IOR)), + ?match({'object_forward',_}, corba:locate(IOR)), + ?match({'object_forward',_}, corba:locate(IOR, 10000)), + ok. + +%%------------------------------------------------------------ +%% function : create_alternate_iiop_address +%% Arguments: Port - which port the other orb uses. +%% Returns : term() +%% Effect : +%%------------------------------------------------------------ +create_alternate_iiop_address(Host, Port) -> + MC = [#'IOP_TaggedComponent'{tag = ?TAG_ORB_TYPE, + component_data = ?ORBER_ORB_TYPE_1}, + #'IOP_TaggedComponent'{tag = ?TAG_CODE_SETS, + component_data = ?DEFAULT_CODESETS}, + #'IOP_TaggedComponent'{tag = ?TAG_ALTERNATE_IIOP_ADDRESS, + component_data = #'ALTERNATE_IIOP_ADDRESS'{ + 'HostID' = Host, + 'Port' = Port}}, + #'IOP_TaggedComponent'{tag = ?TAG_ALTERNATE_IIOP_ADDRESS, + component_data = #'ALTERNATE_IIOP_ADDRESS'{ + 'HostID' = Host, + 'Port' = 8000}}, + #'IOP_TaggedComponent'{tag = ?TAG_ALTERNATE_IIOP_ADDRESS, + component_data = #'ALTERNATE_IIOP_ADDRESS'{ + 'HostID' = Host, + 'Port' = 8000}}], + #'IOP_IOR'{type_id=TypeID, + profiles=P1} = _IORA = iop_ior:create({1,2}, + "IDL:omg.org/CosNaming/NamingContextExt:1.0", + [Host], 8000, -1, + "NameService", MC, 0, 0), + #'IOP_IOR'{profiles=P2} = _IORB = iop_ior:create({1,1}, + "IDL:omg.org/CosNaming/NamingContextExt:1.0", + [Host], 8000, -1, + "NameService", [], 0, 0), + #'IOP_IOR'{type_id=TypeID, profiles=P2++P1}. + + +%%------------------------------------------------------------ +%% function : create_components_IOR +%% Arguments: +%% Returns : term() +%% Effect : +%%------------------------------------------------------------ +create_components_IOR(Version) -> + MC = [#'IOP_TaggedComponent'{tag = ?TAG_ORB_TYPE, + component_data = ?ORBER_ORB_TYPE_1}, + #'IOP_TaggedComponent'{tag = ?TAG_CODE_SETS, + component_data = ?DEFAULT_CODESETS}, + #'IOP_TaggedComponent'{tag = ?TAG_ALTERNATE_IIOP_ADDRESS, + component_data = #'ALTERNATE_IIOP_ADDRESS'{ + 'HostID' = "127.0.0.1", + 'Port' = 4001}}, + #'IOP_TaggedComponent'{tag = ?TAG_SSL_SEC_TRANS, + component_data = #'SSLIOP_SSL'{target_supports = 0, + target_requires = 1, + port = 2}}, + #'IOP_TaggedComponent'{tag = ?TAG_FT_GROUP, + component_data = + #'FT_TagFTGroupTaggedComponent' + {version = #'GIOP_Version'{major = 1, + minor = 2}, + ft_domain_id = "FT_FTDomainId", + object_group_id = ?ULONGLONGMAX, + object_group_ref_version = ?LONGMAX}}, + #'IOP_TaggedComponent'{tag = ?TAG_FT_PRIMARY, + component_data = + #'FT_TagFTPrimaryTaggedComponent'{primary = true}}, + #'IOP_TaggedComponent'{tag = ?TAG_FT_HEARTBEAT_ENABLED, + component_data = + #'FT_TagFTHeartbeatEnabledTaggedComponent'{heartbeat_enabled = true}}, + #'IOP_TaggedComponent'{tag = ?TAG_CSI_SEC_MECH_LIST, + component_data = + #'CSIIOP_CompoundSecMechList' + {stateful = false, + mechanism_list = + [#'CSIIOP_CompoundSecMech' + {target_requires = 6, + transport_mech = + #'IOP_TaggedComponent' + {tag=?TAG_TLS_SEC_TRANS, + component_data=#'CSIIOP_TLS_SEC_TRANS' + {target_supports = 7, + target_requires = 8, + addresses = + [#'CSIIOP_TransportAddress'{host_name = "127.0.0.1", + port = 6001}]}}, + as_context_mech = + #'CSIIOP_AS_ContextSec' + {target_supports = 9, target_requires = 10, + client_authentication_mech = [1, 255], + target_name = [2,255]}, + sas_context_mech = + #'CSIIOP_SAS_ContextSec' + {target_supports = 11, target_requires = 12, + privilege_authorities = + [#'CSIIOP_ServiceConfiguration' + {syntax = ?ULONGMAX, + name = [3,255]}], + supported_naming_mechanisms = [[4,255],[5,255]], + supported_identity_types = ?ULONGMAX}}, + #'CSIIOP_CompoundSecMech' + {target_requires = 6, + transport_mech = + #'IOP_TaggedComponent' + {tag=?TAG_NULL_TAG, + component_data=[]}, + as_context_mech = + #'CSIIOP_AS_ContextSec' + {target_supports = 9, target_requires = 10, + client_authentication_mech = [1, 255], + target_name = [2,255]}, + sas_context_mech = + #'CSIIOP_SAS_ContextSec' + {target_supports = 11, target_requires = 12, + privilege_authorities = + [#'CSIIOP_ServiceConfiguration' + {syntax = ?ULONGMAX, + name = [3,255]}], + supported_naming_mechanisms = [[4,255],[5,255]], + supported_identity_types = ?ULONGMAX}}, + #'CSIIOP_CompoundSecMech' + {target_requires = 6, + transport_mech = + #'IOP_TaggedComponent' + {tag=?TAG_SECIOP_SEC_TRANS, + component_data=#'CSIIOP_SECIOP_SEC_TRANS' + {target_supports = 7, + target_requires = 8, + mech_oid = [0,255], + target_name = [0,255], + addresses = + [#'CSIIOP_TransportAddress'{host_name = "127.0.0.1", + port = 6001}]}}, + as_context_mech = + #'CSIIOP_AS_ContextSec' + {target_supports = 9, target_requires = 10, + client_authentication_mech = [1, 255], + target_name = [2,255]}, + sas_context_mech = + #'CSIIOP_SAS_ContextSec' + {target_supports = 11, target_requires = 12, + privilege_authorities = + [#'CSIIOP_ServiceConfiguration' + {syntax = ?ULONGMAX, + name = [3,255]}], + supported_naming_mechanisms = [[4,255],[5,255]], + supported_identity_types = ?ULONGMAX}}]}}], + iop_ior:create(Version, "IDL:omg.org/CosNaming/NamingContextExt:1.0", + ["127.0.0.1"], 5001, -1, + "NameService", MC, 0, 0). + + +%%------------------------------------------------------------ +%% function : alternate_ssl_iiop_address +%% Arguments: Port - which port the other orb uses. +%% Returns : term() +%% Effect : +%%------------------------------------------------------------ +alternate_ssl_iiop_address(Host, Port, SSLPort) -> + IOR = create_alternate_ssl_iiop_address(Host, Port, SSLPort), + + ?match(false, corba_object:non_existent(IOR)), + ?match({'object_forward',_}, corba:locate(IOR)), + ?match({'object_forward',_}, corba:locate(IOR, 10000)), + ok. + + +%%------------------------------------------------------------ +%% function : create_alternate_ssl_iiop_address +%% Arguments: Port - which port the other orb uses. +%% Returns : term() +%% Effect : +%%------------------------------------------------------------ +create_alternate_ssl_iiop_address(Host, Port, SSLPort) -> + MC = [#'IOP_TaggedComponent'{tag = ?TAG_ORB_TYPE, + component_data = ?ORBER_ORB_TYPE_1}, + #'IOP_TaggedComponent'{tag = ?TAG_CODE_SETS, + component_data = ?DEFAULT_CODESETS}, + #'IOP_TaggedComponent'{tag = ?TAG_ALTERNATE_IIOP_ADDRESS, + component_data = #'ALTERNATE_IIOP_ADDRESS'{ + 'HostID' = Host, + 'Port' = Port}}, + #'IOP_TaggedComponent'{tag = ?TAG_ALTERNATE_IIOP_ADDRESS, + component_data = #'ALTERNATE_IIOP_ADDRESS'{ + 'HostID' = Host, + 'Port' = 8000}}, + #'IOP_TaggedComponent'{tag = ?TAG_ALTERNATE_IIOP_ADDRESS, + component_data = #'ALTERNATE_IIOP_ADDRESS'{ + 'HostID' = Host, + 'Port' = 8000}}, + #'IOP_TaggedComponent'{tag=?TAG_SSL_SEC_TRANS, + component_data=#'SSLIOP_SSL'{target_supports = 2, + target_requires = 2, + port = SSLPort}}], + #'IOP_IOR'{type_id=TypeID, + profiles=P1} = _IORA = iop_ior:create_external({1,2}, + "IDL:omg.org/CosNaming/NamingContextExt:1.0", + Host, 8000, + "NameService", MC), + #'IOP_IOR'{profiles=P2} = _IORB = iop_ior:create_external({1,1}, + "IDL:omg.org/CosNaming/NamingContextExt:1.0", + Host, 8000, + "NameService", []), + #'IOP_IOR'{type_id=TypeID, profiles=P2++P1}. + + +%%------------------------------------------------------------ +%% function : timeouts +%% Arguments: Port - which port the other orb uses. +%% Returns : term() +%% Effect : +%%------------------------------------------------------------ + +timeouts(Host, Port, ReqT) -> + NSR = corba:resolve_initial_references_remote("NameService", + ["iiop://"++Host++":"++integer_to_list(Port)]), + NC1 = lname_component:set_id(lname_component:create(), "mamba"), + N1 = lname:insert_component(lname:create(), 1, NC1), + NC2 = lname_component:set_id(lname_component:create(), "viper"), + N2 = lname:insert_component(lname:create(), 1, NC2), + Mamba = 'CosNaming_NamingContext':resolve(NSR, N1), + Viper = 'CosNaming_NamingContext':resolve(NSR, N2), + + ?match({'EXCEPTION',{'TIMEOUT',_,_,_}}, + orber_test_timeout_server:twoway_function(Viper, ReqT, ReqT*2)), + ?match(ok, orber_test_timeout_server:oneway_function(Viper, ReqT*2)), + + ?match({'EXCEPTION',{'TIMEOUT',_,_,_}}, + orber_test_server:testing_iiop_twoway_delay(Mamba, ReqT)), + ?match(ok, orber_test_server:testing_iiop_oneway_delay(Mamba, ReqT)), + + %% Since the objects are stalled we must wait until they are available again + %% to be able to run any more tests and get the correct results. + timer:sleep(ReqT*4), + + ?match(ok, orber_test_timeout_server:twoway_function(Viper, ReqT*2, ReqT)), + ?match(ok, orber_test_timeout_server:oneway_function(Viper, ReqT*2)), + + ?match(ok, orber_test_server:testing_iiop_twoway_delay(Mamba, 0)), + ?match(ok, orber_test_server:testing_iiop_oneway_delay(Mamba, 0)), + + timer:sleep(ReqT*4), + ok. + +%%------------------------------------------------------------ +%% function : light_tests +%% Arguments: Host - which node to contact. +%% Port - which port the other orb uses. +%% Returns : term() +%% Effect : +%%------------------------------------------------------------ + +light_tests(Host, Port, ObjName) -> + NSR = corba:resolve_initial_references_remote("NameService", + ["iiop://"++Host++":"++integer_to_list(Port)]), + NC1 = lname_component:set_id(lname_component:create(), "not_exist"), + N1 = lname:insert_component(lname:create(), 1, NC1), + %% We cannot handle any unknown replies (besides those found in stub). + ?match({'EXCEPTION', + {'CosNaming_NamingContext_NotFound', + "IDL:omg.org/CosNaming/NamingContext/NotFound:1.0",_,_}}, + 'CosNaming_NamingContext':resolve(NSR, N1)), + NC2 = lname_component:set_id(lname_component:create(), ObjName), + N2 = lname:insert_component(lname:create(), 1, NC2), + Obj = ?match({'IOP_IOR',"IDL:omg.org/orber_test/server:1.0",_}, + 'CosNaming_NamingContext':resolve(NSR, N2)), + Nodes = orber:get_lightweight_nodes(), + io:format("Light Nodes: ~p~n", [Nodes]), + orber_test_server:print(Obj), + test_coding(Obj), + ok. + + +%%------------------------------------------------------------ +%% function : test_coding_simple +%% Arguments: ObjReference +%% Returns : term() +%% Effect : test encode/decode for all simple datatypes. +%%------------------------------------------------------------ + +test_coding(Obj) -> + test_coding(Obj, false). + +test_coding(Obj, Local) -> + %%--- Testing code and decode arguments --- + ?match({ok, 1.5}, orber_test_server:testing_iiop_float(Obj, 1.5)), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_float(Obj, atom)), + + ?match({ok,1.0}, orber_test_server:testing_iiop_double(Obj, 1.0)), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_double(Obj, "wrong")), + + ?match({ok,0}, orber_test_server:testing_iiop_short(Obj, 0)), + ?match({ok,?SHORTMAX}, orber_test_server:testing_iiop_short(Obj, ?SHORTMAX)), + ?match({ok,?SHORTMIN}, orber_test_server:testing_iiop_short(Obj, ?SHORTMIN)), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_short(Obj, atomic)), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_short(Obj, ?SHORTMAX+1)), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_short(Obj, ?SHORTMIN-1)), + + ?match({ok,0}, orber_test_server:testing_iiop_ushort(Obj, 0)), + ?match({ok,?USHORTMAX}, orber_test_server:testing_iiop_ushort(Obj, ?USHORTMAX)), + ?match({ok,?USHORTMIN}, orber_test_server:testing_iiop_ushort(Obj, ?USHORTMIN)), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_ushort(Obj, ?USHORTMAX+1)), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_ushort(Obj, ?USHORTMIN-1)), + + ?match({ok,0}, orber_test_server:testing_iiop_long(Obj, 0)), + ?match({ok,?LONGMAX}, orber_test_server:testing_iiop_long(Obj, ?LONGMAX)), + ?match({ok,?LONGMIN}, orber_test_server:testing_iiop_long(Obj, ?LONGMIN)), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_long(Obj, "wrong")), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_long(Obj, ?LONGMAX+1)), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_long(Obj, ?LONGMIN-1)), + + ?match({ok,0}, orber_test_server:testing_iiop_longlong(Obj, 0)), + ?match({ok,?LONGLONGMAX}, orber_test_server:testing_iiop_longlong(Obj, ?LONGLONGMAX)), + ?match({ok,?LONGLONGMIN}, orber_test_server:testing_iiop_longlong(Obj, ?LONGLONGMIN)), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_longlong(Obj, "wrong")), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_longlong(Obj, ?LONGLONGMAX+1)), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_longlong(Obj, ?LONGLONGMIN-1)), + + ?match({ok,0}, orber_test_server:testing_iiop_ulong(Obj, 0)), + ?match({ok,?ULONGMAX}, orber_test_server:testing_iiop_ulong(Obj, ?ULONGMAX)), + ?match({ok,?ULONGMIN}, orber_test_server:testing_iiop_ulong(Obj, ?ULONGMIN)), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_ulong(Obj, ?ULONGMAX+1)), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_ulong(Obj, ?ULONGMIN-1)), + + ?match({ok,0}, orber_test_server:testing_iiop_ulonglong(Obj, 0)), + ?match({ok,?ULONGLONGMAX}, orber_test_server:testing_iiop_ulonglong(Obj, ?ULONGLONGMAX)), + ?match({ok,?ULONGLONGMIN}, orber_test_server:testing_iiop_ulonglong(Obj, ?ULONGLONGMIN)), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_ulonglong(Obj, ?ULONGLONGMAX+1)), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_ulonglong(Obj, ?ULONGLONGMIN-1)), + + ?match({ok,98}, orber_test_server:testing_iiop_char(Obj, 98)), + ?match({ok,$b}, orber_test_server:testing_iiop_char(Obj, $b)), + + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_char(Obj, atomic)), + + ?match({ok,65535}, orber_test_server:testing_iiop_wchar(Obj, 65535)), + ?match({ok,$b}, orber_test_server:testing_iiop_wchar(Obj, $b)), + + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_wchar(Obj, atomic)), + + ?match({ok,true}, orber_test_server:testing_iiop_bool(Obj, true)), + ?match({ok,false}, orber_test_server:testing_iiop_bool(Obj, false)), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_bool(Obj, atom)), + + ?match({ok,1}, orber_test_server:testing_iiop_octet(Obj, 1)), +% No real guards for this case. +% ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, +% orber_test_server:testing_iiop_octet(Obj, 1.5)), + IOR12 = create_components_IOR({1,2}), + ?match({ok,Obj}, orber_test_server:testing_iiop_obj(Obj, Obj)), + ?match({ok,IOR12}, orber_test_server:testing_iiop_obj(Obj, IOR12)), + PObj = orber_test_server:oe_create([], [{pseudo,true}]), + ?match({ok, _}, orber_test_server:testing_iiop_obj(Obj, PObj)), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_obj(Obj, "no_object")), + ?match({ok,"string"}, orber_test_server:testing_iiop_string(Obj, "string")), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_string(Obj, "ToLongString")), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_string(Obj, atomic)), + + ?match({ok,[65535]}, orber_test_server:testing_iiop_wstring(Obj, [65535])), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_wstring(Obj, "ToLongWstring")), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_wstring(Obj, atomic)), + + ?match({ok, one}, + orber_test_server:testing_iiop_enum(Obj, one)), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_enum(Obj, three)), + ?match({ok,[1,2,3]}, + orber_test_server:testing_iiop_seq(Obj, [1,2,3])), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_seq(Obj, [1,2,3,4])), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_seq(Obj, false)), + + + ?match({ok,[#orber_test_server_struc{a=1, b=2}]}, + orber_test_server:testing_iiop_struc_seq(Obj, + [#orber_test_server_struc{a=1, b=2}])), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_struc_seq(Obj, false)), + + ?match({ok,[#orber_test_server_uni{label=1, value=66}]}, + orber_test_server:testing_iiop_uni_seq(Obj, + [#orber_test_server_uni{label=1, value=66}])), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_uni_seq(Obj, false)), + + ?match({ok,{"one", "two"}}, + orber_test_server:testing_iiop_array(Obj, {"one", "two"})), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_array(Obj, {"one", "two", "three"})), + ?match({ok,#orber_test_server_struc{a=1, b=2}}, + orber_test_server:testing_iiop_struct(Obj, + #orber_test_server_struc{a=1, b=2})), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_struct(Obj, + #orber_test_server_struc{a="WRONG", b=2})), + ?match({ok,#orber_test_server_uni{label=1, value=66}}, + orber_test_server:testing_iiop_union(Obj, + #orber_test_server_uni{label=1, value=66})), + + ?match({ok,#orber_test_server_uni_d{label=1, value=66}}, + orber_test_server:testing_iiop_union_d(Obj, + #orber_test_server_uni_d{label=1, value=66})), + + ?match({ok,#orber_test_server_uni_d{label=2, value=true}}, + orber_test_server:testing_iiop_union_d(Obj, + #orber_test_server_uni_d{label=2, value=true})), + + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_union_d(Obj, + #orber_test_server_uni_d{label=2, value=66})), + + case Local of + true -> + ?match({ok,#orber_test_server_uni{label=2, value=66}}, + orber_test_server:testing_iiop_union(Obj, + #orber_test_server_uni{label=2, value=66})); + false -> + ?match({ok,#orber_test_server_uni{label=2, value=undefined}}, + orber_test_server:testing_iiop_union(Obj, + #orber_test_server_uni{label=2, value=66})) + end, + + C1 = orber_test_server:fixed52const1(), + C2 = orber_test_server:fixed52const2(), + C3 = orber_test_server:fixed52const3(), + + C4 = orber_test_server:fixed52negconst1(), + C5 = orber_test_server:fixed52negconst2(), + C6 = orber_test_server:fixed52negconst3(), + + ?match({ok,C1}, orber_test_server:testing_iiop_fixed(Obj, C1)), + ?match({ok,C2}, orber_test_server:testing_iiop_fixed(Obj, C2)), + ?match({ok,C3}, orber_test_server:testing_iiop_fixed(Obj, C3)), + ?match({ok,C4}, orber_test_server:testing_iiop_fixed(Obj, C4)), + ?match({ok,C5}, orber_test_server:testing_iiop_fixed(Obj, C5)), + ?match({ok,C6}, orber_test_server:testing_iiop_fixed(Obj, C6)), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_fixed(Obj, #fixed{digits = 5, + scale = 2, + value = 123450})), + + ?match(ok, orber_test_server:testing_iiop_void(Obj)), + + ?match({'EXCEPTION',{'BAD_QOS',_,_,_}}, + orber_test_server:pseudo_call_raise_exc(Obj, 1)), + ?match({'EXCEPTION',{'BAD_QOS',_,_,_}}, + orber_test_server:pseudo_call_raise_exc(Obj, 2)), + ?match({'EXCEPTION',{'orber_test_server_UserDefinedException',_}}, + orber_test_server:raise_local_exception(Obj)), + ?match({'EXCEPTION',{'orber_test_server_ComplexUserDefinedException',_, + [#orber_test_server_struc{a=1, b=2}]}}, + orber_test_server:raise_complex_local_exception(Obj)), + %% Test all TypeCodes + ?match({ok, #any{typecode = tk_long, value = 1}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_long, + value = 1})), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_long, + value = "wrong"})), + ?match({ok, #any{typecode = tk_float, value = 1.5}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_float, + value = 1.5})), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_long, + value = "wrong"})), + ?match({ok, #any{typecode = tk_double}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_double, + value = 1.0})), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_double, + value = "wrong"})), + ?match({ok, #any{typecode = tk_short, value = -1}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_short, + value = -1})), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_short, + value = atomic})), + ?match({ok, #any{typecode = tk_ushort, value = 1}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_ushort, + value = 1})), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_ushort, + value = -1})), + ?match({ok, #any{typecode = tk_long, value = 1}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_long, + value = 1})), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_long, + value = "wrong"})), + ?match({ok, #any{typecode = tk_longlong, value = 1}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_longlong, + value = 1})), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_longlong, + value = "wrong"})), + ?match({ok, #any{typecode = tk_ulong, value = 1}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_ulong, + value = 1})), + ?match({ok, #any{typecode = tk_ulong, value = 4294967295}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_ulong, + value = 4294967295})), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_ulong, + value = 4294967296})), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_ulong, + value = -1})), + ?match({ok, #any{typecode = tk_ulonglong, value = 1}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_ulonglong, + value = 1})), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_ulonglong, + value = -1})), + ?match({ok, #any{typecode = tk_char, value = 98}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_char, + value = 98})), + ?match({ok, #any{typecode = tk_char, value = $b}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_char, + value = $b})), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_char, + value = atomic})), + ?match({ok, #any{typecode = tk_wchar, value = 65535}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_wchar, + value = 65535})), + ?match({ok, #any{typecode = tk_wchar, value = $b}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_wchar, + value = $b})), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_wchar, + value = atomic})), + ?match({ok, #any{typecode = tk_boolean, value = true}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_boolean, + value = true})), + ?match({ok, #any{typecode = tk_boolean, value = false}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_boolean, + value = false})), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_boolean, + value = 1})), + ?match({ok, #any{typecode = tk_octet, value = 1}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_octet, + value = 1})), + ?match({ok, #any{typecode = {tk_objref, "IDL:omg.org/orber_test/server:1.0", "server"}, value = Obj}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = {tk_objref, "IDL:omg.org/orber_test/server:1.0", "server"}, + value = Obj})), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = {tk_objref, "IDL:omg.org/orber_test/server:1.0", "server"}, + value = "No Object"})), + ?match({ok, #any{typecode = {tk_string, 6}, value = "string"}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = {tk_string, 6}, + value = "string"})), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = tk_string, + value = atomic})), + ?match({ok, #any{typecode = {tk_wstring, 1}, value = [65535]}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = {tk_wstring, 1}, + value = [65535]})), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = {tk_wstring, 1}, + value = atomic})), + ?match({ok, #any{typecode = {tk_enum, "IDL:omg.org/orber_test/server/enumerant:1.0", "enumerant", ["one","two"]}, + value = two}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = {tk_enum, "IDL:omg.org/orber_test/server/enumerant:1.0", "enumerant", ["one","two"]}, + value = two})), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = {tk_enum, "IDL:omg.org/orber_test/server/enumerant:1.0", "enumerant", ["one","two"]}, + value = three})), + + + ?match({ok, #any{typecode = {tk_sequence, tk_long, 3}, + value = [1,2,3]}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = {tk_sequence, tk_long, 3}, + value = [1,2,3]})), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = {tk_sequence, tk_long, 3}, + value = false})), + + + + ?match({ok, #any{typecode = {tk_array,{tk_string,0},2}, + value = {"one", "two"}}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = {tk_array,{tk_string,0},2}, + value = {"one", "two"}})), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = {tk_array,{tk_string,0},2}, + value = {"one", "two", "three"}})), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = {tk_array,{tk_string,0},2}, + value = {1, 2}})), + ?match({ok, #any{typecode = {tk_struct,"IDL:omg.org/orber_test/server/struc:1.0", + "struc", + [{"a",tk_long},{"b",tk_short}]}, + value = #orber_test_server_struc{a=1, b=2}}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = {tk_struct,"IDL:omg.org/orber_test/server/struc:1.0", + "struc", + [{"a",tk_long},{"b",tk_short}]}, + value = #orber_test_server_struc{a=1, b=2}})), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = {tk_struct,"IDL:omg.org/orber_test/server/struc:1.0", + "struc", + [{"a",tk_long},{"b",tk_short}]}, + value = #orber_test_server_struc{a=1, b="string"}})), + ?match({ok, #any{typecode = + {tk_union,"IDL:omg.org/orber_test/server/uni:1.0", + "uni", tk_long, -1, [{1,"a",tk_long}]}, + value = #orber_test_server_uni{label=1, value=66}}}, + orber_test_server: + testing_iiop_any(Obj, + #any{typecode = + {tk_union,"IDL:omg.org/orber_test/server/uni:1.0", + "uni", tk_long, -1, [{1,"a",tk_long}]}, + value = #orber_test_server_uni{label=1, value=66}})), + case Local of + true -> + ?match({ok, #any{typecode = + {tk_union,"IDL:omg.org/orber_test/server/uni:1.0", + "uni", tk_long, -1, [{1,"a",tk_long}]}, + value = #orber_test_server_uni{label=2, value=66}}}, + orber_test_server: + testing_iiop_any(Obj, + #any{typecode = + {tk_union,"IDL:omg.org/orber_test/server/uni:1.0", + "uni", tk_long, -1, [{1,"a",tk_long}]}, + value = #orber_test_server_uni{label=2, value=66}})); + false -> + ?match({ok, #any{typecode = + {tk_union,"IDL:omg.org/orber_test/server/uni:1.0", + "uni", tk_long, -1, [{1,"a",tk_long}]}, + value = #orber_test_server_uni{label=2, value=undefined}}}, + orber_test_server: + testing_iiop_any(Obj, + #any{typecode = + {tk_union,"IDL:omg.org/orber_test/server/uni:1.0", + "uni", tk_long, -1, [{1,"a",tk_long}]}, + value = #orber_test_server_uni{label=2, value=66}})) + end, + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server: + testing_iiop_any(Obj, + #any{typecode = + {tk_union,"IDL:omg.org/orber_test/server/uni:1.0", + "uni", tk_long, -1, [{1,"a",tk_long}]}, + value = #orber_test_server_uni{label=1, value="string"}})), + + ?match({ok, #any{typecode = {tk_fixed,5,2}, + value = #fixed{digits = 5, scale = 2, value = 12345}}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = {tk_fixed,5,2}, + value = #fixed{digits = 5, + scale = 2, + value = 12345}})), + ?match({ok, #any{typecode = {tk_fixed,10,2}, + value = #fixed{digits = 10, scale = 2, value = 1234567890}}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = {tk_fixed,10,2}, + value = #fixed{digits = 10, + scale = 2, + value = 1234567890}})), + ?match({ok, #any{typecode = {tk_fixed,6,2}, + value = #fixed{digits = 6, scale = 2, value = 300000}}}, + orber_test_server:testing_iiop_any(Obj, #any{typecode = {tk_fixed,6,2}, + value = #fixed{digits = 6, + scale = 2, + value = 300000}})), + ?match({'EXCEPTION',{'MARSHAL',_,_,_}}, + orber_test_server: + testing_iiop_server_marshal(Obj, "string")), + ok. + +%%--------------- Testing Post- & Pre-cond ------------------- +precond(Module, Function, Args) -> + error_logger:info_msg("=============== pre-condition ============ +Module : ~p +Function : ~p +Arguments : ~p +==========================================~n", [Module, Function, Args]), + ok. + +postcond(Module, Function, Args, Result) -> + error_logger:info_msg("=============== post-condition =========== +Module : ~p +Function : ~p +Arguments : ~p +Result : ~p +==========================================~n", [Module, Function, Args, Result]), + ok. + +%%--------------- Testing Missing Module --------------------- +oe_get_interface() -> + non_existing_module:tc(foo). + +%%--------------- INTERCEPTOR FUNCTIONS ---------------------- +%%------------------------------------------------------------ +%% function : new_in_connection +%% Arguments: +%% Returns : +%%------------------------------------------------------------ +new_in_connection(Arg, CHost, Port) -> + Host = node(), + [{SHost, SPort}] = orber:find_sockname_by_peername(CHost, Port), + Peers = orber:find_peername_by_sockname(SHost, SPort), + error_logger:info_msg("=============== new_in_connection ======== +Node : ~p +From Host : ~p +From Port : ~p +To Host : ~p +To Port : ~p +Peers : ~p +Arg : ~p +==========================================~n", + [Host, CHost, Port, SHost, SPort, Peers, Arg]), + {Host}. + +%%------------------------------------------------------------ +%% function : new_out_connection +%% Arguments: +%% Returns : +%%------------------------------------------------------------ +new_out_connection(Arg, SHost, Port) -> + Host = node(), + error_logger:info_msg("=============== new_out_connection ======= +Node : ~p +To Host : ~p +To Port : ~p +Arg : ~p +==========================================~n", + [Host, SHost, Port, Arg]), + {Host}. + +%%------------------------------------------------------------ +%% function : closed_in_connection +%% Arguments: +%% Returns : +%%------------------------------------------------------------ +closed_in_connection(Arg) -> + error_logger:info_msg("=============== closed_in_connection ===== +Node : ~p +Connection: ~p +==========================================~n", + [node(), Arg]), + Arg. + +%%------------------------------------------------------------ +%% function : closed_out_connection +%% Arguments: +%% Returns : +%%------------------------------------------------------------ +closed_out_connection(Arg) -> + error_logger:info_msg("=============== closed_out_connection ==== +Node : ~p +Connection: ~p +==========================================~n", + [node(), Arg]), + Arg. + +%%------------------------------------------------------------ +%% function : in_request_encoded +%% Arguments: +%% Returns : +%%------------------------------------------------------------ +in_request_encoded(Ref, _ObjKey, Ctx, Op, + <<100:8,101:8,102:8,103:8,104:8,105:8,106:8,107:8,108:8,109:8,110:8,T/binary>>, _Args) -> + error_logger:info_msg("=============== in_request_encoded ======= +Connection: ~p +Operation : ~p +Body : ~p +Context : ~p +==========================================~n", + [Ref, Op, T, Ctx]), + {T, "NewArgs"}. + +%%------------------------------------------------------------ +%% function : in_reply_encoded +%% Arguments: +%% Returns : +%%------------------------------------------------------------ +in_reply_encoded(Ref, _ObjKey, Ctx, Op, + <<100:8,101:8,102:8,103:8,104:8,105:8,106:8,107:8,108:8,109:8,110:8,T/binary>>, + _Args) -> + error_logger:info_msg("============== in_reply_encoded ========== +Connection: ~p +Operation : ~p +Body : ~p +Context : ~p +==========================================~n", + [Ref, Op, T, Ctx]), + {T, "NewArgs"}. + +%%------------------------------------------------------------ +%% function : out_reply_encoded +%% Arguments: +%% Returns : +%%------------------------------------------------------------ +out_reply_encoded(Ref, _ObjKey, Ctx, Op, List, _Args) -> + error_logger:info_msg("============== out_reply_encoded ========= +Connection: ~p +Operation : ~p +Body : ~p +Context : ~p +==========================================~n", + [Ref, Op, List, Ctx]), + {list_to_binary([<<100:8,101:8,102:8,103:8,104:8,105:8,106:8,107:8,108:8,109:8,110:8>>|List]), "NewArgs"}. + +%%------------------------------------------------------------ +%% function : out_request_encoded +%% Arguments: +%% Returns : +%%------------------------------------------------------------ +out_request_encoded(Ref, _ObjKey, Ctx, Op, List, _Args) -> + error_logger:info_msg("============== out_request_encoded ======= +Connection: ~p +Operation : ~p +Body : ~p +Context : ~p +==========================================~n", + [Ref, Op, List, Ctx]), + {list_to_binary([<<100:8,101:8,102:8,103:8,104:8,105:8,106:8,107:8,108:8,109:8,110:8>>|List]), "NewArgs"}. + +%%------------------------------------------------------------ +%% function : in_request +%% Arguments: +%% Returns : +%%------------------------------------------------------------ +in_request(Ref, _ObjKey, Ctx, Op, Params, _Args) -> + error_logger:info_msg("=============== in_request =============== +Connection: ~p +Operation : ~p +Parameters: ~p +Context : ~p +==========================================~n", + [Ref, Op, Params, Ctx]), + {Params, "NewArgs"}. + +%%------------------------------------------------------------ +%% function : in_reply +%% Arguments: +%% Returns : +%%------------------------------------------------------------ +in_reply(Ref, _ObjKey, Ctx, Op, Reply, _Args) -> + error_logger:info_msg("=============== in_reply ================= +Connection: ~p +Operation : ~p +Reply : ~p +Context : ~p +==========================================~n", + [Ref, Op, Reply, Ctx]), + {Reply, "NewArgs"}. + +%%------------------------------------------------------------ +%% function : postinvoke +%% Arguments: +%% Returns : +%%------------------------------------------------------------ +out_reply(Ref, _ObjKey, Ctx, Op, Reply, _Args) -> + error_logger:info_msg("=============== out_reply ================ +Connection: ~p +Operation : ~p +Reply : ~p +Context : ~p +==========================================~n", + [Ref, Op, Reply, Ctx]), + {Reply, "NewArgs"}. + +%%------------------------------------------------------------ +%% function : postinvoke +%% Arguments: +%% Returns : +%%------------------------------------------------------------ +out_request(Ref, _ObjKey, Ctx, Op, Params, _Args) -> + error_logger:info_msg("=============== out_request ============== +Connection: ~p +Operation : ~p +Parameters: ~p +Context : ~p +==========================================~n", + [Ref, Op, Params, Ctx]), + {Params, "NewArgs"}. + + +%%--------------- END OF MODULE ------------------------------ + + + diff --git a/lib/orber/test/orber_test_server.cfg b/lib/orber/test/orber_test_server.cfg new file mode 100644 index 0000000000..84c671f795 --- /dev/null +++ b/lib/orber/test/orber_test_server.cfg @@ -0,0 +1,27 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1999-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% +%% +{timeout, "orber_test::timeout_server"}. +{this, "orber_test::timeout_server"}. +{{handle_info, "orber_test::timeout_server"}, true}. +{this, "orber_test::server"}. +{{handle_info, "orber_test::server"}, true}. +{{postcond, "orber_test::server::testing_iiop_union_d"}, {orber_test_lib, postcond}}. +{{postcond, "orber_test::server::testing_iiop_array"}, {orber_test_lib, postcond}}. +{{precond, "orber_test::server::testing_iiop_array"}, {orber_test_lib, precond}}. +{{precond, "orber_test::server::testing_iiop_enum"}, {orber_test_lib, precond}}. diff --git a/lib/orber/test/orber_test_server.idl b/lib/orber/test/orber_test_server.idl new file mode 100644 index 0000000000..a88211c941 --- /dev/null +++ b/lib/orber/test/orber_test_server.idl @@ -0,0 +1,153 @@ +// +// %CopyrightBegin% +// +// Copyright Ericsson AB 1999-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% +// + +#ifndef _ORBER_TEST_SERVER_IDL +#define _ORBER_TEST_SERVER_IDL +#pragma prefix "omg.org" + +module orber_parent { + interface inherrit { + void print(); + }; +}; + +module orber_test { + + // interface server + interface server : orber_parent::inherrit { + typedef string array[2]; + typedef sequence <long, 3> seq; + typedef wstring<6> WstrLength6; + typedef string<6> StrLength6; + + struct struc {long a; short b;}; + union uni switch(long) { + case 1: long a;}; + + union uni_d switch(long) { + case 1: long a; + default: boolean b; + }; + enum enumerant {one, two}; + + exception UserDefinedException {}; + + typedef sequence<struc> StrucSeq; + typedef sequence<uni> UniSeq; + exception ComplexUserDefinedException { StrucSeq strseq; }; + + // Testing fixed + const fixed val1 = 3.14D; + const fixed val2 = 003.14D; + const fixed val3 = 003.1400D; + const fixed val4 = 3.1400D; + const fixed val5 = .1400D; + const fixed val6 = 3.D; + const fixed val7 = -.1400D; + const fixed val8 = -3.D; + const fixed val9 = val4+val5; + const fixed val10 = val4*val5; + const fixed val11 = val4/val5; + const fixed val12 = 123.140001D; + const fixed val13 = 12314000.1D; + const fixed val14 = val12-val13; + const fixed val15 = val12+val13; + const fixed val16 = val12*val13; + const fixed val17 = 2.01D+2.01D; + const fixed val18 = 2.01D*2.01D; + const fixed val19 = 200D; + const fixed val20 = 9999999999999999999999999999999D+9999999999999999999999999999999D; + const fixed val21 = 9999999999999999999999999999999D-9999999999999999999999999999999D; + const fixed val22 = 9999999999999999999999999999999D*9999999999999999999999999999999D; + const fixed val23 = 9999999999999999999999999999999D/9999999999999999999999999999999D; + const fixed val24 = 9999D+9999D; + const fixed val25 = 400D/10D; + const fixed val26 = 9999999999999999999999999999999D; + + + typedef fixed<5,2> fixed52; + const fixed52 fixed52const1 = 123.45d; + const fixed52 fixed52const2 = 123.00d; + const fixed52 fixed52const3 = 023.00d; + const fixed52 fixed52negconst1 = -123.45d; + const fixed52 fixed52negconst2 = -123.00d; + const fixed52 fixed52negconst3 = -023.00d; + + void stop_normal(); + + void stop_brutal(); + + // Testing encode and decode + void testing_iiop_float(inout float Fl); + void testing_iiop_double(inout double Do); + void testing_iiop_short(inout short Sh); + void testing_iiop_ushort(inout unsigned short Us); + void testing_iiop_long(inout long Lo); + void testing_iiop_longlong(inout long long LLo); + void testing_iiop_ulong(inout unsigned long Ulo); + void testing_iiop_ulonglong(inout unsigned long long LLo); + void testing_iiop_char(inout char Ch); + void testing_iiop_wchar(inout wchar WCh); + void testing_iiop_bool(inout boolean Bool); + void testing_iiop_octet(inout octet Oct); + void testing_iiop_any(inout any AnyType); + void testing_iiop_obj(inout Object Obj); + void testing_iiop_string(inout StrLength6 Str); + void testing_iiop_wstring(inout WstrLength6 WStr); + void testing_iiop_struct(inout struc Stru); + void testing_iiop_union(inout uni Uni); + void testing_iiop_union_d(inout uni_d Uni); + void testing_iiop_enum(inout enumerant Enumerant); + void testing_iiop_seq(inout seq Seq); + void testing_iiop_uni_seq(inout UniSeq USeq); + void testing_iiop_struc_seq(inout StrucSeq SSeq); + void testing_iiop_array(inout array Arr); + void testing_iiop_fixed(inout fixed52 MyFixed); + void testing_iiop_void(); + void testing_iiop_context(); + void testing_iiop_server_marshal(inout StrLength6 Str); + + oneway void testing_iiop_oneway_delay(in long Time); + void testing_iiop_twoway_delay(in long Time); + + // Testing relay calls/casts to, for example, test that sending implicit + // Contexts works. + void relay_call(in Object Target); + oneway void relay_cast(in Object Target); + + // Testing pseudo calls/casts + void pseudo_call(); + oneway void pseudo_cast(); + void pseudo_call_delay(inout long Lo); + oneway void pseudo_cast_delay(in long Lo); + void pseudo_call_raise_exc(in long Lo); + void raise_local_exception() + raises(UserDefinedException); + void raise_complex_local_exception() + raises(ComplexUserDefinedException); + }; + + interface timeout_server { + oneway void oneway_function(in long time); + void twoway_function(in long time); + }; + +}; + +#endif diff --git a/lib/orber/test/orber_test_server_impl.erl b/lib/orber/test/orber_test_server_impl.erl new file mode 100644 index 0000000000..35296cb619 --- /dev/null +++ b/lib/orber/test/orber_test_server_impl.erl @@ -0,0 +1,262 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 1999-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% + +-module(orber_test_server_impl). +-include_lib("orber/include/corba.hrl"). +-include("idl_output/orber_test_server.hrl"). + +%%--------------- specified functions ------------------------ +-export([stop_normal/2, + stop_brutal/2, + print/2, + %% Testing code and decode arguments + testing_iiop_float/3, + testing_iiop_double/3, + testing_iiop_short/3, + testing_iiop_ushort/3, + testing_iiop_long/3, + testing_iiop_longlong/3, + testing_iiop_ulong/3, + testing_iiop_ulonglong/3, + testing_iiop_char/3, + testing_iiop_wchar/3, + testing_iiop_bool/3, + testing_iiop_octet/3, + testing_iiop_any/3, + testing_iiop_obj/3, + testing_iiop_string/3, + testing_iiop_wstring/3, + testing_iiop_struct/3, + testing_iiop_union/3, + testing_iiop_union_d/3, + testing_iiop_enum/3, + testing_iiop_seq/3, + testing_iiop_uni_seq/3, + testing_iiop_struc_seq/3, + testing_iiop_array/3, + testing_iiop_fixed/3, + testing_iiop_void/2, + testing_iiop_context/2, + testing_iiop_server_marshal/3, + relay_call/3, + relay_cast/3, + %% Testing pseudo calls. + pseudo_call/2, + pseudo_cast/2, + pseudo_call_delay/3, + pseudo_cast_delay/3, + pseudo_call_raise_exc/3, + %% Testing raise locally defined exception. + raise_local_exception/2, + raise_complex_local_exception/2, + %% Test timeout functionality + testing_iiop_oneway_delay/3, + testing_iiop_twoway_delay/3]). + + +%%--------------- gen_server specific ------------------------ +-export([init/1, terminate/2]). +-export([handle_call/3, handle_cast/2, handle_info/2, code_change/3]). + +%%--------------- LOCAL DATA --------------------------------- + +%%------------------------------------------------------------ +%% function : init, terminate +%%------------------------------------------------------------ +init(State) -> + process_flag(trap_exit,true), + {ok, State}. + +terminate(Reason, State) -> + io:format("orber_test_server:terminate(~p ~p)~n",[Reason, State]), + ok. + +code_change(_OldVsn, State, _Extra) -> + {ok, State}. +handle_call(_,_, State) -> + {noreply, State}. +handle_cast(_, State) -> + {noreply, State}. +handle_info(_Info, State) -> + {noreply, State}. + +%%--------------- SERVER FUNCTIONS --------------------------- + +print(Self, State) -> + io:format("orber_test_server:print(~p ~p)~n",[Self, State]), + {reply, ok, State}. + +stop_normal(_Self, State) -> + {stop, normal, ok, State}. + +stop_brutal(_Self, _State) -> + exit("killed_brutal"). + + +%% Testing code and decode arguments +testing_iiop_float(_Self, State, Float) -> + {reply, {ok, Float}, State}. + +testing_iiop_double(_Self, State, Double) -> + {reply, {ok, Double}, State}. + +testing_iiop_short(_Self, State, Short) -> + {reply, {ok, Short}, State}. + +testing_iiop_ushort(_Self, State, Ushort) -> + {reply, {ok, Ushort}, State}. + +testing_iiop_long(_Self, State, Long) -> + {reply, {ok, Long}, State}. + +testing_iiop_longlong(_Self, State, LLong) -> + {reply, {ok, LLong}, State}. + +testing_iiop_ulong(_Self, State, Ulong) -> + {reply, {ok, Ulong}, State}. + +testing_iiop_ulonglong(_Self, State, ULlong) -> + {reply, {ok, ULlong}, State}. + +testing_iiop_char(_Self, State, Char) -> + {reply, {ok, Char}, State}. + +testing_iiop_wchar(_Self, State, WChar) -> + {reply, {ok, WChar}, State}. + +testing_iiop_bool(_Self, State, Boolean) -> + {reply, {ok, Boolean}, State}. + +testing_iiop_octet(_Self, State, Octet) -> + {reply, {ok, Octet}, State}. + +testing_iiop_any(_Self, State, Any) -> + {reply, {ok, Any}, State}. + +testing_iiop_obj(_Self, State, Obj) -> + {reply, {ok, Obj}, State}. + +testing_iiop_string(_Self, State, String) -> + {reply, {ok, String}, State}. + +testing_iiop_wstring(_Self, State, WString) -> + {reply, {ok, WString}, State}. + +testing_iiop_struct(_Self, State, Struct) -> + {reply, {ok, Struct}, State}. + +testing_iiop_union(_Self, State, Union) -> + {reply, {ok, Union}, State}. + +testing_iiop_union_d(_Self, State, Union) -> + {reply, {ok, Union}, State}. + +testing_iiop_enum(_Self, State, Enum) -> + {reply, {ok, Enum}, State}. + +testing_iiop_seq(_Self, State, Sequence) -> + {reply, {ok, Sequence}, State}. + +testing_iiop_uni_seq(_Self, State, Sequence) -> + {reply, {ok, Sequence}, State}. + +testing_iiop_struc_seq(_Self, State, Sequence) -> + {reply, {ok, Sequence}, State}. + +testing_iiop_array(_Self, State, Array) -> + {reply, {ok, Array}, State}. + +testing_iiop_fixed(_Self, State, Fixed) -> + {reply, {ok, Fixed}, State}. + +testing_iiop_void(_Self, State) -> + {reply, ok, State}. + +testing_iiop_context(_Self, State) -> + Ctx = get(oe_server_in_context), + io:format("orber_test_server:testing_iiop_context( ~p )~n", [Ctx]), + {reply, ok, State}. + +testing_iiop_server_marshal(_Self, State, _String) -> + {reply, {ok, false}, State}. + +testing_iiop_oneway_delay(_Self, State, Time) -> + timer:sleep(Time), + {noreply, State}. + +testing_iiop_twoway_delay(_Self, State, Time) -> + timer:sleep(Time), + {reply, ok, State}. + +raise_local_exception(_Self, State) -> + corba:raise(#'orber_test_server_UserDefinedException'{}), + {reply, ok, State}. + +raise_complex_local_exception(_Self, State) -> + corba:raise(#'orber_test_server_ComplexUserDefinedException'{strseq= + [#orber_test_server_struc{a=1, b=2}]}), + {reply, ok, State}. + +%% Testing relay calls/casts to, for example, test that sending implicit +%% Contexts works. +relay_call(_Self, State, Target) -> + io:format("orber_test_server:relay_call( ~p ) Pre~n", [get(oe_server_in_context)]), + orber_test_server:testing_iiop_context(Target), + io:format("orber_test_server:relay_call( ~p ) Post~n", [get(oe_server_in_context)]), + {reply, ok, State}. + +relay_cast(_Self, State, Target) -> + io:format("orber_test_server:relay_cast( ~p ) Pre~n", [get(oe_server_in_context)]), + orber_test_server:testing_iiop_context(Target), + io:format("orber_test_server:relay_cast( ~p ) Post~n", [get(oe_server_in_context)]), + {noreply, State}. + +%% Testing pseudo calls. +pseudo_call(_Self, State) -> + io:format("orber_test_server:pseudo_call( ~p )~n", [now()]), + {reply, ok, State}. + +pseudo_cast(_Self, State) -> + io:format("orber_test_server:pseudo_cast( ~p )~n", [now()]), + {noreply, State}. +pseudo_call_delay(_Self, State, Time) -> + io:format("orber_test_server:pseudo_call_delay( ~p )~n", [now()]), + timer:sleep(Time), + io:format("orber_test_server:pseudo_call_delay( ~p )~n", [now()]), + {reply, {ok, Time}, State}. + +pseudo_cast_delay(_Self, State, Time) -> + io:format("orber_test_server:pseudo_cast_delay( ~p )~n", [now()]), + timer:sleep(Time), + io:format("orber_test_server:pseudo_cast_delay( ~p )~n", [now()]), + {noreply, State}. + +pseudo_call_raise_exc(_Self, State, 1) -> + io:format("orber_test_server:pseudo_call_raise_exc( ~p )~n",[1]), + {reply, {'EXCEPTION', #'BAD_QOS'{completion_status=?COMPLETED_NO}}, State}; +pseudo_call_raise_exc(_Self, State, 2) -> + io:format("orber_test_server:pseudo_call_raise_exc( ~p )~n",[2]), + corba:raise(#'BAD_QOS'{completion_status=?COMPLETED_NO}), + {reply, ok, State}. + +%%--------------- LOCAL FUNCTIONS ---------------------------- + +%%--------------- END OF MODULE ------------------------------ + diff --git a/lib/orber/test/orber_test_timeout_server_impl.erl b/lib/orber/test/orber_test_timeout_server_impl.erl new file mode 100644 index 0000000000..138eb51d92 --- /dev/null +++ b/lib/orber/test/orber_test_timeout_server_impl.erl @@ -0,0 +1,65 @@ +%%-------------------------------------------------------------------- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2000-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%---------------------------------------------------------------------- +%% File : orber_test_timeout_server_impl.erl +%% Purpose : +%%---------------------------------------------------------------------- + +-module(orber_test_timeout_server_impl). + +-export([oneway_function/3, twoway_function/3]). + + +%%--------------- gen_server specific ------------------------ +-export([init/1, terminate/2, code_change/3, handle_info/2]). + +%%------------------------------------------------------------ +%% function : server specific +%%------------------------------------------------------------ +init(State) -> + %% 'trap_exit' optional + process_flag(trap_exit,true), + {ok, State}. + +terminate(_Reason, _State) -> + ok. + +code_change(_OldVsn, State, _Extra) -> + {ok, State}. + +%% If use IC option {{handle_info, "Module::Interface"}, true} +handle_info(_Info, State) -> + %% Await the next invocation. + {noreply, State}. + +%%--- two-way ------------------------------------------------ +twoway_function(_OE_THIS, State, Time) -> + timer:sleep(Time), + {reply, ok, State}. + + +%%--- one-way ------------------------------------------------ +oneway_function(_OE_THIS, State, Time) -> + timer:sleep(Time), + {noreply, State}. + +%%--------------- END OF MODULE ------------------------------ + diff --git a/lib/orber/test/orber_web_SUITE.erl b/lib/orber/test/orber_web_SUITE.erl new file mode 100644 index 0000000000..ffa7468853 --- /dev/null +++ b/lib/orber/test/orber_web_SUITE.erl @@ -0,0 +1,443 @@ +%%----------------------------------------------------------------- +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2004-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%----------------------------------------------------------------- +%% File : orber_web_SUITE.erl +%% Purpose : +%%----------------------------------------------------------------- + +-module(orber_web_SUITE). + +-include("test_server.hrl"). +-include_lib("orber/include/corba.hrl"). +-include_lib("orber/src/orber_iiop.hrl"). + +-define(default_timeout, ?t:minutes(3)). + +-define(match(ExpectedRes, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + ExpectedRes -> + io:format("------ CORRECT RESULT ------~n~p~n", + [AcTuAlReS]), + AcTuAlReS; + _ -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS) + end + end()). + +-define(nomatch(Not, Expr), + fun() -> + AcTuAlReS = (catch (Expr)), + case AcTuAlReS of + Not -> + io:format("###### ERROR ERROR ######~n~p~n", + [AcTuAlReS]), + ?line exit(AcTuAlReS); + _ -> + io:format("------ CORRECT RESULT ------~n~p~n", + [AcTuAlReS]), + AcTuAlReS + end + end()). + + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1]). + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- +-export([]). +-compile(export_all). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["This suite is for testing the Orber Web API"]; +all(suite) -> + [menu, configure, info, nameservice, ifr_select, ifr_data, + create, delete_ctx, add_ctx, delete_obj, server]. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- +init_per_testcase(_Case, Config) -> + ?line Dog=test_server:timetrap(?default_timeout), + Path = code:which(?MODULE), + code:add_pathz(filename:join(filename:dirname(Path), "idl_output")), + orber:jump_start(2875), + oe_orber_test_server:oe_register(), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + oe_orber_test_server:oe_unregister(), + orber:jump_stop(), + Path = code:which(?MODULE), + code:del_path(filename:join(filename:dirname(Path), "idl_output")), + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +%%----------------------------------------------------------------- +%% Test Case: menu +%% Description: +%%----------------------------------------------------------------- +menu(doc) -> [""]; +menu(suite) -> []; +menu(_) -> + Node = atom_to_list(node()), + OK = orber_web:menu(env, [{"node", Node}]), + ?match(OK, orber_web:menu(env, [])), + ?match(OK, orber_web:menu(env, [42, {"node", Node}, "wrong"])), + ?match({'EXIT', _E}, orber_web:menu(env, [{"node", localhost}])), + ok. + +%%----------------------------------------------------------------- +%% Test Case: configure +%% Description: +%%----------------------------------------------------------------- +configure(doc) -> [""]; +configure(suite) -> []; +configure(_) -> + Node = atom_to_list(node()), + ?match({'EXIT', _}, orber_web:configure(env, [])), + ?match({'EXIT', _}, orber_web:configure(env, [{"node", localhost}, + {"data", atom}])), + ?match([_H|_T], orber_web:configure(env, [{"node", Node}, {"data", ""}])), + ?match([_H|_T], orber_web:configure(env, [{"node", Node}, + {"data", "[{orber_debug_level, 9}]"}])), + ?match({ok, 9}, application:get_env(orber, orber_debug_level)), + ?match([_H|_T], orber_web:configure(env, [{"node", "bad_node"}, + {"data", "[{orber_debug_level, 9}]"}])), + ?match({error, _}, orber_web:configure(env, [{"node", Node}, + {"data", "{orber_debug_level 9}"}])), + ok. + +%%----------------------------------------------------------------- +%% Test Case: info +%% Description: +%%----------------------------------------------------------------- +info(doc) -> [""]; +info(suite) -> []; +info(_) -> + ?match({'EXIT', _}, orber_web:info(env, [])), + ?match({'EXIT', _}, orber_web:info(env, [{"node", localhost}])), + ?match([_H|_T], orber_web:info(env, [{"node", atom_to_list(node())}])), + ok. + +%%----------------------------------------------------------------- +%% Test Case: nameservice +%% Description: +%%----------------------------------------------------------------- +nameservice(doc) -> [""]; +nameservice(suite) -> []; +nameservice(_) -> + NodeStr = atom_to_list(node()), + ?match({'EXIT', _}, orber_web:nameservice(env, [{"node", localhost}, + {"context", "root"}])), + ?match({'EXIT', _}, orber_web:nameservice(env, [{"node", localhost}, + {"context", "id1"}])), + ?match([_H|_T], orber_web:nameservice(env, [{"node", "bad_node"}, + {"context", "root"}])), + ?match([_,_,_,NodeStr|_], orber_web:nameservice(env, [{"node", NodeStr}, + {"context", "root"}])), + ?match({ok,_}, orber_web:nameservice(env, [{"node", NodeStr}, + {"context", "id1"}])), + ?match([_H|_T], orber_web:add_ctx(env, [{"node", NodeStr}, + {"context", "root"}, + {"id", "id1"}])), + ?match([_H|_T], orber_web:add_ctx(env, [{"node", NodeStr}, + {"context", "id1"}, + {"id", "id2"}])), + [_,_,_,IOR] = + ?match([_,_,_,_], orber_web:create(env, [{"node", NodeStr}, + {"module", "orber_test_server"}, + {"arguments", "[]"}, + {"options", "[{pseudo, true}]"}, + {"namestr", "id1/id2/id3"}, + {"bind", "rebind"}])), + ?match(#'IOP_IOR'{}, corba:string_to_object(IOR)), + + ?match([_,"id1"|_], orber_web:nameservice(env, [{"node", NodeStr}, + {"context", "id1"}])), + ?nomatch({error, _}, orber_web:nameservice(env, [{"node", NodeStr}, + {"context", "id1/id2"}, + {"object", "id3"}])), + + ok. + +%%----------------------------------------------------------------- +%% Test Case: ifr_select +%% Description: +%%----------------------------------------------------------------- +ifr_select(doc) -> [""]; +ifr_select(suite) -> []; +ifr_select(_) -> + ?match({'EXIT', _}, orber_web:ifr_select(env, [])), + ?match({'EXIT', _}, orber_web:ifr_select(env, [{"node", localhost}])), + ?match([_H|_T], orber_web:ifr_select(env, [{"node", "bad_node"}])), + ?match([_H|_T], orber_web:ifr_select(env, [{"node", atom_to_list(node())}])), + ok. + +%%----------------------------------------------------------------- +%% Test Case: ifr_data +%% Description: +%%----------------------------------------------------------------- +ifr_data(doc) -> [""]; +ifr_data(suite) -> []; +ifr_data(_) -> + ?match({'EXIT', _}, orber_web:ifr_data(env, [])), + ?match({'EXIT', _}, orber_web:ifr_data(env, [{"node", localhost}, + {"table", "ir_ModuleDef"}])), + ?match({error, _}, orber_web:ifr_data(env, [{"node", "bad_host"}, + {"table", "ir_ModuleDef"}])), + ?match({'EXIT', _}, orber_web:ifr_data(env, [{"node", atom_to_list(node())}, + {"table", "bad_table"}])), + ?match([_H|_T], orber_web:ifr_data(env, [{"node", atom_to_list(node())}, + {"table", "ir_ModuleDef"}])), + ?match([_H|_T], orber_web:ifr_data(env, [{"node", atom_to_list(node())}, + {"table", "ir_InterfaceDef"}])), + ?match([_H|_T], orber_web:ifr_data(env, [{"node", atom_to_list(node())}, + {"table", "ir_StructDef"}])), + ?match([_H|_T], orber_web:ifr_data(env, [{"node", atom_to_list(node())}, + {"table", "ir_ExceptionDef"}])), + ?match([_H|_T], orber_web:ifr_data(env, [{"node", atom_to_list(node())}, + {"table", "ir_ConstantDef"}])), + ?match([_H|_T], orber_web:ifr_data(env, [{"node", atom_to_list(node())}, + {"table", "ir_EnumDef"}])), + ?match([_H|_T], orber_web:ifr_data(env, [{"node", atom_to_list(node())}, + {"table", "ir_AliasDef"}])), + ?match([_H|_T], orber_web:ifr_data(env, [{"node", atom_to_list(node())}, + {"table", "ir_AttributeDef"}])), + ?match([_H|_T], orber_web:ifr_data(env, [{"node", atom_to_list(node())}, + {"table", "ir_OperationDef"}])), + ?match([_H|_T], orber_web:ifr_data(env, [{"node", atom_to_list(node())}, + {"table", "ir_Contained"}])), + ?match([_H|_T], orber_web:ifr_data(env, [{"node", atom_to_list(node())}, + {"table", "ir_TypedefDef"}])), + ok. + +%%----------------------------------------------------------------- +%% Test Case: create +%% Description: +%%----------------------------------------------------------------- +create(doc) -> [""]; +create(suite) -> []; +create(_) -> + NodeStr = atom_to_list(node()), + ?match({'EXIT', _}, orber_web:create(env, [])), + ?match({'EXIT', _}, orber_web:create(env, [{"node", localhost}])), + ?match({error, _}, orber_web:create(env, [{"node", NodeStr}, + {"module", "orber_test_server"}, + {"arguments", "[]"}, + {"options", "[bad_option 42]"}, + {"namestr", "[]"}, + {"bind", "rebind"}])), + ?match({error, _}, orber_web:create(env, [{"node", NodeStr}, + {"module", "orber_test_server"}, + {"arguments", "[bad_argument 42]"}, + {"options", "[]"}, + {"namestr", "[]"}, + {"bind", "rebind"}])), + + ?match([_, NodeStr|_T], orber_web:create(env, [{"node", NodeStr}])), + + [_,IOR] = ?match([_,_], orber_web:create(env, [{"node", NodeStr}, + {"module", "orber_test_server"}, + {"arguments", "[]"}, + {"options", "[]"}, + {"namestr", ""}, + {"bind", "rebind"}])), + ?match(#'IOP_IOR'{}, corba:string_to_object(IOR)), + + [_,_,_,_,_,IOR2] = + ?match([_,_,_,_,_,_], orber_web:create(env, [{"node", NodeStr}, + {"module", "orber_test_server"}, + {"arguments", "[]"}, + {"options", "[]"}, + {"namestr", "id1"}, + {"bind", "rebind"}])), + ?match(#'IOP_IOR'{}, corba:string_to_object(IOR2)), + + [_,_,_,IOR3] = + ?match([_,_,_,_], orber_web:create(env, [{"node", NodeStr}, + {"module", "orber_test_server"}, + {"arguments", "[]"}, + {"options", "[{pseudo, true}]"}, + {"namestr", "id2"}, + {"bind", "rebind"}])), + ?match(#'IOP_IOR'{}, corba:string_to_object(IOR3)), + + [_,IOR4] =?match([_,_], orber_web:create(env, [{"node", NodeStr}, + {"module", "orber_test_server"}, + {"arguments", "[]"}, + {"options", "[{pseudo, true}]"}, + {"namestr", ""}, + {"bind", "rebind"}])), + ?match(#'IOP_IOR'{}, corba:string_to_object(IOR4)), + + ?match([_], orber_web:create(env, [{"node", NodeStr}, + {"module", "orber_test_server"}, + {"arguments", "[]"}, + {"options", "[{unknown, option}]"}, + {"namestr", "id1"}, + {"bind", "rebind"}])), + + ?match([_, "id1"], orber_web:create(env, [{"node", NodeStr}, + {"module", "orber_test_server"}, + {"arguments", "[]"}, + {"options", "[]"}, + {"namestr", "id1"}, + {"bind", "bind"}])), + + ?match([_, "id2"], orber_web:create(env, [{"node", NodeStr}, + {"module", "orber_test_server"}, + {"arguments", "[]"}, + {"options", "[{pseudo, true}]"}, + {"namestr", "id2"}, + {"bind", "bind"}])), + ok. + +%%----------------------------------------------------------------- +%% Test Case: delete_ctx +%% Description: +%%----------------------------------------------------------------- +delete_ctx(doc) -> [""]; +delete_ctx(suite) -> []; +delete_ctx(_) -> + ?match({ok, _}, orber_web:delete_ctx(env, [{"node", atom_to_list(node())}, + {"context", "id1"}])), + ?match([_H|_T], orber_web:add_ctx(env, [{"node", atom_to_list(node())}, + {"context", "root"}, + {"id", "id1"}])), + ?match([_H|_T], orber_web:delete_ctx(env, [{"node", atom_to_list(node())}, + {"context", "id1"}])), + ok. + +%%----------------------------------------------------------------- +%% Test Case: add_ctx +%% Description: +%%----------------------------------------------------------------- +add_ctx(doc) -> [""]; +add_ctx(suite) -> []; +add_ctx(_) -> + ?match({error, _}, orber_web:add_ctx(env, [{"node", "bad_node"}, + {"context", "root"}, + {"id", "id1"}])), + ?match([_H|_T], orber_web:add_ctx(env, [{"node", atom_to_list(node())}, + {"context", "root"}, + {"id", ""}])), + ?match([_H|_T], orber_web:add_ctx(env, [{"node", atom_to_list(node())}, + {"context", "root"}, + {"id", "id1"}])), + ?match([_H|_T], orber_web:add_ctx(env, [{"node", atom_to_list(node())}, + {"context", "id1"}, + {"id", "id2"}])), + ok. + +%%----------------------------------------------------------------- +%% Test Case: delete_obj +%% Description: +%%----------------------------------------------------------------- +delete_obj(doc) -> [""]; +delete_obj(suite) -> []; +delete_obj(_) -> + NodeStr = atom_to_list(node()), + ?match({error, _}, orber_web:delete_obj(env, [{"node", "bad_node"}, + {"context", "id1"}, + {"action", "unbind"}])), + ?match({error, _}, orber_web:delete_obj(env, [{"node", "bad_node"}, + {"context", "id1"}, + {"action", "both"}])), + ?match({'EXIT', _}, orber_web:delete_obj(env, [{"node", bad_node}, + {"context", "id1"}, + {"action", "both"}])), + ?match({error, _}, orber_web:delete_obj(env, [{"node", NodeStr}, + {"context", "non/existing"}, + {"action", "unbind"}])), + [_,_,_,_,_,IOR2] = + ?match([_,_,_,_,_,_], orber_web:create(env, [{"node", NodeStr}, + {"module", "orber_test_server"}, + {"arguments", "[]"}, + {"options", "[]"}, + {"namestr", "id1"}, + {"bind", "rebind"}])), + ?match(#'IOP_IOR'{}, corba:string_to_object(IOR2)), + + ?match({error, _}, orber_web:delete_obj(env, [{"node", NodeStr}, + {"context", "bad/INS./id"}, + {"action", "unbind"}])), + + [_,_,_,IOR3] = + ?match([_,_,_,_], orber_web:create(env, [{"node", NodeStr}, + {"module", "orber_test_server"}, + {"arguments", "[]"}, + {"options", "[{pseudo, true}]"}, + {"namestr", "id2"}, + {"bind", "rebind"}])), + ?match(#'IOP_IOR'{}, corba:string_to_object(IOR3)), + + ?match([_, "id1"|_], orber_web:delete_obj(env, [{"node", NodeStr}, + {"context", "id1"}, + {"action", "unbind"}])), + ?match([_, "id2"|_], orber_web:delete_obj(env, [{"node", NodeStr}, + {"context", "id2"}, + {"action", "unbind"}])), + + + ok. + +%%----------------------------------------------------------------- +%% Test Case: server +%% Description: +%%----------------------------------------------------------------- +server(doc) -> [""]; +server(suite) -> []; +server(_) -> + NodeStr = "node=" ++ atom_to_list(node()), + {ok, Pid} = ?match({ok,_}, orber_web_server:start()), + ?match({error,{already_started, Pid}}, orber_web_server:start_link()), + ?match({error,{already_started,Pid}}, orber_web_server:start()), + ?match({orber, _}, orber_web_server:config_data()), + ?match([_H|_T], orber_web_server:ifr_select(env, "node=badnode")), + ?match([_H|_T], orber_web_server:ifr_select(env, "node=" ++ NodeStr)), + ?match([_H|_T], orber_web_server:menu(env, NodeStr)), + ?match([_H|_T], orber_web_server:configure(env, NodeStr ++ "&data=[{orber_debug_level, 9}]")), + ?match([_H|_T], orber_web_server:nameservice(env, NodeStr ++ "&context=root")), + ?match([_H|_T], orber_web_server:info(env, NodeStr)), + ?match([_H|_T], orber_web_server:ifr_data(env, NodeStr ++ "&table=ir_ModuleDef")), + ?match([_H|_T], orber_web_server:create(env, NodeStr)), + ?match([_H|_T], orber_web_server:add_ctx(env, NodeStr ++ "&context=root&id=id1")), + ?match([_H|_T], orber_web_server:delete_ctx(env, NodeStr++"&context=id1")), + ?match([_H|_T], orber_web_server:delete_obj(env, NodeStr++"&context=id1&action=unbind")), + ?match([_H|_T], orber_web_server:default_selection(env, NodeStr)), + ?match(ok, orber_web_server:stop()), + ok. + + diff --git a/lib/orber/test/tc_SUITE.erl b/lib/orber/test/tc_SUITE.erl new file mode 100644 index 0000000000..807a663219 --- /dev/null +++ b/lib/orber/test/tc_SUITE.erl @@ -0,0 +1,661 @@ +%% +%% %CopyrightBegin% +%% +%% Copyright Ericsson AB 2004-2009. All Rights Reserved. +%% +%% The contents of this file are subject to the Erlang Public License, +%% Version 1.1, (the "License"); you may not use this file except in +%% compliance with the License. You should have received a copy of the +%% Erlang Public License along with this software. If not, it can be +%% retrieved online at http://www.erlang.org/. +%% +%% Software distributed under the License is distributed on an "AS IS" +%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +%% the License for the specific language governing rights and limitations +%% under the License. +%% +%% %CopyrightEnd% +%% +%% +%%----------------------------------------------------------------- +%% +%% Description: +%% Test suite for the basic typecode functions +%% +%%----------------------------------------------------------------- +-module(tc_SUITE). + +-include("test_server.hrl"). +-include_lib("orber/src/orber_iiop.hrl"). + +-define(default_timeout, ?t:minutes(3)). + +-define(match(Expr), + fun() -> + case (catch (Expr)) of + AcTuAlReS when is_binary(AcTuAlReS)-> + io:format("###### ERROR ERROR ######~nRESULT: ~p~n", + [AcTuAlReS]), + exit(AcTuAlReS); + _ -> + ok + end + end()). +-define(SUB_ELIST, [{"null", orber_tc:null()}, + {"void", orber_tc:void()}, + {"short", orber_tc:short()}, + {"unsigned_short", orber_tc:unsigned_short()}, + {"long", orber_tc:long()}, + {"unsigned_long", orber_tc:unsigned_long()}, + {"long_long", orber_tc:long_long()}, + {"unsigned_long_long", orber_tc:unsigned_long_long()}, + {"float", orber_tc:'float'()}, + {"double", orber_tc:double()}, + {"longdouble", orber_tc:longdouble()}, + {"boolean", orber_tc:boolean()}, + {"char", orber_tc:char()}, + {"wchar", orber_tc:wchar()}, + {"octet", orber_tc:octet()}, + {"any", orber_tc:any()}, + {"typecode", orber_tc:typecode()}, + {"principal", orber_tc:principal()}, + {"object_reference", orber_tc:object_reference("Id", "Name")}]). + +-define(ELIST, [{"null", orber_tc:null()}, + {"void", orber_tc:void()}, + {"short", orber_tc:short()}, + {"unsigned_short", orber_tc:unsigned_short()}, + {"long", orber_tc:long()}, + {"unsigned_long", orber_tc:unsigned_long()}, + {"long_long", orber_tc:long_long()}, + {"unsigned_long_long", orber_tc:unsigned_long_long()}, + {"float", orber_tc:'float'()}, + {"double", orber_tc:double()}, + {"longdouble", orber_tc:longdouble()}, + {"boolean", orber_tc:boolean()}, + {"char", orber_tc:char()}, + {"wchar", orber_tc:wchar()}, + {"octet", orber_tc:octet()}, + {"any", orber_tc:any()}, + {"typecode", orber_tc:typecode()}, + {"principal", orber_tc:principal()}, + {"object_reference", orber_tc:object_reference("Id", "Name")}, + {"struct", orber_tc:struct("Id", "Name", ?SUB_ELIST)}, + {"enum", orber_tc:enum("Id", "Name", ["E1", "E2"])}, + {"string", orber_tc:string(1)}, + {"wstring", orber_tc:wstring(0)}, + {"sequence", orber_tc:sequence(orber_tc:enum("Id", "Name", + ["E1", "E2"]), 0)}, + {"array", orber_tc:array(orber_tc:enum("Id", "Name", + ["E1", "E2"]), 2)}, + {"alias", orber_tc:alias("id", "name", + orber_tc:enum("Id", "Name", + ["E1", "E2"]))}, + {"exception", orber_tc:exception("Id", "Name", ?SUB_ELIST)}]). + +-define(VELIST, [{"null", orber_tc:null(), 42}, + {"void", orber_tc:void(), 42}, + {"short", orber_tc:short(), 42}, + {"unsigned_short", orber_tc:unsigned_short(), 42}, + {"long", orber_tc:long(), 42}, + {"unsigned_long", orber_tc:unsigned_long(), 42}, + {"long_long", orber_tc:long_long(), 42}, + {"unsigned_long_long", orber_tc:unsigned_long_long(), 42}, + {"float", orber_tc:'float'(), 42}, + {"double", orber_tc:double(), 42}, + {"longdouble", orber_tc:longdouble(), 42}, + {"boolean", orber_tc:boolean(), 42}, + {"char", orber_tc:char(), 42}, + {"wchar", orber_tc:wchar(), 42}, + {"octet", orber_tc:octet(), 42}, + {"any", orber_tc:any(), 42}, + {"typecode", orber_tc:typecode(), 42}, + {"principal", orber_tc:principal(), 42}, + {"object_reference", orber_tc:object_reference("Id", "Name"), 42}, + {"struct", orber_tc:struct("Id", "Name", ?SUB_ELIST), 42}, + {"enum", orber_tc:enum("Id", "Name", ["E1", "E2"]), 42}, + {"string", orber_tc:string(1), 42}, + {"wstring", orber_tc:wstring(0), 42}, + {"sequence", orber_tc:sequence(orber_tc:enum("Id", "Name", + ["E1", "E2"]), 0), 42}, + {"array", orber_tc:array(orber_tc:enum("Id", "Name", + ["E1", "E2"]), 2), 42}, + {"alias", orber_tc:alias("id", "name", + orber_tc:enum("Id", "Name", + ["E1", "E2"])), 42}, + {"exception", orber_tc:exception("Id", "Name", ?SUB_ELIST), 42}]). + +%%----------------------------------------------------------------- +%% External exports +%%----------------------------------------------------------------- +-export([all/1]). + +%%----------------------------------------------------------------- +%% Internal exports +%%----------------------------------------------------------------- +-export([]). +-compile(export_all). + +%%----------------------------------------------------------------- +%% Func: all/1 +%% Args: +%% Returns: +%%----------------------------------------------------------------- +all(doc) -> ["Description", "more description"]; +all(suite) -> + [null, void, + short, ushort, + long, ulong, + longlong, ulonglong, + boolean, char, wchar, octet, + float, double, longdouble, + any, typecode, principal, object_reference, + struct, union, enum, string, wstring, sequence, array, + alias, exception, fixed, value, value_box, native, + abstract_interface, indirection, get_tc]. + +%%----------------------------------------------------------------- +%% Init and cleanup functions. +%%----------------------------------------------------------------- + +init_per_testcase(_Case, Config) -> + ?line Dog=test_server:timetrap(?default_timeout), + [{watchdog, Dog}|Config]. + + +fin_per_testcase(_Case, Config) -> + Dog = ?config(watchdog, Config), + test_server:timetrap_cancel(Dog), + ok. + +%%----------------------------------------------------------------- +%% Test Case: null test +%% Description: +%%----------------------------------------------------------------- +null(doc) -> []; +null(suite) -> []; +null(_) -> + ?line true = orber_tc:check_tc(orber_tc:null()), + ?line code(orber_tc:null()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: void test +%% Description: +%%----------------------------------------------------------------- +void(doc) -> []; +void(suite) -> []; +void(_) -> + ?line true = orber_tc:check_tc(orber_tc:void()), + ?line code(orber_tc:void()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: short integer test +%% Description: +%%----------------------------------------------------------------- +short(doc) -> []; +short(suite) -> []; +short(_) -> + ?line true = orber_tc:check_tc(orber_tc:short()), + ?line code(orber_tc:short()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: unsigned short integer test +%% Description: +%%----------------------------------------------------------------- +ushort(doc) -> []; +ushort(suite) -> []; +ushort(_) -> + ?line true = orber_tc:check_tc(orber_tc:unsigned_short()), + ?line code(orber_tc:unsigned_short()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: long integer test +%% Description: +%%----------------------------------------------------------------- +long(doc) -> []; +long(suite) -> []; +long(_) -> + ?line true = orber_tc:check_tc(orber_tc:long()), + ?line code(orber_tc:long()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: unsigned long integer test +%% Description: +%%----------------------------------------------------------------- +ulong(doc) -> []; +ulong(suite) -> []; +ulong(_) -> + ?line true = orber_tc:check_tc(orber_tc:unsigned_long()), + ?line code(orber_tc:unsigned_long()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: long integer test +%% Description: +%%----------------------------------------------------------------- +longlong(doc) -> []; +longlong(suite) -> []; +longlong(_) -> + ?line true = orber_tc:check_tc(orber_tc:long_long()), + ?line code(orber_tc:long_long()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: unsigned long integer test +%% Description: +%%----------------------------------------------------------------- +ulonglong(doc) -> []; +ulonglong(suite) -> []; +ulonglong(_) -> + ?line true = orber_tc:check_tc(orber_tc:unsigned_long_long()), + ?line code(orber_tc:unsigned_long_long()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: float test +%% Description: +%%----------------------------------------------------------------- +float(doc) -> []; +float(suite) -> []; +float(_) -> + ?line true = orber_tc:check_tc(orber_tc:'float'()), + ?line code(orber_tc:'float'()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: double test +%% Description: +%%----------------------------------------------------------------- +double(doc) -> []; +double(suite) -> []; +double(_) -> + ?line true = orber_tc:check_tc(orber_tc:double()), + ?line code(orber_tc:double()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: longdouble test +%% Description: +%%----------------------------------------------------------------- +longdouble(doc) -> []; +longdouble(suite) -> []; +longdouble(_) -> + ?line true = orber_tc:check_tc(orber_tc:longdouble()), + ?line code(orber_tc:longdouble()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: boolean test +%% Description: +%%----------------------------------------------------------------- +boolean(doc) -> []; +boolean(suite) -> []; +boolean(_) -> + ?line true = orber_tc:check_tc(orber_tc:boolean()), + ?line code(orber_tc:boolean()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: character test +%% Description: +%%----------------------------------------------------------------- +char(doc) -> []; +char(suite) -> []; +char(_) -> + ?line true = orber_tc:check_tc(orber_tc:char()), + ?line code(orber_tc:char()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: character test +%% Description: +%%----------------------------------------------------------------- +wchar(doc) -> []; +wchar(suite) -> []; +wchar(_) -> + ?line true = orber_tc:check_tc(orber_tc:wchar()), + ?line code(orber_tc:wchar()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: octet test +%% Description: +%%----------------------------------------------------------------- +octet(doc) -> []; +octet(suite) -> []; +octet(_) -> + ?line true = orber_tc:check_tc(orber_tc:octet()), + ?line code(orber_tc:octet()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: any test +%% Description: +%%----------------------------------------------------------------- +any(doc) -> []; +any(suite) -> []; +any(_) -> + ?line true = orber_tc:check_tc(orber_tc:any()), + ?line code(orber_tc:any()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: typecode test +%% Description: +%%----------------------------------------------------------------- +typecode(doc) -> []; +typecode(suite) -> []; +typecode(_) -> + ?line true = orber_tc:check_tc(orber_tc:typecode()), + ?line code(orber_tc:typecode()), + ok. + +%%----------------------------------------------------------------- +%% Test Case: principal test +%% Description: +%%----------------------------------------------------------------- +principal(doc) -> []; +principal(suite) -> []; +principal(_) -> + ?line true = orber_tc:check_tc(orber_tc:principal()), + ?line code(orber_tc:principal()), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: object_reference test +%% Description: +%%----------------------------------------------------------------- +object_reference(doc) -> []; +object_reference(suite) -> []; +object_reference(_) -> + ?line true = orber_tc:check_tc(orber_tc:object_reference("Id", "Name")), + ?line false = orber_tc:check_tc(orber_tc:object_reference(42, "Name")), + ?line false = orber_tc:check_tc(orber_tc:object_reference("Id", 42)), + ?line code(orber_tc:object_reference("Id", "Name")), + ?line ?match(code(orber_tc:object_reference(42, "Name"))), + ?line ?match(code(orber_tc:object_reference("Id", 42))), + ok. + +%%----------------------------------------------------------------- +%% Test Case: struct +%% Description: +%%----------------------------------------------------------------- +struct(doc) -> []; +struct(suite) -> []; +struct(_) -> + ?line true = orber_tc:check_tc(orber_tc:struct("Id", "Name", ?ELIST)), + ?line false = orber_tc:check_tc(orber_tc:struct(42, "Name", ?ELIST)), + ?line false = orber_tc:check_tc(orber_tc:struct("Id", false, ?ELIST)), + ?line false = orber_tc:check_tc(orber_tc:struct("Id", "Name", ?VELIST)), + ?line false = orber_tc:check_tc(orber_tc:struct("Id", "Name", "wrong")), + ?line code(orber_tc:struct("Id", "Name", ?ELIST)), + ?line ?match(code(orber_tc:struct(42, "Name", ?ELIST))), + ?line ?match(code(orber_tc:struct("Id", false, ?ELIST))), + ?line ?match(code(orber_tc:struct("Id", "Name", ?VELIST))), + ?line ?match(code(orber_tc:struct("Id", "Name", "wrong"))), + ok. + +%%----------------------------------------------------------------- +%% Test Case: union +%% Description: +%%----------------------------------------------------------------- +union(doc) -> []; +union(suite) -> []; +union(_) -> + ?line true = orber_tc:check_tc(orber_tc:union("Id", "Name", orber_tc:long(), + -1, [{1, "long", orber_tc:long()}, + {2, "longlong", orber_tc:long()}])), + ?line false = orber_tc:check_tc(orber_tc:union("Id", "Name", orber_tc:long(), + -1, ?ELIST)), + ?line false = orber_tc:check_tc(orber_tc:union(42, "Name", orber_tc:long(), + -1, [{1, "long", orber_tc:long()}, + {2, "longlong", orber_tc:long()}])), + ?line false = orber_tc:check_tc(orber_tc:union("Id", false, orber_tc:long(), + -1, [{1, "long", orber_tc:long()}, + {2, "longlong", orber_tc:long()}])), + ?line false = orber_tc:check_tc(orber_tc:union("Id", "Name", bad_tc, + -1, [{1, "long", orber_tc:long()}, + {2, "longlong", orber_tc:long()}])), + ?line false = orber_tc:check_tc(orber_tc:union("Id", "Name", orber_tc:long(), + "wrong", [{1, "long", orber_tc:long()}, + {2, "longlong", orber_tc:long()}])), + + ?line code(orber_tc:union("Id", "Name", orber_tc:long(), + -1, [{1, "long", orber_tc:long()}, + {2, "longlong", orber_tc:long()}])), + ok. + + +%%----------------------------------------------------------------- +%% Test Case: enum test +%% Description: +%%----------------------------------------------------------------- +enum(doc) -> []; +enum(suite) -> []; +enum(_) -> + ?line true = orber_tc:check_tc(orber_tc:enum("Id", "Name", + ["E1", "E2", "E3"])), + ?line false = orber_tc:check_tc(orber_tc:enum(42, "Name", + ["E1", "E2", "E3"])), + ?line false = orber_tc:check_tc(orber_tc:enum("Id", false, + ["E1", "E2", "E3"])), + ?line false = orber_tc:check_tc(orber_tc:enum("Id", "Name", + ["E1", false, "E3"])), + ?line code(orber_tc:enum("Id", "Name", ["E1", "E2", "E3"])), + ?line ?match(code(orber_tc:enum(false, "Name", ["E1", "E2", "E3"]))), + ?line ?match(code(orber_tc:enum("Id", 42, ["E1", "E2", "E3"]))), + ?line ?match(code(orber_tc:enum("Id", "Name", ["E1", false, "E3"]))), + ok. + +%%----------------------------------------------------------------- +%% Test Case: string +%% Description: +%%----------------------------------------------------------------- +string(doc) -> []; +string(suite) -> []; +string(_) -> + ?line true = orber_tc:check_tc(orber_tc:string(0)), + ?line true = orber_tc:check_tc(orber_tc:string(1)), + ?line false = orber_tc:check_tc(orber_tc:string("wrong")), + ?line code(orber_tc:string(0)), + ?line code(orber_tc:string(1)), + ?line ?match(code(orber_tc:string(-1))), + ?line ?match(code(orber_tc:string(?ULONGMAX+1))), + ?line ?match(code(orber_tc:string("wrong"))), + ok. + +%%----------------------------------------------------------------- +%% Test Case: wstring +%% Description: +%%----------------------------------------------------------------- +wstring(doc) -> []; +wstring(suite) -> []; +wstring(_) -> + ?line true = orber_tc:check_tc(orber_tc:wstring(0)), + ?line true = orber_tc:check_tc(orber_tc:wstring(1)), + ?line false = orber_tc:check_tc(orber_tc:wstring("wrong")), + ?line code(orber_tc:wstring(0)), + ?line code(orber_tc:wstring(1)), + ?line ?match(code(orber_tc:wstring(-1))), + ?line ?match(code(orber_tc:wstring(?ULONGMAX+1))), + ?line ?match(code(orber_tc:wstring(false))), + ok. + +%%----------------------------------------------------------------- +%% Test Case: sequence +%% Description: +%%----------------------------------------------------------------- +sequence(doc) -> []; +sequence(suite) -> []; +sequence(_) -> + ?line true = orber_tc:check_tc(orber_tc:sequence(orber_tc:struct("Id", "Name", ?ELIST), 0)), + ?line code(orber_tc:sequence(orber_tc:struct("Id", "Name", ?ELIST), 0)), + ok. + +%%----------------------------------------------------------------- +%% Test Case: array +%% Description: +%%----------------------------------------------------------------- +array(doc) -> []; +array(suite) -> []; +array(_) -> + ?line true = orber_tc:check_tc(orber_tc:array(orber_tc:struct("Id", "Name", ?ELIST), 1)), + ?line code(orber_tc:array(orber_tc:struct("Id", "Name", ?ELIST), 1)), + ok. + +%%----------------------------------------------------------------- +%% Test Case: alias +%% Description: +%%----------------------------------------------------------------- +alias(doc) -> []; +alias(suite) -> []; +alias(_) -> + ?line true = orber_tc:check_tc(orber_tc:alias("Id", "Name", orber_tc:struct("Id", "Name", ?ELIST))), + ?line false = orber_tc:check_tc(orber_tc:alias(false, "Name", orber_tc:struct("Id", "Name", ?ELIST))), + ?line false = orber_tc:check_tc(orber_tc:alias("Id", 42, orber_tc:struct("Id", "Name", ?ELIST))), + ?line false = orber_tc:check_tc(orber_tc:alias("Id", "Name", "wrong")), + ?line code(orber_tc:alias("Id", "Name", orber_tc:struct("Id", "Name", ?ELIST))), + ?line ?match(code(orber_tc:alias("Id", "Name", orber_tc:struct("Id", "Name", ?VELIST)))), + ok. + +%%----------------------------------------------------------------- +%% Test Case: exception +%% Description: +%%----------------------------------------------------------------- +exception(doc) -> []; +exception(suite) -> []; +exception(_) -> + ?line true = orber_tc:check_tc(orber_tc:exception("Id", "Name", ?ELIST)), + ?line false = orber_tc:check_tc(orber_tc:exception(42, "Name", ?ELIST)), + ?line false = orber_tc:check_tc(orber_tc:exception("Id", false, ?ELIST)), + ?line false = orber_tc:check_tc(orber_tc:exception("Id", "Name", "wrong")), + ?line code(orber_tc:exception("Id", "Name", ?ELIST)), + ?line ?match(code(orber_tc:exception(42, "Name", ?ELIST))), + ?line ?match(code(orber_tc:exception("Id", false, ?ELIST))), + ?line ?match(code(orber_tc:exception("Id", "Name", "wrong"))), + + ok. + +%%----------------------------------------------------------------- +%% Test Case: fixed +%% Description: +%%----------------------------------------------------------------- +fixed(doc) -> []; +fixed(suite) -> []; +fixed(_) -> + ?line true = orber_tc:check_tc(orber_tc:fixed(25, 2)), + ?line code(orber_tc:fixed(25, 2)), + ok. + +%%----------------------------------------------------------------- +%% Test Case: value +%% Description: +%%----------------------------------------------------------------- +value(doc) -> []; +value(suite) -> []; +value(_) -> + ?line true = orber_tc:check_tc(orber_tc:value("Id", "Name", 42, + orber_tc:fixed(25, 2), ?VELIST)), + ?line false = orber_tc:check_tc(orber_tc:value(42, "Name", 42, + orber_tc:fixed(25, 2), ?VELIST)), + ?line false = orber_tc:check_tc(orber_tc:value("Id", 42, 42, + orber_tc:fixed(25, 2), ?VELIST)), + ?line false = orber_tc:check_tc(orber_tc:value("Id", "Name", "wrong", + orber_tc:fixed(25, 2), ?VELIST)), + ?line false = orber_tc:check_tc(orber_tc:value("Id", "Name", "42", + orber_tc:fixed(25, 2), ?VELIST)), + ?line false = orber_tc:check_tc(orber_tc:value("Id", "Name", "42", + ?VELIST, ?VELIST)), + ?line false = orber_tc:check_tc(orber_tc:value("Id", "Name", "42", + orber_tc:fixed(25, 2), false)), + + ?line code(orber_tc:value("Id", "Name", 42, orber_tc:long(), ?VELIST)), + ok. + +%%----------------------------------------------------------------- +%% Test Case: value_box +%% Description: +%%----------------------------------------------------------------- +value_box(doc) -> []; +value_box(suite) -> []; +value_box(_) -> + ?line true = orber_tc:check_tc(orber_tc:value_box("Id", "Name", + orber_tc:fixed(25, 2))), + ?line false = orber_tc:check_tc(orber_tc:value_box(42, "Name", + orber_tc:fixed(25, 2))), + ?line false = orber_tc:check_tc(orber_tc:value_box("Id", 42, + orber_tc:fixed(25, 2))), + ?line false = orber_tc:check_tc(orber_tc:value_box("Id", "Name", "wrong")), + ?line code(orber_tc:value_box("Id", "Name", orber_tc:long())), + ?line ?match(code(orber_tc:value_box(42, "Name", orber_tc:short()))), + ?line ?match(code(orber_tc:value_box("Id", 42, orber_tc:char()))), + ?line ?match(code(orber_tc:value_box("Id", "Name", false))), + ok. + +%%----------------------------------------------------------------- +%% Test Case: native +%% Description: +%%----------------------------------------------------------------- +native(doc) -> []; +native(suite) -> []; +native(_) -> + ?line true = orber_tc:check_tc(orber_tc:native("Id", "Name")), + ?line false = orber_tc:check_tc(orber_tc:native(42, "Name")), + ?line false = orber_tc:check_tc(orber_tc:native("Id", 42)), + ?line code(orber_tc:native("Id", "Name")), + ?line ?match(code(orber_tc:native(42, "Name"))), + ?line ?match(code(orber_tc:native("Id", 42))), + ok. + +%%----------------------------------------------------------------- +%% Test Case: abstract_interface +%% Description: +%%----------------------------------------------------------------- +abstract_interface(doc) -> []; +abstract_interface(suite) -> []; +abstract_interface(_) -> + ?line true = orber_tc:check_tc(orber_tc:abstract_interface("RepId", "Name")), + ?line false = orber_tc:check_tc(orber_tc:abstract_interface(false, "Name")), + ?line false = orber_tc:check_tc(orber_tc:abstract_interface("RepId", 42)), + ?line code(orber_tc:abstract_interface("RepId", "Name")), + ?line ?match(code(orber_tc:abstract_interface(42, "Name"))), + ?line ?match(code(orber_tc:abstract_interface("Id", 42))), + ok. + + + +%%----------------------------------------------------------------- +%% Test Case: indirection +%% Description: +%%----------------------------------------------------------------- +indirection(doc) -> []; +indirection(suite) -> []; +indirection(_) -> + ?line true = orber_tc:check_tc({'none', 42}), + ok. + +%%----------------------------------------------------------------- +%% Test Case: get_tc +%% Description: +%%----------------------------------------------------------------- +get_tc(doc) -> []; +get_tc(suite) -> []; +get_tc(_) -> + TC = 'CosNaming_Binding':tc(), + ?line TC = orber_tc:get_tc({'CosNaming_Binding', 42}), + ?line ?match(orber_tc:get_tc({'none', 42})), + ok. + +%%----------------------------------------------------------------- +%% MISC Operations +%%----------------------------------------------------------------- +code(Value) -> + cdr_encode:enc_type({1,2}, tk_TypeCode, Value). diff --git a/lib/orber/vsn.mk b/lib/orber/vsn.mk index 79847451d2..ec349ee189 100644 --- a/lib/orber/vsn.mk +++ b/lib/orber/vsn.mk @@ -1,7 +1,8 @@ ORBER_VSN = 3.6.16 -TICKETS = OTP-8489 +TICKETS = OTP-8489 \ + OTP-8543 TICKETS_3.6.15 = OTP-8353 \ OTP-8354 \ diff --git a/lib/public_key/asn1/Makefile b/lib/public_key/asn1/Makefile index fbea701be9..94abec083c 100644 --- a/lib/public_key/asn1/Makefile +++ b/lib/public_key/asn1/Makefile @@ -1,19 +1,19 @@ # # %CopyrightBegin% -# -# Copyright Ericsson AB 2008-2009. All Rights Reserved. -# +# +# 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% # @@ -40,7 +40,7 @@ RELSYSDIR = $(RELEASE_PATH)/lib/public_key-$(VSN) ASN_TOP = OTP-PUB-KEY ASN_MODULES = PKIX1Explicit88 PKIX1Implicit88 PKIX1Algorithms88 \ - PKIXAttributeCertificate OTP-PKIX + PKIXAttributeCertificate PKCS-1 PKCS-3 OTP-PKIX ASN_ASNS = $(ASN_MODULES:%=%.asn1) ASN_ERLS = $(ASN_TOP).erl ASN_HRLS = $(ASN_TOP).hrl @@ -110,4 +110,6 @@ OTP-PUB-KEY.asn1db: PKIX1Algorithms88.asn1 \ PKIX1Explicit88.asn1 \ PKIX1Implicit88.asn1 \ PKIXAttributeCertificate.asn1 \ + PKCS-1.asn1\ + PKCS-3.asn1\ OTP-PKIX.asn1 diff --git a/lib/public_key/asn1/OTP-PUB-KEY.set.asn b/lib/public_key/asn1/OTP-PUB-KEY.set.asn index 2f9ccd6b0e..5c76d13115 100644 --- a/lib/public_key/asn1/OTP-PUB-KEY.set.asn +++ b/lib/public_key/asn1/OTP-PUB-KEY.set.asn @@ -4,4 +4,5 @@ PKIX1Implicit88.asn1 PKIXAttributeCertificate.asn1 PKIX1Algorithms88.asn1 PKCS-1.asn1 +PKCS-3.asn1 DSS.asn1 diff --git a/lib/public_key/asn1/PKCS-3.asn1 b/lib/public_key/asn1/PKCS-3.asn1 new file mode 100644 index 0000000000..64180b3a85 --- /dev/null +++ b/lib/public_key/asn1/PKCS-3.asn1 @@ -0,0 +1,21 @@ +PKCS-3 { + iso(1) member-body(2) us(840) rsadsi(113549) + pkcs(1) 3 +} + +DEFINITIONS EXPLICIT TAGS ::= + +BEGIN + +pkcs-3 OBJECT IDENTIFIER ::= + { iso(1) member-body(2) us(840) rsadsi(113549) + pkcs(1) 3 } + +dhKeyAgreement OBJECT IDENTIFIER ::= { pkcs-3 1 } + +DHParameter ::= SEQUENCE { + prime INTEGER, -- p + base INTEGER, -- g + privateValueLength INTEGER OPTIONAL } + +END
\ No newline at end of file diff --git a/lib/public_key/src/pubkey_crypto.erl b/lib/public_key/src/pubkey_crypto.erl index fe4e97fcc5..4ab655e977 100644 --- a/lib/public_key/src/pubkey_crypto.erl +++ b/lib/public_key/src/pubkey_crypto.erl @@ -1,19 +1,19 @@ %% %% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2008-2009. All Rights Reserved. -%% +%% +%% 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% %% @@ -26,7 +26,7 @@ -export([encrypt_public/3, decrypt_private/3, encrypt_private/3, decrypt_public/3, - sign/2, sign/3, verify/5]). + sign/2, sign/3, verify/5, gen_key/2]). -define(UINT32(X), X:32/unsigned-big-integer). @@ -44,10 +44,14 @@ %% %% Description: Public key encrypts PlainText. %%-------------------------------------------------------------------- -encrypt_public(PlainText, #'RSAPublicKey'{modulus=N,publicExponent=E},Padding) -> - crypto:rsa_public_encrypt(PlainText, [crypto:mpint(E),crypto:mpint(N)],Padding); -encrypt_public(PlainText, #'RSAPrivateKey'{modulus=N,publicExponent=E},Padding) -> - crypto:rsa_public_encrypt(PlainText, [crypto:mpint(E),crypto:mpint(N)],Padding). +encrypt_public(PlainText, #'RSAPublicKey'{modulus=N,publicExponent=E}, + Padding) -> + crypto:rsa_public_encrypt(PlainText, [crypto:mpint(E),crypto:mpint(N)], + Padding); +encrypt_public(PlainText, #'RSAPrivateKey'{modulus=N,publicExponent=E}, + Padding) -> + crypto:rsa_public_encrypt(PlainText, [crypto:mpint(E),crypto:mpint(N)], + Padding). encrypt_private(PlainText, #'RSAPrivateKey'{modulus = N, publicExponent = E, @@ -67,15 +71,20 @@ encrypt_private(PlainText, #'RSAPrivateKey'{modulus = N, %% Description: Uses private key to decrypt public key encrypted data. %%-------------------------------------------------------------------- decrypt_private(CipherText, - #'RSAPrivateKey'{modulus = N,publicExponent = E,privateExponent = D}, + #'RSAPrivateKey'{modulus = N,publicExponent = E, + privateExponent = D}, Padding) -> crypto:rsa_private_decrypt(CipherText, - [crypto:mpint(E), crypto:mpint(N),crypto:mpint(D)], - Padding). -decrypt_public(CipherText, #'RSAPublicKey'{modulus = N, publicExponent = E}, Padding) -> - crypto:rsa_public_decrypt(CipherText,[crypto:mpint(E), crypto:mpint(N)], Padding); -decrypt_public(CipherText, #'RSAPrivateKey'{modulus = N, publicExponent = E}, Padding) -> - crypto:rsa_public_decrypt(CipherText,[crypto:mpint(E), crypto:mpint(N)], Padding). + [crypto:mpint(E), crypto:mpint(N), + crypto:mpint(D)], Padding). +decrypt_public(CipherText, #'RSAPublicKey'{modulus = N, publicExponent = E}, + Padding) -> + crypto:rsa_public_decrypt(CipherText,[crypto:mpint(E), crypto:mpint(N)], + Padding); +decrypt_public(CipherText, #'RSAPrivateKey'{modulus = N, publicExponent = E}, + Padding) -> + crypto:rsa_public_decrypt(CipherText,[crypto:mpint(E), crypto:mpint(N)], + Padding). %%-------------------------------------------------------------------- %% Function: sign(PlainText, Key) -> @@ -125,10 +134,24 @@ verify(sha, PlainText, Signature, Key, #'Dss-Parms'{p = P, q = Q, g = G}) -> [crypto:mpint(P), crypto:mpint(Q), crypto:mpint(G), crypto:mpint(Key)]). + +%%-------------------------------------------------------------------- +%% Function: gen_key(Type, Params) -> +%% Type = diffie_hellman +%% Params = [P,G] | [Y, P, G] +%% Description: Generates keys. +%% ----------------------------------------------------------------- +gen_key(diffie_hellman, [Y, P, G]) -> + crypto:dh_generate_key(crypto:mpint(Y), [crypto:mpint(P), + crypto:mpint(G)]); +gen_key(diffie_hellman, [P, G]) -> + crypto:dh_generate_key([crypto:mpint(P), crypto:mpint(G)]). + +%%% TODO: Support rsa, dss key_gen + %%-------------------------------------------------------------------- %%% Internal functions %%-------------------------------------------------------------------- - sized_binary(Binary) when is_binary(Binary) -> Size = size(Binary), <<?UINT32(Size), Binary/binary>>; diff --git a/lib/public_key/src/public_key.erl b/lib/public_key/src/public_key.erl index 52c695523f..9a90ffe888 100644 --- a/lib/public_key/src/public_key.erl +++ b/lib/public_key/src/public_key.erl @@ -23,11 +23,10 @@ -include("public_key.hrl"). --export([decode_private_key/1, decode_private_key/2, +-export([decode_private_key/1, decode_private_key/2, decode_dhparams/1, decrypt_private/2, decrypt_private/3, encrypt_public/2, encrypt_public/3, decrypt_public/2, decrypt_public/3, - encrypt_private/2, encrypt_private/3, - sign/2, sign/3, + encrypt_private/2, encrypt_private/3, gen_key/1, sign/2, sign/3, verify_signature/3, verify_signature/4, verify_signature/5, pem_to_der/1, pem_to_der/2, pkix_decode_cert/2, pkix_encode_cert/1, pkix_transform/2, @@ -62,6 +61,21 @@ decode_private_key(KeyInfo = {dsa_private_key, _, _}, Password) -> DerEncoded = pubkey_pem:decode_key(KeyInfo, Password), 'OTP-PUB-KEY':decode('DSAPrivateKey', DerEncoded). + +%%-------------------------------------------------------------------- +%% Function: decode_dhparams(DhParamInfo) -> +%% {ok, DhParams} | {error, Reason} +%% +%% DhParamsInfo = {Type, der_bin(), ChipherInfo} - as returned from +%% pem_to_der/[1,2] for DH parameters. +%% Type = dh_params +%% ChipherInfo = opaque() | no_encryption +%% +%% Description: Decodes an asn1 der encoded DH parameters. +%%-------------------------------------------------------------------- +decode_dhparams({dh_params, DerEncoded, not_encrypted}) -> + 'OTP-PUB-KEY':decode('DHParameter', DerEncoded). + %%-------------------------------------------------------------------- %% Function: decrypt_private(CipherText, Key) -> %% decrypt_private(CipherText, Key, Options) -> PlainTex @@ -109,6 +123,18 @@ encrypt_private(PlainText, Key, Options) -> pubkey_crypto:encrypt_private(PlainText, Key, Padding). %%-------------------------------------------------------------------- +%% Function: gen_key(Params) -> Keys +%% +%% Params = #'DomainParameters'{} - Currently only supported option +%% Keys = {PublicDHKey = integer(), PrivateDHKey = integer()} +%% +%% Description: Generates keys. Currently supports Diffie-Hellman keys. +%%-------------------------------------------------------------------- +gen_key(#'DHParameter'{prime = P, base = G}) when is_integer(P), + is_integer(G) -> + pubkey_crypto:gen_key(diffie_hellman, [P, G]). + +%%-------------------------------------------------------------------- %% Function: pem_to_der(CertSource) -> %% pem_to_der(CertSource, Password) -> {ok, [Entry]} | %% {error, Reason} @@ -116,7 +142,6 @@ encrypt_private(PlainText, Key, Options) -> %% CertSource = File | CertData %% CertData = binary() %% File = path() -%% Password = string() %% Entry = {entry_type(), der_bin(), ChipherInfo} %% ChipherInfo = opague() | no_encryption %% der_bin() = binary() @@ -127,7 +152,9 @@ encrypt_private(PlainText, Key, Options) -> %% entries as asn1 der encoded entities. Currently supported entry %% types are certificates, certificate requests, rsa private keys and %% dsa private keys. In the case of a key entry ChipherInfo will be -%% used by decode_private_key/2 if the key is protected by a password. +%% private keys and Diffie Hellam parameters .In the case of a key +%% entry ChipherInfo will be used by decode_private_key/2 if the key +%% is protected by a password. %%-------------------------------------------------------------------- pem_to_der(CertSource) -> pem_to_der(CertSource, no_passwd). @@ -136,7 +163,6 @@ pem_to_der(File, Password) when is_list(File) -> pubkey_pem:read_file(File, Password); pem_to_der(PemBin, Password) when is_binary(PemBin) -> pubkey_pem:decode(PemBin, Password). - %%-------------------------------------------------------------------- %% Function: pkix_decode_cert(BerCert, Type) -> {ok, Cert} | {error, Reason} %% diff --git a/lib/ssh/doc/src/notes.xml b/lib/ssh/doc/src/notes.xml index 2533ab8085..0ce83fa5d1 100644 --- a/lib/ssh/doc/src/notes.xml +++ b/lib/ssh/doc/src/notes.xml @@ -31,6 +31,15 @@ <section><title>Ssh 1.1.9</title> + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p>The function ssh:connect/4 was not exported.</p> + <p>Own Id: OTP-8550 Aux Id:</p> + </item> + </list> + </section> + <section><title>Improvements and New Features</title> <list> <item> diff --git a/lib/ssh/src/ssh.erl b/lib/ssh/src/ssh.erl index 0eef3f95c0..994c77436a 100644 --- a/lib/ssh/src/ssh.erl +++ b/lib/ssh/src/ssh.erl @@ -24,7 +24,7 @@ -include("ssh.hrl"). -include("ssh_connect.hrl"). --export([start/0, start/1, stop/0, connect/3, close/1, connection_info/2, +-export([start/0, start/1, stop/0, connect/3, connect/4, close/1, connection_info/2, channel_info/3, daemon/1, daemon/2, daemon/3, stop_listener/1, stop_listener/2, stop_daemon/1, stop_daemon/2, diff --git a/lib/ssh/vsn.mk b/lib/ssh/vsn.mk index c275cb7acf..074826cafd 100644 --- a/lib/ssh/vsn.mk +++ b/lib/ssh/vsn.mk @@ -5,7 +5,8 @@ APP_VSN = "ssh-$(SSH_VSN)" TICKETS = OTP-8524 \ OTP-8534 \ - OTP-8535 + OTP-8535 \ + OTP-8550 TICKETS_1.1.8 = OTP-8356 \ OTP-8401 diff --git a/lib/ssl/src/ssl.erl b/lib/ssl/src/ssl.erl index cb678e3f53..87a0939897 100644 --- a/lib/ssl/src/ssl.erl +++ b/lib/ssl/src/ssl.erl @@ -549,6 +549,7 @@ handle_options(Opts0, Role) -> key = handle_option(key, Opts, undefined), password = handle_option(password, Opts, ""), cacertfile = handle_option(cacertfile, Opts, CaCertDefault), + dhfile = handle_option(dhfile, Opts, undefined), ciphers = handle_option(ciphers, Opts, []), %% Server side option reuse_session = handle_option(reuse_session, Opts, ReuseSessionFun), @@ -560,7 +561,7 @@ handle_options(Opts0, Role) -> CbInfo = proplists:get_value(cb_info, Opts, {gen_tcp, tcp, tcp_closed}), SslOptions = [versions, verify, verify_fun, depth, certfile, keyfile, - key, password, cacertfile, ciphers, + key, password, cacertfile, dhfile, ciphers, debug, reuse_session, reuse_sessions, ssl_imp, cd_info, renegotiate_at], @@ -612,6 +613,10 @@ validate_option(cacertfile, undefined) -> ""; validate_option(cacertfile, Value) when is_list(Value), Value =/= "" -> Value; +validate_option(dhfile, undefined = Value) -> + Value; +validate_option(dhfile, Value) when is_list(Value), Value =/= "" -> + Value; validate_option(ciphers, Value) when is_list(Value) -> Version = ssl_record:highest_protocol_version([]), try cipher_suites(Version, Value) diff --git a/lib/ssl/src/ssl_connection.erl b/lib/ssl/src/ssl_connection.erl index 3ede21d377..4ec90600e9 100644 --- a/lib/ssl/src/ssl_connection.erl +++ b/lib/ssl/src/ssl_connection.erl @@ -47,8 +47,8 @@ -export([start_link/7]). %% gen_fsm callbacks --export([init/1, hello/2, certify/2, cipher/2, connection/2, abbreviated/2, - handle_event/3, +-export([init/1, hello/2, certify/2, cipher/2, connection/2, + abbreviated/2, handle_event/3, handle_sync_event/4, handle_info/3, terminate/3, code_change/4]). -record(state, { @@ -77,8 +77,9 @@ client_certificate_requested = false, key_algorithm, % atom as defined by cipher_suite public_key_info, % PKIX: {Algorithm, PublicKey, PublicKeyParams} - private_key, % PKIX: 'RSAPrivateKey' - diffie_hellman_params, % + private_key, % PKIX: #'RSAPrivateKey'{} + diffie_hellman_params, % PKIX: #'DHParameter'{} relevant for server side + diffie_hellman_keys, % {PublicKey, PrivateKey} premaster_secret, % cert_db_ref, % ets_table() from, % term(), where to reply @@ -91,6 +92,10 @@ send_queue % queue() }). +-define(DEFAULT_DIFFIE_HELLMAN_PARAMS, + #'DHParameter'{prime = ?DEFAULT_DIFFIE_HELLMAN_PRIME, + base = ?DEFAULT_DIFFIE_HELLMAN_GENERATOR}). + %%==================================================================== %% Internal application API %%==================================================================== @@ -234,7 +239,6 @@ start_link(Role, Host, Port, Socket, Options, User, CbInfo) -> gen_fsm:start_link(?MODULE, [Role, Host, Port, Socket, Options, User, CbInfo], []). - %%==================================================================== %% gen_fsm callbacks %%==================================================================== @@ -253,12 +257,13 @@ init([Role, Host, Port, Socket, {SSLOpts, _} = Options, Hashes0 = ssl_handshake:init_hashes(), try ssl_init(SSLOpts, Role) of - {ok, Ref, CacheRef, OwnCert, Key} -> + {ok, Ref, CacheRef, OwnCert, Key, DHParams} -> State = State0#state{tls_handshake_hashes = Hashes0, own_cert = OwnCert, cert_db_ref = Ref, session_cache = CacheRef, - private_key = Key}, + private_key = Key, + diffie_hellman_params = DHParams}, {ok, hello, State} catch throw:Error -> @@ -271,18 +276,20 @@ init([Role, Host, Port, Socket, {SSLOpts, _} = Options, %% {next_state, NextStateName, %% NextState, Timeout} | %% {stop, Reason, NewState} -%% Description:There should be one instance of this function for each possible -%% state name. Whenever a gen_fsm receives an event sent using -%% gen_fsm:send_event/2, the instance of this function with the same name as -%% the current state name StateName is called to handle the event. It is also -%% called if a timeout occurs. +%% +%% Description:There should be one instance of this function for each +%% possible state name. Whenever a gen_fsm receives an event sent +%% using gen_fsm:send_event/2, the instance of this function with the +%% same name as the current state name StateName is called to handle +%% the event. It is also called if a timeout occurs. %%-------------------------------------------------------------------- hello(socket_control, #state{host = Host, port = Port, role = client, ssl_options = SslOpts, transport_cb = Transport, socket = Socket, connection_states = ConnectionStates} = State0) -> - Hello = ssl_handshake:client_hello(Host, Port, ConnectionStates, SslOpts), + Hello = ssl_handshake:client_hello(Host, Port, + ConnectionStates, SslOpts), Version = Hello#client_hello.client_version, Hashes0 = ssl_handshake:init_hashes(), {BinMsg, CS2, Hashes1} = @@ -311,13 +318,14 @@ hello(#server_hello{cipher_suite = CipherSuite, host = Host, port = Port, session_cache = Cache, session_cache_cb = CacheCb} = State0) -> + {Version, NewId, ConnectionStates1} = ssl_handshake:hello(Hello, ConnectionStates0), {KeyAlgorithm, _, _, _} = ssl_cipher:suite_definition(CipherSuite), - PremasterSecret = make_premaster_secret(ReqVersion), + PremasterSecret = make_premaster_secret(ReqVersion, KeyAlgorithm), State = State0#state{key_algorithm = KeyAlgorithm, negotiated_version = Version, @@ -422,34 +430,35 @@ certify(#certificate{asn1_certificates = []}, ssl_options = #ssl_options{verify = verify_peer, fail_if_no_peer_cert = false}} = State) -> - {next_state, certify, next_record(State#state{client_certificate_requested = false})}; + {next_state, certify, + next_record(State#state{client_certificate_requested = false})}; certify(#certificate{} = Cert, - #state{session = Session, - negotiated_version = Version, + #state{negotiated_version = Version, cert_db_ref = CertDbRef, - ssl_options = Opts} = State0) -> + ssl_options = Opts} = State) -> case ssl_handshake:certify(Cert, CertDbRef, Opts#ssl_options.depth, Opts#ssl_options.verify, Opts#ssl_options.verify_fun) of {PeerCert, PublicKeyInfo} -> - State = State0#state{session = - Session#session{peer_certificate = PeerCert}, - public_key_info = PublicKeyInfo, - client_certificate_requested = false - }, - {next_state, certify, next_record(State)}; + handle_peer_cert(PeerCert, PublicKeyInfo, State); #alert{} = Alert -> - handle_own_alert(Alert, Version, certify_certificate, State0), - {stop, normal, State0} + handle_own_alert(Alert, Version, certify_certificate, State), + {stop, normal, State} end; certify(#server_key_exchange{} = KeyExchangeMsg, - #state{role = client, - key_algorithm = Alg} = State) - when Alg == dhe_dss; Alg == dhe_rsa; Alg == dh_anon; Alg == krb5 -> - NewState = handle_server_key(KeyExchangeMsg, State), - {next_state, certify, NewState}; + #state{role = client, negotiated_version = Version, + key_algorithm = Alg} = State0) + when Alg == dhe_dss; Alg == dhe_rsa ->%%Not imp:Alg == dh_anon;Alg == krb5 -> + case handle_server_key(KeyExchangeMsg, State0) of + #state{} = State -> + {next_state, certify, next_record(State)}; + #alert{} = Alert -> + handle_own_alert(Alert, Version, certify_server_keyexchange, + State0), + {stop, normal, State0} + end; certify(#server_key_exchange{}, State = #state{role = client, negotiated_version = Version, @@ -459,15 +468,30 @@ certify(#server_key_exchange{}, handle_own_alert(Alert, Version, certify_server_key_exchange, State), {stop, normal, State}; -certify(KeyExchangeMsg = #server_key_exchange{}, State = - #state{role = server}) -> - NewState = handle_clinet_key(KeyExchangeMsg, State), - {next_state, cipher, NewState}; - certify(#certificate_request{}, State) -> NewState = State#state{client_certificate_requested = true}, {next_state, certify, next_record(NewState)}; + +%% Master secret was determined with help of server-key exchange msg +certify(#server_hello_done{}, + #state{session = #session{master_secret = MasterSecret} = Session, + connection_states = ConnectionStates0, + negotiated_version = Version, + premaster_secret = undefined, + role = client} = State0) -> + case ssl_handshake:master_secret(Version, Session, + ConnectionStates0, client) of + {MasterSecret, ConnectionStates1} -> + State = State0#state{connection_states = ConnectionStates1}, + client_certify_and_key_exchange(State); + #alert{} = Alert -> + handle_own_alert(Alert, Version, + certify_server_hello_done, State0), + {stop, normal, State0} + end; + +%% Master secret is calculated from premaster_secret certify(#server_hello_done{}, #state{session = Session0, connection_states = ConnectionStates0, @@ -494,7 +518,8 @@ certify(#client_key_exchange{}, negotiated_version = Version}) -> %% We expect a certificate here Alert = ?ALERT_REC(?FATAL, ?UNEXPECTED_MESSAGE), - handle_own_alert(Alert, Version, certify_server_waiting_certificate, State), + handle_own_alert(Alert, Version, + certify_server_waiting_certificate, State), {stop, normal, State}; @@ -524,6 +549,36 @@ certify(#client_key_exchange{exchange_keys handle_own_alert(Alert, Version, certify_client_key_exchange, State0), {stop, normal, State0} + end; + +certify(#client_key_exchange{exchange_keys = #client_diffie_hellman_public{ + dh_public = ClientPublicDhKey}}, + #state{negotiated_version = Version, + diffie_hellman_params = #'DHParameter'{prime = P, + base = G}, + diffie_hellman_keys = {_, ServerDhPrivateKey}, + role = Role, + session = Session, + connection_states = ConnectionStates0} = State0) -> + + PMpint = crypto:mpint(P), + GMpint = crypto:mpint(G), + PremasterSecret = crypto:dh_compute_key(mpint_binary(ClientPublicDhKey), + ServerDhPrivateKey, + [PMpint, GMpint]), + + case ssl_handshake:master_secret(Version, PremasterSecret, + ConnectionStates0, Role) of + {MasterSecret, ConnectionStates} -> + State = State0#state{session = + Session#session{master_secret + = MasterSecret}, + connection_states = ConnectionStates}, + {next_state, cipher, next_record(State)}; + #alert{} = Alert -> + handle_own_alert(Alert, Version, + certify_client_key_exchange, State0), + {stop, normal, State0} end. cipher(socket_control, #state{role = server} = State) -> @@ -675,7 +730,8 @@ handle_event(#ssl_tls{type = ?ALERT, fragment = Data}, StateName, State) -> {next_state, StateName, State}; handle_event(#alert{level = ?FATAL} = Alert, connection, - #state{from = From, user_application = {_Mon, Pid}, log_alert = Log, + #state{from = From, user_application = {_Mon, Pid}, + log_alert = Log, host = Host, port = Port, session = Session, role = Role, socket_options = Opts} = State) -> invalidate_session(Role, Host, Port, Session), @@ -952,7 +1008,8 @@ terminate(_Reason, connection, _S=#state{negotiated_version = Version, Version, ConnectionStates), Transport:send(Socket, BinAlert), Transport:close(Socket); -terminate(_Reason, _StateName, _S=#state{transport_cb = Transport, socket = Socket}) -> +terminate(_Reason, _StateName, _S=#state{transport_cb = Transport, + socket = Socket}) -> Transport:close(Socket), ok. @@ -989,8 +1046,8 @@ ssl_init(SslOpts, Role) -> PrivateKey = init_private_key(SslOpts#ssl_options.key, SslOpts#ssl_options.keyfile, SslOpts#ssl_options.password, Role), - ?DBG_TERM(PrivateKey), - {ok, CertDbRef, CacheRef, OwnCert, PrivateKey}. + DHParams = init_diffie_hellman(SslOpts#ssl_options.dhfile, Role), + {ok, CertDbRef, CacheRef, OwnCert, PrivateKey, DHParams}. init_certificates(#ssl_options{cacertfile = CACertFile, certfile = CertFile}, Role) -> @@ -1025,12 +1082,14 @@ init_certificates(CertDbRef, CacheRef, CertFile, server) -> catch _E:{badmatch, _R={error,_}} -> Report = io_lib:format("SSL: ~p: ~p:~p ~s~n ~p~n", - [?LINE, _E,_R, CertFile, erlang:get_stacktrace()]), + [?LINE, _E,_R, CertFile, + erlang:get_stacktrace()]), error_logger:error_report(Report), throw(ecertfile); _E:_R -> Report = io_lib:format("SSL: ~p: ~p:~p ~s~n ~p~n", - [?LINE, _E,_R, CertFile, erlang:get_stacktrace()]), + [?LINE, _E,_R, CertFile, + erlang:get_stacktrace()]), error_logger:error_report(Report), throw(ecertfile) end. @@ -1041,24 +1100,41 @@ init_private_key(undefined, KeyFile, Password, _) -> try {ok, List} = ssl_manager:cache_pem_file(KeyFile), [Der] = [Der || Der = {PKey, _ , _} <- List, - PKey =:= rsa_private_key orelse PKey =:= dsa_private_key], + PKey =:= rsa_private_key orelse + PKey =:= dsa_private_key], {ok, Decoded} = public_key:decode_private_key(Der,Password), Decoded catch _E:{badmatch, _R={error,_}} -> Report = io_lib:format("SSL: ~p: ~p:~p ~s~n ~p~n", - [?LINE, _E,_R, KeyFile, erlang:get_stacktrace()]), + [?LINE, _E,_R, KeyFile, + erlang:get_stacktrace()]), error_logger:error_report(Report), throw(ekeyfile); _E:_R -> Report = io_lib:format("SSL: ~p: ~p:~p ~s~n ~p~n", - [?LINE, _E,_R, KeyFile, erlang:get_stacktrace()]), + [?LINE, _E,_R, KeyFile, + erlang:get_stacktrace()]), error_logger:error_report(Report), throw(ekeyfile) end; init_private_key(PrivateKey, _, _,_) -> PrivateKey. +init_diffie_hellman(_, client) -> + undefined; +init_diffie_hellman(undefined, _) -> + ?DEFAULT_DIFFIE_HELLMAN_PARAMS; +init_diffie_hellman(DHParamFile, server) -> + {ok, List} = ssl_manager:cache_pem_file(DHParamFile), + case [Der || Der = {dh_params, _ , _} <- List] of + [Der] -> + {ok, Decoded} = public_key:decode_dhparams(Der), + Decoded; + [] -> + ?DEFAULT_DIFFIE_HELLMAN_PARAMS + end. + send_event(FsmPid, Event) -> gen_fsm:send_event(FsmPid, Event). @@ -1084,6 +1160,44 @@ sync_send_all_state_event(FsmPid, Event, Timeout) -> alert_event(Alert) -> send_all_state_event(self(), Alert). + +%% TODO: This clause is not yet supported. Do we need +%% to support it, not supported by openssl! +handle_peer_cert(PeerCert, {Algorithm, _, _} = PublicKeyInfo, + #state{negotiated_version = Version, + session = Session} = + State0) when Algorithm == dh_rsa; + Algorithm == dh_dss -> + case public_key:pkix_is_fixed_dh_cert(PeerCert) of + true -> + %% TODO: extract DH-params from cert and save + %% Keys and SharedSecret in state. + %% {P, G, ServerPublicDhKey}= extract ..... + %% Keys = {ClientDhPublicKey, _} = + %% public_key:gen_key(#'DHParameter'{prime = P, base = G}), + %%SharedSecret = dh_shared_secret(ServerPublicDhKey, + %% ClientDhPublicKey, + %% [P, G]), + %% ssl_handshake:master_secret ... + State = State0#state{session = + Session#session{peer_certificate + = PeerCert}, + public_key_info = PublicKeyInfo}, + {next_state, certify, next_record(State)}; + + false -> + Alert = ?ALERT_REC(?FATAL,?HANDSHAKE_FAILURE), + handle_own_alert(Alert, Version, certify_certificate, State0), + {stop, normal, State0} + end; + +handle_peer_cert(PeerCert, PublicKeyInfo, + #state{session = Session} = State0) -> + State = State0#state{session = + Session#session{peer_certificate = PeerCert}, + public_key_info = PublicKeyInfo}, + {next_state, certify, next_record(State)}. + certify_client(#state{client_certificate_requested = true, role = client, connection_states = ConnectionStates0, transport_cb = Transport, @@ -1117,9 +1231,8 @@ verify_client_cert(#state{client_certificate_requested = true, role = client, ignore -> %% No key or cert or fixed_diffie_hellman State; Verified -> - SigAlg = ssl_handshake:sig_alg(KeyAlg), {BinVerified, ConnectionStates1, Hashes1} = - encode_handshake(Verified, SigAlg, Version, + encode_handshake(Verified, KeyAlg, Version, ConnectionStates0, Hashes0), Transport:send(Socket, BinVerified), State#state{connection_states = ConnectionStates1, @@ -1146,8 +1259,10 @@ do_server_hello(Type, #state{negotiated_version = Version, {_, ConnectionStates1} -> State1 = State#state{connection_states=ConnectionStates1, session = Session}, - {ConnectionStates, Hashes} = finalize_server_handshake(State1), - Resumed = State1#state{connection_states = ConnectionStates, + {ConnectionStates, Hashes} = + finalize_server_handshake(State1), + Resumed = State1#state{connection_states = + ConnectionStates, tls_handshake_hashes = Hashes}, {next_state, abbreviated, next_record(Resumed)}; #alert{} = Alert -> @@ -1266,6 +1381,7 @@ key_exchange(#state{role = server, key_algorithm = rsa_export} = State) -> key_exchange(#state{role = server, key_algorithm = Algo, diffie_hellman_params = Params, + private_key = PrivateKey, connection_states = ConnectionStates0, negotiated_version = Version, tls_handshake_hashes = Hashes0, @@ -1276,26 +1392,38 @@ key_exchange(#state{role = server, key_algorithm = Algo, Algo == dhe_dss_export; Algo == dhe_rsa; Algo == dhe_rsa_export -> - Msg = ssl_handshake:key_exchange(server, Params), - {BinMsg, ConnectionStates1, Hashes1} = - encode_handshake(Msg, Version, ConnectionStates0, Hashes0), - Transport:send(Socket, BinMsg), - State#state{connection_states = ConnectionStates1, - tls_handshake_hashes = Hashes1}; -key_exchange(#state{role = server, key_algorithm = dh_anon, - connection_states = ConnectionStates0, - negotiated_version = Version, - tls_handshake_hashes = Hashes0, - socket = Socket, - transport_cb = Transport - } = State) -> - Msg = ssl_handshake:key_exchange(server, anonymous), - {BinMsg, ConnectionStates1, Hashes1} = + Keys = public_key:gen_key(Params), + ConnectionState = + ssl_record:pending_connection_state(ConnectionStates0, read), + SecParams = ConnectionState#connection_state.security_parameters, + #security_parameters{client_random = ClientRandom, + server_random = ServerRandom} = SecParams, + Msg = ssl_handshake:key_exchange(server, {dh, Keys, Params, + Algo, ClientRandom, + ServerRandom, + PrivateKey}), + {BinMsg, ConnectionStates, Hashes1} = encode_handshake(Msg, Version, ConnectionStates0, Hashes0), Transport:send(Socket, BinMsg), - State#state{connection_states = ConnectionStates1, + State#state{connection_states = ConnectionStates, + diffie_hellman_keys = Keys, tls_handshake_hashes = Hashes1}; + +%% TODO: Not yet supported should be by default disabled when supported. +%% key_exchange(#state{role = server, key_algorithm = dh_anon, +%% connection_states = ConnectionStates0, +%% negotiated_version = Version, +%% tls_handshake_hashes = Hashes0, +%% socket = Socket, +%% transport_cb = Transport +%% } = State) -> +%% Msg = ssl_handshake:key_exchange(server, anonymous), +%% {BinMsg, ConnectionStates1, Hashes1} = +%% encode_handshake(Msg, Version, ConnectionStates0, Hashes0), +%% Transport:send(Socket, BinMsg), +%% State#state{connection_states = ConnectionStates1, +%% tls_handshake_hashes = Hashes1}; key_exchange(#state{role = client, connection_states = ConnectionStates0, @@ -1315,17 +1443,33 @@ key_exchange(#state{role = client, key_exchange(#state{role = client, connection_states = ConnectionStates0, key_algorithm = Algorithm, - public_key_info = PublicKeyInfo, negotiated_version = Version, - diffie_hellman_params = Params, - own_cert = Cert, + diffie_hellman_keys = {DhPubKey, _}, socket = Socket, transport_cb = Transport, tls_handshake_hashes = Hashes0} = State) when Algorithm == dhe_dss; Algorithm == dhe_dss_export; Algorithm == dhe_rsa; Algorithm == dhe_rsa_export -> - Msg = dh_key_exchange(Cert, Params, PublicKeyInfo), + Msg = ssl_handshake:key_exchange(client, {dh, DhPubKey}), + {BinMsg, ConnectionStates1, Hashes1} = + encode_handshake(Msg, Version, ConnectionStates0, Hashes0), + Transport:send(Socket, BinMsg), + State#state{connection_states = ConnectionStates1, + tls_handshake_hashes = Hashes1}; + +key_exchange(#state{role = client, + connection_states = ConnectionStates0, + key_algorithm = Algorithm, + negotiated_version = Version, + client_certificate_requested = ClientCertReq, + own_cert = OwnCert, + diffie_hellman_keys = DhKeys, + socket = Socket, transport_cb = Transport, + tls_handshake_hashes = Hashes0} = State) + when Algorithm == dh_dss; + Algorithm == dh_rsa -> + Msg = dh_key_exchange(OwnCert, DhKeys, ClientCertReq), {BinMsg, ConnectionStates1, Hashes1} = encode_handshake(Msg, Version, ConnectionStates0, Hashes0), Transport:send(Socket, BinMsg), @@ -1340,17 +1484,19 @@ rsa_key_exchange(PremasterSecret, PublicKeyInfo = {Algorithm, _, _}) ssl_handshake:key_exchange(client, {premaster_secret, PremasterSecret, PublicKeyInfo}); - rsa_key_exchange(_, _) -> throw (?ALERT_REC(?FATAL,?HANDSHAKE_FAILURE)). -dh_key_exchange(OwnCert, Params, PublicKeyInfo) -> +dh_key_exchange(OwnCert, DhKeys, true) -> case public_key:pkix_is_fixed_dh_cert(OwnCert) of true -> ssl_handshake:key_exchange(client, fixed_diffie_hellman); false -> - ssl_handshake:key_exchange(client, {dh, Params, PublicKeyInfo}) - end. + {DhPubKey, _} = DhKeys, + ssl_handshake:key_exchange(client, {dh, DhPubKey}) + end; +dh_key_exchange(_, {DhPubKey, _}, false) -> + ssl_handshake:key_exchange(client, {dh, DhPubKey}). request_client_cert(#state{ssl_options = #ssl_options{verify = verify_peer}, connection_states = ConnectionStates0, @@ -1384,7 +1530,8 @@ finalize_client_handshake(#state{connection_states = ConnectionStates0} finalize_server_handshake(State) -> ConnectionStates0 = cipher_protocol(State), ConnectionStates = - ssl_record:activate_pending_connection_state(ConnectionStates0, write), + ssl_record:activate_pending_connection_state(ConnectionStates0, + write), finished(State#state{connection_states = ConnectionStates}). cipher_protocol(#state{connection_states = ConnectionStates, @@ -1392,7 +1539,8 @@ cipher_protocol(#state{connection_states = ConnectionStates, negotiated_version = Version, transport_cb = Transport}) -> {BinChangeCipher, NewConnectionStates} = - encode_change_cipher(#change_cipher_spec{}, Version, ConnectionStates), + encode_change_cipher(#change_cipher_spec{}, + Version, ConnectionStates), Transport:send(Socket, BinChangeCipher), NewConnectionStates. @@ -1408,10 +1556,69 @@ finished(#state{role = Role, socket = Socket, negotiated_version = Version, Transport:send(Socket, BinFinished), {NewConnectionStates, NewHashes}. -handle_server_key(_KeyExchangeMsg, State) -> - State. -handle_clinet_key(_KeyExchangeMsg, State) -> - State. +handle_server_key( + #server_key_exchange{params = + #server_dh_params{dh_p = P, + dh_g = G, + dh_y = ServerPublicDhKey}, + signed_params = Signed}, + #state{session = Session, negotiated_version = Version, role = Role, + public_key_info = PubKeyInfo, + key_algorithm = KeyAlgo, + connection_states = ConnectionStates0} = State) -> + + PLen = size(P), + GLen = size(G), + YLen = size(ServerPublicDhKey), + + ConnectionState = + ssl_record:pending_connection_state(ConnectionStates0, read), + SecParams = ConnectionState#connection_state.security_parameters, + #security_parameters{client_random = ClientRandom, + server_random = ServerRandom} = SecParams, + Hash = ssl_handshake:server_key_exchange_hash(KeyAlgo, + <<ClientRandom/binary, + ServerRandom/binary, + ?UINT16(PLen), P/binary, + ?UINT16(GLen), G/binary, + ?UINT16(YLen), + ServerPublicDhKey/binary>>), + + case verify_dh_params(Signed, Hash, PubKeyInfo) of + true -> + PMpint = mpint_binary(P), + GMpint = mpint_binary(G), + Keys = {_, ClientDhPrivateKey} = + crypto:dh_generate_key([PMpint,GMpint]), + PremasterSecret = + crypto:dh_compute_key(mpint_binary(ServerPublicDhKey), + ClientDhPrivateKey, [PMpint, GMpint]), + case ssl_handshake:master_secret(Version, PremasterSecret, + ConnectionStates0, Role) of + {MasterSecret, ConnectionStates} -> + State#state{diffie_hellman_keys = Keys, + session = + Session#session{master_secret + = MasterSecret}, + connection_states = ConnectionStates}; + #alert{} = Alert -> + Alert + end; + false -> + ?ALERT_REC(?FATAL,?HANDSHAKE_FAILURE) + end. + +%%handle_clinet_key(_KeyExchangeMsg, State) -> +%% State. + +verify_dh_params(Signed, Hash, {?rsaEncryption, PubKey, _PubKeyparams}) -> + case public_key:decrypt_public(Signed, PubKey, + [{rsa_pad, rsa_pkcs1_padding}]) of + Hash -> + true; + _ -> + false + end. encode_alert(#alert{} = Alert, Version, ConnectionStates) -> ?DBG_TERM(Alert), @@ -1649,7 +1856,7 @@ next_state_connection(#state{send_queue = Queue0, ok end, renegotiate(State#state{connection_states = ConnectionStates, - send_queue = queue:in_r({From, RestData})}) + send_queue = queue:in_r({From, RestData}, Queue)}) end; {empty, Queue0} -> next_state_is_connection(State) @@ -1754,7 +1961,8 @@ set_socket_opts(Socket, [], SockOpts, Other) -> inet:setopts(Socket, Other), SockOpts; set_socket_opts(Socket, [{mode, Mode}| Opts], SockOpts, Other) -> - set_socket_opts(Socket, Opts, SockOpts#socket_options{mode = Mode}, Other); + set_socket_opts(Socket, Opts, + SockOpts#socket_options{mode = Mode}, Other); set_socket_opts(Socket, [{packet, Packet}| Opts], SockOpts, Other) -> set_socket_opts(Socket, Opts, SockOpts#socket_options{packet = Packet}, Other); @@ -1809,10 +2017,17 @@ handle_own_alert(Alert, Version, StateName, catch _:_ -> ok end. - -make_premaster_secret({MajVer, MinVer}) -> +make_premaster_secret({MajVer, MinVer}, Alg) when Alg == rsa; + Alg == dh_dss; + Alg == dh_rsa -> Rand = crypto:rand_bytes(?NUM_OF_PREMASTERSECRET_BYTES-2), - <<?BYTE(MajVer), ?BYTE(MinVer), Rand/binary>>. + <<?BYTE(MajVer), ?BYTE(MinVer), Rand/binary>>; +make_premaster_secret(_, _) -> + undefined. + +mpint_binary(Binary) -> + Size = byte_size(Binary), + <<?UINT32(Size), Binary/binary>>. ack_connection(#state{renegotiation = true}) -> diff --git a/lib/ssl/src/ssl_handshake.erl b/lib/ssl/src/ssl_handshake.erl index 4e1c495fda..ff78375b9f 100644 --- a/lib/ssl/src/ssl_handshake.erl +++ b/lib/ssl/src/ssl_handshake.erl @@ -35,7 +35,7 @@ hello_request/0, certify/5, certificate/3, client_certificate_verify/6, certificate_verify/6, certificate_request/2, - key_exchange/2, finished/4, + key_exchange/2, server_key_exchange_hash/2, finished/4, verify_connection/5, get_tls_handshake/4, server_hello_done/0, sig_alg/1, @@ -257,8 +257,10 @@ client_certificate_verify(OwnCert, MasterSecret, Version, Algorithm, %% Description: Checks that the certificate_verify message is valid. %%-------------------------------------------------------------------- certificate_verify(Signature, {_, PublicKey, _}, Version, - MasterSecret, Algorithm, {_, Hashes0}) - when Algorithm =:= rsa; Algorithm =:= dh_rsa; Algorithm =:= dhe_rsa -> + MasterSecret, Algorithm, {_, Hashes0}) + when Algorithm == rsa; + Algorithm == dh_rsa; + Algorithm == dhe_rsa -> Hashes = calc_certificate_verify(Version, MasterSecret, Algorithm, Hashes0), case public_key:decrypt_public(Signature, PublicKey, @@ -305,30 +307,32 @@ key_exchange(client, fixed_diffie_hellman) -> #client_diffie_hellman_public{ dh_public = <<>> }}; -key_exchange(client, {dh, PublicKey}) -> - Len = byte_size(PublicKey), +key_exchange(client, {dh, <<?UINT32(Len), PublicKey:Len/binary>>}) -> #client_key_exchange{ - exchange_keys = #client_diffie_hellman_public{ - dh_public = <<?UINT16(Len), PublicKey/binary>>} + exchange_keys = #client_diffie_hellman_public{ + dh_public = PublicKey} }; -%% key_exchange(server, {{?'dhpublicnumber', _PublicKey, -%% #'DomainParameters'{p = P, g = G, y = Y}, -%% SignAlgorithm, ClientRandom, ServerRandom}}) -> -%% ServerDHParams = #server_dh_params{dh_p = P, dh_g = G, dh_y = Y}, -%% PLen = byte_size(P), -%% GLen = byte_size(G), -%% YLen = byte_size(Y), -%% Hash = server_key_exchange_hash(SignAlgorithm, <<ClientRandom/binary, -%% ServerRandom/binary, -%% ?UINT16(PLen), P/binary, -%% ?UINT16(GLen), G/binary, -%% ?UINT16(YLen), Y/binary>>), -%% Signed = digitally_signed(Hash, PrivateKey), -%% #server_key_exchange{ -%% params = ServerDHParams, -%% signed_params = Signed -%% }; +key_exchange(server, {dh, {<<?UINT32(_), PublicKey/binary>>, _}, + #'DHParameter'{prime = P, base = G}, + KeyAlgo, ClientRandom, ServerRandom, PrivateKey}) -> + <<?UINT32(_), PBin/binary>> = crypto:mpint(P), + <<?UINT32(_), GBin/binary>> = crypto:mpint(G), + PLen = byte_size(PBin), + GLen = byte_size(GBin), + YLen = byte_size(PublicKey), + ServerDHParams = #server_dh_params{dh_p = PBin, + dh_g = GBin, dh_y = PublicKey}, + + Hash = + server_key_exchange_hash(KeyAlgo, <<ClientRandom/binary, + ServerRandom/binary, + ?UINT16(PLen), PBin/binary, + ?UINT16(GLen), GBin/binary, + ?UINT16(YLen), PublicKey/binary>>), + Signed = digitally_signed(Hash, PrivateKey), + #server_key_exchange{params = ServerDHParams, + signed_params = Signed}; key_exchange(_, _) -> %%TODO : Real imp #server_key_exchange{}. @@ -426,7 +430,8 @@ server_hello_done() -> %% %% encode a handshake packet to binary %%-------------------------------------------------------------------- -encode_handshake(Package, Version, SigAlg) -> +encode_handshake(Package, Version, KeyAlg) -> + SigAlg = sig_alg(KeyAlg), {MsgType, Bin} = enc_hs(Package, Version, SigAlg), Len = byte_size(Bin), [MsgType, ?uint24(Len), Bin]. @@ -446,32 +451,16 @@ get_tls_handshake(Data, Buffer, KeyAlg, Version) -> get_tls_handshake_aux(list_to_binary([Buffer, Data]), KeyAlg, Version, []). -get_tls_handshake_aux(<<?BYTE(Type), ?UINT24(Length), Body:Length/binary,Rest/binary>>, - KeyAlg, Version, Acc) -> +get_tls_handshake_aux(<<?BYTE(Type), ?UINT24(Length), + Body:Length/binary,Rest/binary>>, KeyAlg, + Version, Acc) -> Raw = <<?BYTE(Type), ?UINT24(Length), Body/binary>>, - H = dec_hs(Type, Body, KeyAlg, Version), + H = dec_hs(Type, Body, key_excahange_alg(KeyAlg), Version), get_tls_handshake_aux(Rest, KeyAlg, Version, [{H,Raw} | Acc]); get_tls_handshake_aux(Data, _KeyAlg, _Version, Acc) -> {lists:reverse(Acc), Data}. %%-------------------------------------------------------------------- -%% Function: sig_alg(atom()) -> integer() -%% -%% Description: Convert from key exchange as atom to signature -%% algorithm as a ?SIGNATURE_... constant -%%-------------------------------------------------------------------- - -sig_alg(dh_anon) -> - ?SIGNATURE_ANONYMOUS; -sig_alg(Alg) when Alg == dhe_rsa; Alg == rsa; Alg == dh_rsa -> - ?SIGNATURE_RSA; -sig_alg(Alg) when Alg == dh_dss; Alg == dhe_dss -> - ?SIGNATURE_DSA; -sig_alg(_) -> - ?NULL. - - -%%-------------------------------------------------------------------- %%% Internal functions %%-------------------------------------------------------------------- verify_bool(verify_peer) -> @@ -658,8 +647,8 @@ dec_hs(?SERVER_HELLO, <<?BYTE(Major), ?BYTE(Minor), Random:32/binary, dec_hs(?CERTIFICATE, <<?UINT24(ACLen), ASN1Certs:ACLen/binary>>, _, _) -> #certificate{asn1_certificates = certs_to_list(ASN1Certs)}; dec_hs(?SERVER_KEY_EXCHANGE, <<?UINT16(ModLen), Mod:ModLen/binary, - ?UINT16(ExpLen), Exp:ExpLen/binary, - Sig/binary>>, + ?UINT16(ExpLen), Exp:ExpLen/binary, + ?UINT16(_), Sig/binary>>, ?KEY_EXCHANGE_RSA, _) -> #server_key_exchange{params = #server_rsa_params{rsa_modulus = Mod, rsa_exponent = Exp}, @@ -667,9 +656,10 @@ dec_hs(?SERVER_KEY_EXCHANGE, <<?UINT16(ModLen), Mod:ModLen/binary, dec_hs(?SERVER_KEY_EXCHANGE, <<?UINT16(PLen), P:PLen/binary, ?UINT16(GLen), G:GLen/binary, ?UINT16(YLen), Y:YLen/binary, - Sig/binary>>, + ?UINT16(_), Sig/binary>>, ?KEY_EXCHANGE_DIFFIE_HELLMAN, _) -> - #server_key_exchange{params = #server_dh_params{dh_p = P,dh_g = G, dh_y = Y}, + #server_key_exchange{params = #server_dh_params{dh_p = P,dh_g = G, + dh_y = Y}, signed_params = Sig}; dec_hs(?CERTIFICATE_REQUEST, <<?BYTE(CertTypesLen), CertTypes:CertTypesLen/binary, @@ -681,18 +671,20 @@ dec_hs(?SERVER_HELLO_DONE, <<>>, _, _) -> #server_hello_done{}; dec_hs(?CERTIFICATE_VERIFY,<<?UINT16(_), Signature/binary>>, _, _)-> #certificate_verify{signature = Signature}; -dec_hs(?CLIENT_KEY_EXCHANGE, PKEPMS, rsa, {3, 0}) -> +dec_hs(?CLIENT_KEY_EXCHANGE, PKEPMS, ?KEY_EXCHANGE_RSA, {3, 0}) -> PreSecret = #encrypted_premaster_secret{premaster_secret = PKEPMS}, #client_key_exchange{exchange_keys = PreSecret}; -dec_hs(?CLIENT_KEY_EXCHANGE, <<?UINT16(_), PKEPMS/binary>>, rsa, _) -> +dec_hs(?CLIENT_KEY_EXCHANGE, <<?UINT16(_), PKEPMS/binary>>, + ?KEY_EXCHANGE_RSA, _) -> PreSecret = #encrypted_premaster_secret{premaster_secret = PKEPMS}, #client_key_exchange{exchange_keys = PreSecret}; dec_hs(?CLIENT_KEY_EXCHANGE, <<>>, ?KEY_EXCHANGE_DIFFIE_HELLMAN, _) -> %% TODO: Should check whether the cert already contains a suitable DH-key (7.4.7.2) throw(?ALERT_REC(?FATAL, implicit_public_value_encoding)); -dec_hs(?CLIENT_KEY_EXCHANGE, <<?UINT16(DH_YCLen), DH_YC:DH_YCLen/binary>>, +dec_hs(?CLIENT_KEY_EXCHANGE, <<?UINT16(DH_YLen), DH_Y:DH_YLen/binary>>, ?KEY_EXCHANGE_DIFFIE_HELLMAN, _) -> - #client_diffie_hellman_public{dh_public = DH_YC}; + #client_key_exchange{exchange_keys = + #client_diffie_hellman_public{dh_public = DH_Y}}; dec_hs(?FINISHED, VerifyData, _, _) -> #finished{verify_data = VerifyData}; dec_hs(_, _, _, _) -> @@ -765,12 +757,13 @@ enc_hs(#certificate{asn1_certificates = ASN1CertList}, _Version, _) -> {?CERTIFICATE, <<?UINT24(ACLen), ASN1Certs:ACLen/binary>>}; enc_hs(#server_key_exchange{params = #server_rsa_params{rsa_modulus = Mod, rsa_exponent = Exp}, - signed_params = SignedParams}, _Version, _) -> + signed_params = SignedParams}, _Version, _) -> ModLen = byte_size(Mod), ExpLen = byte_size(Exp), - {?SERVER_KEY_EXCHANGE, <<?UINT16(ModLen), Mod/binary, + SignedLen = byte_size(SignedParams), + {?SERVER_KEY_EXCHANGE, <<?UINT16(ModLen),Mod/binary, ?UINT16(ExpLen), Exp/binary, - SignedParams/binary>> + ?UINT16(SignedLen), SignedParams/binary>> }; enc_hs(#server_key_exchange{params = #server_dh_params{ dh_p = P, dh_g = G, dh_y = Y}, @@ -778,10 +771,11 @@ enc_hs(#server_key_exchange{params = #server_dh_params{ PLen = byte_size(P), GLen = byte_size(G), YLen = byte_size(Y), - {?SERVER_KEY_EXCHANGE, <<?UINT16(PLen), P:PLen/binary, - ?UINT16(GLen), G:GLen/binary, - ?UINT16(YLen), Y:YLen/binary, - SignedParams/binary>> + SignedLen = byte_size(SignedParams), + {?SERVER_KEY_EXCHANGE, <<?UINT16(PLen), P/binary, + ?UINT16(GLen), G/binary, + ?UINT16(YLen), Y/binary, + ?UINT16(SignedLen), SignedParams/binary>> }; enc_hs(#certificate_request{certificate_types = CertTypes, certificate_authorities = CertAuths}, @@ -936,13 +930,40 @@ calc_certificate_verify({3, N}, _, Algorithm, Hashes) when N == 1; N == 2 -> ssl_tls1:certificate_verify(Algorithm, Hashes). -%% server_key_exchange_hash(Algorithm, Value) when Algorithm == rsa; -%% Algorithm == dh_rsa; -%% Algorithm == dhe_rsa -> -%% MD5 = crypto:md5_final(Value), -%% SHA = crypto:sha_final(Value), -%% <<MD5/binary, SHA/binary>>; +server_key_exchange_hash(Algorithm, Value) when Algorithm == rsa; + Algorithm == dh_rsa; + Algorithm == dhe_rsa -> + MD5Context = crypto:md5_init(), + NewMD5Context = crypto:md5_update(MD5Context, Value), + MD5 = crypto:md5_final(NewMD5Context), + + SHAContext = crypto:sha_init(), + NewSHAContext = crypto:sha_update(SHAContext, Value), + SHA = crypto:sha_final(NewSHAContext), + + <<MD5/binary, SHA/binary>>; + +server_key_exchange_hash(Algorithm, Value) when Algorithm == dh_dss; + Algorithm == dhe_dss -> + + SHAContext = crypto:sha_init(), + NewSHAContext = crypto:sha_update(SHAContext, Value), + crypto:sha_final(NewSHAContext). + + +sig_alg(dh_anon) -> + ?SIGNATURE_ANONYMOUS; +sig_alg(Alg) when Alg == dhe_rsa; Alg == rsa; Alg == dh_rsa -> + ?SIGNATURE_RSA; +sig_alg(Alg) when Alg == dh_dss; Alg == dhe_dss -> + ?SIGNATURE_DSA; +sig_alg(_) -> + ?NULL. -%% server_key_exchange_hash(Algorithm, Value) when Algorithm == dh_dss; -%% Algorithm == dhe_dss -> -%% crypto:sha_final(Value). +key_excahange_alg(rsa) -> + ?KEY_EXCHANGE_RSA; +key_excahange_alg(Alg) when Alg == dhe_rsa; Alg == dhe_dss; + Alg == dh_dss; Alg == dh_rsa; Alg == dh_anon -> + ?KEY_EXCHANGE_DIFFIE_HELLMAN; +key_excahange_alg(_) -> + ?NULL. diff --git a/lib/ssl/src/ssl_handshake.hrl b/lib/ssl/src/ssl_handshake.hrl index b2bdfa0934..889d39f2af 100644 --- a/lib/ssl/src/ssl_handshake.hrl +++ b/lib/ssl/src/ssl_handshake.hrl @@ -1,19 +1,19 @@ %% %% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2007-2009. All Rights Reserved. -%% +%% +%% Copyright Ericsson AB 2007-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% %% @@ -38,7 +38,8 @@ -define(NUM_OF_SESSION_ID_BYTES, 32). % TSL 1.1 & SSL 3 -define(NUM_OF_PREMASTERSECRET_BYTES, 48). - +-define(DEFAULT_DIFFIE_HELLMAN_GENERATOR, 2). +-define(DEFAULT_DIFFIE_HELLMAN_PRIME, 16#FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFF). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% Handsake protocol - RFC 4346 section 7.4 diff --git a/lib/ssl/src/ssl_internal.hrl b/lib/ssl/src/ssl_internal.hrl index edb8d9741d..ab24c28b2f 100644 --- a/lib/ssl/src/ssl_internal.hrl +++ b/lib/ssl/src/ssl_internal.hrl @@ -63,6 +63,7 @@ key, % password, % cacertfile, % file() + dhfile, % file() ciphers, % %% Local policy for the server if it want's to reuse the session %% or not. Defaluts to allways returning true. diff --git a/lib/ssl/src/ssl_ssl3.erl b/lib/ssl/src/ssl_ssl3.erl index ab29ac64df..df809ce275 100644 --- a/lib/ssl/src/ssl_ssl3.erl +++ b/lib/ssl/src/ssl_ssl3.erl @@ -1,19 +1,19 @@ %% %% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2007-2009. All Rights Reserved. -%% +%% +%% Copyright Ericsson AB 2007-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% %% @@ -182,13 +182,13 @@ setup_keys(export, MasterSecret, ServerRandom, ClientRandom, suites() -> [ %% TODO: uncomment when supported - %% ?TLS_DHE_RSA_WITH_AES_256_CBC_SHA, + ?TLS_DHE_RSA_WITH_AES_256_CBC_SHA, %% ?TLS_DHE_DSS_WITH_AES_256_CBC_SHA, - %% TODO: Funkar inte, borde: ?TLS_RSA_WITH_AES_256_CBC_SHA, - %% ?TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA, + ?TLS_RSA_WITH_AES_256_CBC_SHA, + ?TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA, %% ?TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA, ?TLS_RSA_WITH_3DES_EDE_CBC_SHA, - %% ?TLS_DHE_RSA_WITH_AES_128_CBC_SHA, + ?TLS_DHE_RSA_WITH_AES_128_CBC_SHA, %% ?TLS_DHE_DSS_WITH_AES_128_CBC_SHA, ?TLS_RSA_WITH_AES_128_CBC_SHA, %%?TLS_DHE_DSS_WITH_RC4_128_SHA, TODO: Support this? diff --git a/lib/ssl/src/ssl_tls1.erl b/lib/ssl/src/ssl_tls1.erl index e0013c48ac..ce9a135168 100644 --- a/lib/ssl/src/ssl_tls1.erl +++ b/lib/ssl/src/ssl_tls1.erl @@ -1,19 +1,19 @@ %% %% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2007-2009. All Rights Reserved. -%% +%% +%% Copyright Ericsson AB 2007-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% %% @@ -136,13 +136,13 @@ mac_hash(Method, Mac_write_secret, Seq_num, Type, {Major, Minor}, suites() -> [ %% TODO: uncomment when supported - %% ?TLS_DHE_RSA_WITH_AES_256_CBC_SHA, - %% ?TLS_DHE_DSS_WITH_AES_256_CBC_SHA, - %% TODO: Funkar inte, borde: ?TLS_RSA_WITH_AES_256_CBC_SHA, - %% ?TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA, + ?TLS_DHE_RSA_WITH_AES_256_CBC_SHA, + %%?TLS_DHE_DSS_WITH_AES_256_CBC_SHA, + ?TLS_RSA_WITH_AES_256_CBC_SHA, + ?TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA, %% ?TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA, ?TLS_RSA_WITH_3DES_EDE_CBC_SHA, - %% ?TLS_DHE_RSA_WITH_AES_128_CBC_SHA, + ?TLS_DHE_RSA_WITH_AES_128_CBC_SHA, %% ?TLS_DHE_DSS_WITH_AES_128_CBC_SHA, ?TLS_RSA_WITH_AES_128_CBC_SHA, %%?TLS_DHE_DSS_WITH_RC4_128_SHA, TODO: Support this? diff --git a/lib/ssl/test/ssl_basic_SUITE.erl b/lib/ssl/test/ssl_basic_SUITE.erl index c79cfdea3f..8dc987e3ff 100644 --- a/lib/ssl/test/ssl_basic_SUITE.erl +++ b/lib/ssl/test/ssl_basic_SUITE.erl @@ -155,7 +155,7 @@ all(suite) -> upgrade, upgrade_with_timeout, tcp_connect, ipv6, ekeyfile, ecertfile, ecacertfile, eoptions, shutdown, shutdown_write, shutdown_both, shutdown_error, ciphers, - send_close, + send_close, dh_params, server_verify_peer_passive, server_verify_peer_active, server_verify_peer_active_once, server_verify_none_passive, server_verify_none_active, @@ -239,7 +239,7 @@ controlling_process(Config) when is_list(Config) -> Port = ssl_test_lib:inet_port(Server), Client = ssl_test_lib:start_client([{node, ClientNode}, {port, Port}, {host, Hostname}, - {from, self()}, + {from, self()}, {mfa, {?MODULE, controlling_process_result, [self(), ClientMsg]}}, @@ -675,6 +675,38 @@ send_close(Config) when is_list(Config) -> gen_tcp:close(TcpS), {error, _} = ssl:send(SslS, "Hello world"), ssl_test_lib:close(Server). +%%-------------------------------------------------------------------- +dh_params(doc) -> + ["Test to specify DH-params file in server."]; + +dh_params(suite) -> + []; + +dh_params(Config) when is_list(Config) -> + ClientOpts = ?config(client_opts, Config), + ServerOpts = ?config(server_opts, Config), + DataDir = ?config(data_dir, Config), + DHParamFile = filename:join(DataDir, "dHParam.pem"), + + {ClientNode, ServerNode, Hostname} = ssl_test_lib:run_where(Config), + + Server = ssl_test_lib:start_server([{node, ServerNode}, {port, 0}, + {from, self()}, + {mfa, {?MODULE, send_recv_result_active, []}}, + {options, [{dhfile, DHParamFile} | ServerOpts]}]), + Port = ssl_test_lib:inet_port(Server), + Client = ssl_test_lib:start_client([{node, ClientNode}, {port, Port}, + {host, Hostname}, + {from, self()}, + {mfa, {?MODULE, send_recv_result_active, []}}, + {options, + [{ciphers,[{dhe_rsa,aes_256_cbc,sha,ignore}]} | + ClientOpts]}]), + + ssl_test_lib:check_result(Server, ok, Client, ok), + + ssl_test_lib:close(Server), + ssl_test_lib:close(Client). %%-------------------------------------------------------------------- upgrade(doc) -> diff --git a/lib/ssl/test/ssl_basic_SUITE_data/dHParam.pem b/lib/ssl/test/ssl_basic_SUITE_data/dHParam.pem new file mode 100644 index 0000000000..feb581da30 --- /dev/null +++ b/lib/ssl/test/ssl_basic_SUITE_data/dHParam.pem @@ -0,0 +1,5 @@ +-----BEGIN DH PARAMETERS----- +MIGHAoGBAMY5VmCZ22ZEy/KO8kjt94PH7ZtSG0Z0zitlMlvd4VsNkDzXsVeu+wkH +FGDC3h3vgv6iwXGCbmrSOVk/FPZbzLhwZ8aLnkUFOBbOvVvb1JptQwOt8mf+eScG +M2gGBktheQV5Nf1IrzOctG7VGt+neiqb/Y86uYCcDdL+M8++0qnLAgEC +-----END DH PARAMETERS----- diff --git a/lib/stdlib/doc/src/notes.xml b/lib/stdlib/doc/src/notes.xml index c55eafc8b8..28a3719d38 100644 --- a/lib/stdlib/doc/src/notes.xml +++ b/lib/stdlib/doc/src/notes.xml @@ -50,7 +50,7 @@ <item> <p>A number of bugs concerning re and unicode are corrected:</p> - <p>re:compile no longer looses unicode option, which also + <p>re:compile no longer loses unicode option, which also fixes bug in re:split.</p> <p>re:replace now handles unicode charlist replacement argument</p> diff --git a/lib/stdlib/src/erl_parse.yrl b/lib/stdlib/src/erl_parse.yrl index ea91ec5927..808e1a8926 100644 --- a/lib/stdlib/src/erl_parse.yrl +++ b/lib/stdlib/src/erl_parse.yrl @@ -37,7 +37,6 @@ atom1 record_expr record_tuple record_field record_fields if_expr if_clause if_clauses case_expr cr_clause cr_clauses receive_expr fun_expr fun_clause fun_clauses -%% cond_expr cond_clause cond_clauses try_expr try_catch try_clause try_clauses query_expr function_call argument_list exprs guard @@ -269,7 +268,6 @@ expr_max -> if_expr : '$1'. expr_max -> case_expr : '$1'. expr_max -> receive_expr : '$1'. expr_max -> fun_expr : '$1'. -%%expr_max -> cond_expr : '$1'. expr_max -> try_expr : '$1'. expr_max -> query_expr : '$1'. diff --git a/lib/wx/api_gen/README b/lib/wx/api_gen/README index 3c49f7b2a5..10b5209789 100644 --- a/lib/wx/api_gen/README +++ b/lib/wx/api_gen/README @@ -2,16 +2,20 @@ API GENERATION: Most of the code in wx is generated. Users of wxErlang should not normally need to regenerate the generated code, as it is checked in by wxErlang developers, when changes are made. - 2008-09-29 Code checked in is currently generated from wxwidgets 2.8.7. + + Code checked in is currently generated from wxwidgets 2.8.10. REQUIREMENTS: The code generation requires doxygen (1.4.6) which is used to parse wxWidgets c++ headers and generate xml files (in wx_xml/). - (2008-09-29 doxygen 1.4.6 is required. - Later versions of Doxygen - up to 1.5.6 at least - have a bug in the xml generation - which causes us problems. This has been logged and we are waiting for a fix.) + 2008-09-29 doxygen 1.4.6 is required. + Later versions of Doxygen - up to 1.5.6 at least - have a bug in the xml generation + which causes us problems. This has been logged and we are waiting for a fix. + + doxygen 1.6.1 and doxygen 1.6.3 might work but is not what I use, i.e. + review the diffs. CONFIGURATION: wxapi.conf contains the specification to the code generator. The code @@ -22,5 +26,11 @@ CONFIGURATION: and running make. Sometimes the code generator will require changes, I havn't thought of everything yet. +RUNNING: + I use the following alias wxgen='make WXGTK_DIR=/opt/local/include/wx-2.8/ GL_DIR=/home/dgud/opengl' + + I keep the opengl headers separate so I don't go backwards in version when generating the code + from another machine. + CONTRIBUTION: Send me patches or update the svn version. diff --git a/lib/wx/api_gen/gl_doxygen.conf b/lib/wx/api_gen/gl_doxygen.conf index e29a3654b5..c9bdb6a408 100644 --- a/lib/wx/api_gen/gl_doxygen.conf +++ b/lib/wx/api_gen/gl_doxygen.conf @@ -8,7 +8,7 @@ PROJECT_NUMBER = 0.1 OUTPUT_DIRECTORY = ./ CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English -USE_WINDOWS_ENCODING = NO +#USE_WINDOWS_ENCODING = NO BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = @@ -20,7 +20,7 @@ STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = NO +# DETAILS_AT_TOP = NO INHERIT_DOCS = YES DISTRIBUTE_GROUP_DOC = NO SEPARATE_MEMBER_PAGES = NO @@ -175,17 +175,20 @@ PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = YES -EXPAND_ONLY_PREDEF = NO +EXPAND_ONLY_PREDEF = YES SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = PREDEFINED = \ APIENTRY="" \ + APIENTRYP="*" \ + GLAPIENTRY="" \ + GLAPIENTRYP="*" \ WINGDIAPI="" \ GLAPI="" \ GL_GLEXT_PROTOTYPES="1" -EXPAND_AS_DEFINED = YES +EXPAND_AS_DEFINED = SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references @@ -214,9 +217,9 @@ DIRECTORY_GRAPH = YES DOT_IMAGE_FORMAT = png DOT_PATH = DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1024 -MAX_DOT_GRAPH_HEIGHT = 1024 -MAX_DOT_GRAPH_DEPTH = 0 +#MAX_DOT_GRAPH_WIDTH = 1024 +#MAX_DOT_GRAPH_HEIGHT = 1024 +#MAX_DOT_GRAPH_DEPTH = 0 DOT_TRANSPARENT = NO DOT_MULTI_TARGETS = NO GENERATE_LEGEND = YES diff --git a/lib/wx/api_gen/gl_gen.erl b/lib/wx/api_gen/gl_gen.erl index 91a6a1adbf..42802c6de7 100644 --- a/lib/wx/api_gen/gl_gen.erl +++ b/lib/wx/api_gen/gl_gen.erl @@ -1,19 +1,19 @@ %% %% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2008-2009. All Rights Reserved. -%% +%% +%% 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% %% %%%------------------------------------------------------------------- @@ -47,9 +47,9 @@ safe(What, QuitOnErr) -> io:format("Completed succesfully~n~n", []), QuitOnErr andalso gen_util:halt(0) catch Err:Reason -> - catch gen_util:close(), io:format("Error ~p: ~p:~p~n ~p~n", [get(current_func),Err,Reason,erlang:get_stacktrace()]), + (catch gen_util:close()), timer:sleep(1999), QuitOnErr andalso gen_util:halt(1) end. @@ -605,7 +605,7 @@ is_equal(F1=#func{type=T1,params=A1},F2=#func{type=T2,params=A2}) -> true -> ok; false -> %% io:format("A1: ~p~nA2: ~p~n",[A1,A2]), - ?warning("Skipped Ext Not Equal ~p ~p~n", + ?warning("Keeping Ext Not Equal ~p ~p~n", [F1#func.name,F2#func.name]) end, Equal. diff --git a/lib/wx/api_gen/gl_gen_c.erl b/lib/wx/api_gen/gl_gen_c.erl index 864ce8b1ac..3293050ab9 100644 --- a/lib/wx/api_gen/gl_gen_c.erl +++ b/lib/wx/api_gen/gl_gen_c.erl @@ -136,8 +136,7 @@ declare_var(A=#arg{name=N,in=false,type=#type{name=T,base=binary,size=Sz}}) -> true = is_number(Sz), %% Assert w(" ~s ~s[~p];~n", [T,N,Sz]), A; -declare_var(A=#arg{name=N,in=false, - type=#type{name=T="GLUquadric",base=B,by_val=false,single=true}}) -> +declare_var(A=#arg{in=false, type=#type{name="GLUquadric",by_val=false,single=true}}) -> A; declare_var(A=#arg{name=N,in=false, type=#type{name=T,base=B,by_val=false,single=true}}) -> diff --git a/lib/wx/api_gen/gl_gen_erl.erl b/lib/wx/api_gen/gl_gen_erl.erl index 07e4d6f783..ce35484561 100644 --- a/lib/wx/api_gen/gl_gen_erl.erl +++ b/lib/wx/api_gen/gl_gen_erl.erl @@ -178,9 +178,16 @@ gen_funcs(F) -> erase(current_func), w(".~n~n",[]). -gen_export([F|_]) when is_list(F) -> +gen_export(F) -> + try gen_export_1(F) + catch E:R -> + io:format("Crash ~p:~p in ~p ~n",[E,R, erlang:get_stacktrace()]), + io:format("Func = ~p~n ~p", [F, get(F)]) + end. + +gen_export_1([F|_]) when is_list(F) -> gen_export2(get(F)); -gen_export(F) when is_list(F) -> +gen_export_1(F) when is_list(F) -> gen_export2(get(F)). gen_export2(#func{name=Name,alt={vector,VecPos,Vec}}) -> diff --git a/lib/wx/api_gen/wx_doxygen.conf b/lib/wx/api_gen/wx_doxygen.conf index 1fc57486e6..df150fd154 100644 --- a/lib/wx/api_gen/wx_doxygen.conf +++ b/lib/wx/api_gen/wx_doxygen.conf @@ -8,7 +8,7 @@ PROJECT_NUMBER = 0.1 OUTPUT_DIRECTORY = ./ CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English -USE_WINDOWS_ENCODING = NO +#USE_WINDOWS_ENCODING = NO BRIEF_MEMBER_DESC = YES REPEAT_BRIEF = YES ABBREVIATE_BRIEF = @@ -20,7 +20,7 @@ STRIP_FROM_INC_PATH = SHORT_NAMES = NO JAVADOC_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = NO +# DETAILS_AT_TOP = NO INHERIT_DOCS = YES DISTRIBUTE_GROUP_DOC = NO SEPARATE_MEMBER_PAGES = NO @@ -73,11 +73,11 @@ WARN_LOGFILE = # configuration options related to the input files #--------------------------------------------------------------------------- INPUT = @WXGTK_DIR@/wx/ wx_extra/ -#FILE_PATTERNS = *.h +# FILE_PATTERNS = *.h RECURSIVE = YES EXCLUDE = EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = mac/* mgl/* msw/* os2/* x11/* gtk1/* cocoa/* motif/* msdos/* palmos/* private/* +EXCLUDE_PATTERNS = mac/* mgl/* msw/* os2/* x11/* gtk1/* cocoa/* motif/* msdos/* palmos/* private/* vms_x_fix.h EXAMPLE_PATH = EXAMPLE_PATTERNS = EXAMPLE_RECURSIVE = NO @@ -176,10 +176,11 @@ PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- ENABLE_PREPROCESSING = YES MACRO_EXPANSION = YES -EXPAND_ONLY_PREDEF = NO +EXPAND_ONLY_PREDEF = YES SEARCH_INCLUDES = YES INCLUDE_PATH = INCLUDE_FILE_PATTERNS = + PREDEFINED = \ wxUSE_MENUS=1 \ wxUSE_TOOLBAR=1 \ @@ -215,6 +216,7 @@ PREDEFINED = \ wxUSE_LISTBOX=1 \ wxUSE_BMPBUTTON=1 \ wxUSE_CHECKBOX=1 \ + wxUSE_CHECKLISTBOX=1 \ wxUSE_TREECTRL=1 \ wxUSE_LISTCTRL=1 \ wxUSE_BOOKCTRL=1 \ @@ -251,15 +253,17 @@ PREDEFINED = \ wxUSE_CLIPBOARD=1 \ wxABI_VERSION=20809 \ __WXGTK24__=1 \ + __WXGTK20__=1 \ __WXGTK__=1 \ + wxCHECKLBOX_CHECKED="" \ WXDLLEXPORT="" # WXWIN_COMPATIBILITY_2_6=1 \ - -EXPAND_AS_DEFINED = YES + +EXPAND_AS_DEFINED = WX_FORWARD_TO_SCROLL_HELPER SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- -# Configuration::additions related to external references +# Configuration::additions related to external references #--------------------------------------------------------------------------- TAGFILES = GENERATE_TAGFILE = @@ -285,9 +289,6 @@ DIRECTORY_GRAPH = YES DOT_IMAGE_FORMAT = png DOT_PATH = DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1024 -MAX_DOT_GRAPH_HEIGHT = 1024 -MAX_DOT_GRAPH_DEPTH = 0 DOT_TRANSPARENT = NO DOT_MULTI_TARGETS = NO GENERATE_LEGEND = YES diff --git a/lib/wx/api_gen/wx_gen.erl b/lib/wx/api_gen/wx_gen.erl index 2ed4476440..c075324c1f 100644 --- a/lib/wx/api_gen/wx_gen.erl +++ b/lib/wx/api_gen/wx_gen.erl @@ -255,19 +255,24 @@ parse_attr(Defs, Class, Ev, Info = #hs{acc=AccList0}) -> parse_attr1([{{attr,_}, #xmlElement{content=C, attributes=Attrs}}|R], AttrList0, Opts, Res) -> Parse = fun(Con, Ac) -> parse_param(Con, Opts, Ac) end, Param0 = foldl(Parse, #param{}, drop_empty(C)), - case keysearch(prot, #xmlAttribute.name, Attrs) of - {value, #xmlAttribute{value = "public"}} -> - {Acc,AttrList} = attr_acc(Param0, AttrList0), - parse_attr1(R,AttrList,Opts, - [Param0#param{in=false,prot=public,acc=Acc}|Res]); - {value, #xmlAttribute{value = "protected"}} -> - {Acc,AttrList} = attr_acc(Param0, AttrList0), - parse_attr1(R,AttrList,Opts, - [Param0#param{in=false,prot=protected,acc=Acc}|Res]); - {value, #xmlAttribute{value = "private"}} -> - {Acc,AttrList} = attr_acc(Param0, AttrList0), - parse_attr1(R,AttrList,Opts, - [Param0#param{in=false,prot=private,acc=Acc}|Res]) + case Param0 of + #param{where=nowhere} -> + parse_attr1(R,AttrList0,Opts,Res); + _ -> + case keysearch(prot, #xmlAttribute.name, Attrs) of + {value, #xmlAttribute{value = "public"}} -> + {Acc,AttrList} = attr_acc(Param0, AttrList0), + parse_attr1(R,AttrList,Opts, + [Param0#param{in=false,prot=public,acc=Acc}|Res]); + {value, #xmlAttribute{value = "protected"}} -> + {Acc,AttrList} = attr_acc(Param0, AttrList0), + parse_attr1(R,AttrList,Opts, + [Param0#param{in=false,prot=protected,acc=Acc}|Res]); + {value, #xmlAttribute{value = "private"}} -> + {Acc,AttrList} = attr_acc(Param0, AttrList0), + parse_attr1(R,AttrList,Opts, + [Param0#param{in=false,prot=private,acc=Acc}|Res]) + end end; parse_attr1([{_Id,_}|R],AttrList,Info, Res) -> parse_attr1(R,AttrList,Info, Res); @@ -591,17 +596,17 @@ parse_param(#xmlElement{name=array,content=C},_Opts, T = #param{type=Type0}) -> [#xmlText{value=RealVar}] = C, [Name] = string:tokens(RealVar, "() "), T#param{name=Name}; -%% #type{mod=[const]} -> -%% T#param{type=Type0#type{single=array, by_val=true}}; -%% _ -> -%% T#param{type=Type0#type{single=array, by_val=false}} _ -> T#param{type=Type0#type{single=array, by_val=true}} end; parse_param(#xmlElement{name=name,content=[C]}, _, T) -> %% Attributes have this - #xmlText{value=Name} = C, - T#param{name=Name}; + case C of + #xmlText{value=Name="ms_classInfo"} -> + T#param{name=Name, where=nowhere}; + #xmlText{value=Name} -> + T#param{name=Name} + end; %% Skipped: Attributes have this parse_param(#xmlElement{name=definition}, _, T) -> T; parse_param(#xmlElement{name=argsstring}, _, T) -> T; @@ -610,6 +615,7 @@ parse_param(#xmlElement{name=detaileddescription}, _, T) -> T; parse_param(#xmlElement{name=inbodydescription}, _, T) -> T; parse_param(#xmlElement{name=location}, _, T) -> T; parse_param(#xmlElement{name=referencedby}, _, T) -> T; +parse_param(#xmlElement{name=reimplements}, _, T) -> T; parse_param(Other=#xmlElement{name=Name}, _, T) -> io:format("Unhandled Param ~p ~p ~n in ~p~n", [Name,Other,T]), ?error(unhandled_param). @@ -1274,11 +1280,11 @@ extract_enum(#xmlElement{name=memberdef,content=C}, Class, File) -> undefined -> %% io:format("1Enum name ~p~n", [Name]), %% [io:format(" ~s ~p~n", [D,V]) || {D,V} <- Vals], - put({enum, Name}, #enum{vals=Vals}); + put({enum, Name}, #enum{vals=Vals, from={File,Class,Name0}}); E = #enum{vals=undefined} -> %% io:format("2Enum name ~p~n", [Name]), %% [io:format(" ~s ~p~n", [D,V]) || {D,V} <- Vals], - put({enum, Name}, E#enum{vals=Vals}); + put({enum, Name}, E#enum{vals=Vals, from={File,Class,Name0}}); #enum{vals=Vals} -> ok; %% io:format("Same? ~p ~n", [PVals == Vals]) #enum{vals=OldVals} -> @@ -1352,7 +1358,7 @@ extract_defs(Defs, File) -> {Vals,_Skip} -> %% io:format("Defs file ~p~n", [File]), %% [io:format(" ~s ~p~n", [D,V]) || {D,V} <- Vals, not is_integer(V)] - put({enum, {define,"From " ++ File ++ ".h"}}, #enum{vals=Vals}) + put({enum, {define,"From " ++ File ++ ".h"}}, #enum{vals=Vals, from={File, undefined, "@define"}}) end. extract_defs2(#xmlElement{name=memberdef,content=C},{Acc,Skip}) -> diff --git a/lib/wx/api_gen/wx_gen.hrl b/lib/wx/api_gen/wx_gen.hrl index b34d399358..17265a2842 100644 --- a/lib/wx/api_gen/wx_gen.hrl +++ b/lib/wx/api_gen/wx_gen.hrl @@ -1,19 +1,19 @@ %% %% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2008-2009. All Rights Reserved. -%% +%% +%% 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% -record(class, { @@ -72,7 +72,7 @@ } ). --record(enum, {skip="", as_atom=false, vals}). +-record(enum, {from, skip="", as_atom=false, vals}). -record(const,{name,val,enum,is_const}). -define(error(What), diff --git a/lib/wx/api_gen/wx_gen_cpp.erl b/lib/wx/api_gen/wx_gen_cpp.erl index 9e9f8799c7..846cec46c4 100644 --- a/lib/wx/api_gen/wx_gen_cpp.erl +++ b/lib/wx/api_gen/wx_gen_cpp.erl @@ -1010,6 +1010,11 @@ gen_macros() -> w("#include <wx/filename.h>~n"), w("~n~n", []), + w("#ifndef wxICON_DEFAULT_BITMAP_TYPE~n",[]), + w(" #define wxICON_DEFAULT_BITMAP_TYPE wxBITMAP_TYPE_ICO_RESOURCE~n",[]), + w("#endif~n", []), + w("~n~n", []), + [w("#define ~s_~s ~p~n", [Class,Name,Id]) || {Class,Name,_,Id} <- wx_gen_erl:get_unique_names()], w("~n~n"). diff --git a/lib/wx/api_gen/wx_gen_erl.erl b/lib/wx/api_gen/wx_gen_erl.erl index d75442d307..7962dd9fbf 100644 --- a/lib/wx/api_gen/wx_gen_erl.erl +++ b/lib/wx/api_gen/wx_gen_erl.erl @@ -1035,29 +1035,34 @@ gen_enums_ints() -> " href, target %% string()~n" " }).~n", []), w("~n%% Hardcoded Defines~n", []), - Enums = [E || E = {{enum,_},#enum{as_atom=false}} <- get()], + Enums = [E || {{enum,_},E = #enum{as_atom=false}} <- get()], w("-define(wxDefaultSize, {-1,-1}).~n", []), w("-define(wxDefaultPosition, {-1,-1}).~n", []), w("~n%% Global Variables~n", []), [w("-define(~s, wxe_util:get_const(~s)).~n", [Gvar, Gvar]) || {Gvar,_,_Id} <- get(gvars)], w("~n%% Enum and defines~n", []), - foldl(fun({{enum,Type},Enum= #enum{as_atom=false}}, Done) -> - build_enum_ints(Type,Enum,Done); + foldl(fun(Enum= #enum{vals=Vals}, Done) when Vals =/= [] -> + build_enum_ints(Enum,Done); (_,Done) -> Done end, gb_sets:empty(), lists:sort(Enums)), close(). -build_enum_ints(Type,#enum{vals=Vals},Done) -> - case Type of - [$@|_] -> ok; % anonymous - {Class,[$@|_]} when Vals =/= [] -> w("% From class ~s~n", [Class]); - {Class,Enum} when Vals =/= [] -> w("% From ~s::~s~n", [Class,Enum]); - _ when Vals =/= [] -> w("% Type ~s~n", [Type]); - _ -> ok +build_enum_ints(#enum{from=From, vals=Vals},Done) -> + case From of + {File, undefined, [$@|_]} -> + w("% From \"~s.h\"~n",[File]); + {File, undefined, Name} -> + w("% From \"~s.h\": ~s~n",[File, Name]); + {_File, Class,[$@|_]} -> + w("% From class ~s~n",[Class]); + {_File, Class, Name} -> + w("% From class ~s::~s~n",[Class, Name]) end, - Format = fun(#const{name=Name,val=Value,is_const=true}) when is_integer(Value) -> + Format = fun(#const{name="wxEVT_" ++ _}) -> + ignore; %% Ignore event macros they are not valid in our event model + (#const{name=Name,val=Value,is_const=true}) when is_integer(Value) -> w("-define(~s, ~p).~n", [enum_name(Name),Value]); (#const{name=Name,val=Value,is_const=false}) when is_integer(Value) -> w("-define(~s, wxe_util:get_const(~s)).~n", [enum_name(Name),enum_name(Name)]); diff --git a/lib/wx/api_gen/wxapi.conf b/lib/wx/api_gen/wxapi.conf index 4f7bbfedef..c91a9d7fff 100644 --- a/lib/wx/api_gen/wxapi.conf +++ b/lib/wx/api_gen/wxapi.conf @@ -27,7 +27,11 @@ wxFONTENCODING_UTF32,wxFONTENCODING_UTF16, wxDEFAULT_CONTROL_BORDER,wxMOD_CMD, wxMAJOR_VERSION, wxMINOR_VERSION, - wxRELEASE_NUMBER,wxSUBRELEASE_NUMBER,wxBETA_NUMBER + wxRELEASE_NUMBER,wxSUBRELEASE_NUMBER,wxBETA_NUMBER, + %% + wxALWAYS_NATIVE_DOUBLE_BUFFER, + wxGAUGE_EMULATE_INDETERMINATE_MODE, + wxTR_DEFAULT_STYLE ]}. {gvars, @@ -702,7 +706,7 @@ ['wxCheckBox','~wxCheckBox','Create','GetValue','Get3StateValue', 'Is3rdStateAllowedForUser','Is3State','IsChecked','SetValue', 'Set3StateValue']}. -{class, wxCheckListBox, wxListBox, [{skip,[{wxCheckListBox,8}]}], +{class, wxCheckListBox, wxListBox, [{skip,[{wxCheckListBox,8}]}], [{'wxCheckListBox',[{"pos",{def, "wxDefaultPosition"}}, {"size",{def, "wxDefaultSize"}}, {"choices",{def, ""}}]}, @@ -1686,7 +1690,7 @@ {class, wxSplitterEvent, wxNotifyEvent, - [ + [{acc, [{x, skip}, {y, skip}, {pos, skip}, {win, skip}, {pt, skip}]}, %% arrgh doxygen bugs {event, [wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGED, wxEVT_COMMAND_SPLITTER_SASH_POS_CHANGING, diff --git a/lib/wx/c_src/gen/gl_fdefs.h b/lib/wx/c_src/gen/gl_fdefs.h index f8851ddb83..2096f7a413 100644 --- a/lib/wx/c_src/gen/gl_fdefs.h +++ b/lib/wx/c_src/gen/gl_fdefs.h @@ -16,7 +16,7 @@ * * %CopyrightEnd% */ -/***** This file is generated do not edit ****/ +/***** This file is generated do not edit ****/ #ifdef WX_DEF_EXTS # define WXE_EXTERN diff --git a/lib/wx/c_src/gen/gl_finit.h b/lib/wx/c_src/gen/gl_finit.h index a22192d06a..ef29f05c4d 100644 --- a/lib/wx/c_src/gen/gl_finit.h +++ b/lib/wx/c_src/gen/gl_finit.h @@ -16,7 +16,7 @@ * * %CopyrightEnd% */ -/***** This file is generated do not edit ****/ +/***** This file is generated do not edit ****/ static struct { const char * name; diff --git a/lib/wx/c_src/gen/gl_funcs.cpp b/lib/wx/c_src/gen/gl_funcs.cpp index 41a5524891..95d3c23b23 100644 --- a/lib/wx/c_src/gen/gl_funcs.cpp +++ b/lib/wx/c_src/gen/gl_funcs.cpp @@ -16,7 +16,7 @@ * * %CopyrightEnd% */ -/***** This file is generated do not edit ****/ +/***** This file is generated do not edit ****/ #include <stdio.h> #include <string.h> @@ -41,10 +41,10 @@ void gl_dispatch(int op, char *bp,ErlDrvTermData caller,WXEBinRef *bins[]){ } }; - switch(op) + switch(op) { - case 5000: - wxe_tess_impl(bp, caller); + case 5000: + wxe_tess_impl(bp, caller); break; case WXE_BIN_INCR: driver_binary_inc_refc(bins[0]->bin); @@ -52,7 +52,7 @@ void gl_dispatch(int op, char *bp,ErlDrvTermData caller,WXEBinRef *bins[]){ case WXE_BIN_DECR: driver_binary_dec_refc(bins[0]->bin); break; -case 5010: { // gluBuild1DMipmapLevels +case 5010: { // gluBuild1DMipmapLevels GLenum *target = (GLenum *) bp; bp += 4; GLint *internalFormat = (GLint *) bp; bp += 4; GLsizei *width = (GLsizei *) bp; bp += 4; @@ -69,8 +69,8 @@ case 5010: { // gluBuild1DMipmapLevels rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5011: { // gluBuild1DMipmaps +}; break; +case 5011: { // gluBuild1DMipmaps GLenum *target = (GLenum *) bp; bp += 4; GLint *internalFormat = (GLint *) bp; bp += 4; GLsizei *width = (GLsizei *) bp; bp += 4; @@ -84,8 +84,8 @@ case 5011: { // gluBuild1DMipmaps rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5012: { // gluBuild2DMipmapLevels +}; break; +case 5012: { // gluBuild2DMipmapLevels GLenum *target = (GLenum *) bp; bp += 4; GLint *internalFormat = (GLint *) bp; bp += 4; GLsizei *width = (GLsizei *) bp; bp += 4; @@ -103,8 +103,8 @@ case 5012: { // gluBuild2DMipmapLevels rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5013: { // gluBuild2DMipmaps +}; break; +case 5013: { // gluBuild2DMipmaps GLenum *target = (GLenum *) bp; bp += 4; GLint *internalFormat = (GLint *) bp; bp += 4; GLsizei *width = (GLsizei *) bp; bp += 4; @@ -119,8 +119,8 @@ case 5013: { // gluBuild2DMipmaps rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5014: { // gluBuild3DMipmapLevels +}; break; +case 5014: { // gluBuild3DMipmapLevels GLenum *target = (GLenum *) bp; bp += 4; GLint *internalFormat = (GLint *) bp; bp += 4; GLsizei *width = (GLsizei *) bp; bp += 4; @@ -139,8 +139,8 @@ case 5014: { // gluBuild3DMipmapLevels rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5015: { // gluBuild3DMipmaps +}; break; +case 5015: { // gluBuild3DMipmaps GLenum *target = (GLenum *) bp; bp += 4; GLint *internalFormat = (GLint *) bp; bp += 4; GLsizei *width = (GLsizei *) bp; bp += 4; @@ -156,8 +156,8 @@ case 5015: { // gluBuild3DMipmaps rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5016: { // gluCheckExtension +}; break; +case 5016: { // gluCheckExtension int * extNameLen = (int *) bp; bp += 4; GLubyte * extName = (GLubyte *) bp; bp += (8-((*extNameLen*1+4)%8))%8; int * extStringLen = (int *) bp; bp += 4; @@ -169,8 +169,8 @@ case 5016: { // gluCheckExtension rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5017: { // gluCylinder +}; break; +case 5017: { // gluCylinder GLUquadric * quad = (GLUquadric *) * (GLuint64EXT *) bp; bp += 8; GLdouble *base = (GLdouble *) bp; bp += 8; GLdouble *top = (GLdouble *) bp; bp += 8; @@ -178,20 +178,20 @@ case 5017: { // gluCylinder GLint *slices = (GLint *) bp; bp += 4; GLint *stacks = (GLint *) bp; bp += 4; wegluCylinder(quad,*base,*top,*height,*slices,*stacks); -}; break; -case 5018: { // gluDeleteQuadric +}; break; +case 5018: { // gluDeleteQuadric GLUquadric * quad = (GLUquadric *) * (GLuint64EXT *) bp; bp += 8; wegluDeleteQuadric(quad); -}; break; -case 5019: { // gluDisk +}; break; +case 5019: { // gluDisk GLUquadric * quad = (GLUquadric *) * (GLuint64EXT *) bp; bp += 8; GLdouble *inner = (GLdouble *) bp; bp += 8; GLdouble *outer = (GLdouble *) bp; bp += 8; GLint *slices = (GLint *) bp; bp += 4; GLint *loops = (GLint *) bp; bp += 4; wegluDisk(quad,*inner,*outer,*slices,*loops); -}; break; -case 5020: { // gluErrorString +}; break; +case 5020: { // gluErrorString GLenum *error = (GLenum *) bp; bp += 4; const GLubyte * result = wegluErrorString(*error); int AP = 0; ErlDrvTermData rt[7]; @@ -200,8 +200,8 @@ case 5020: { // gluErrorString rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 7 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,7); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5021: { // gluGetString +}; break; +case 5021: { // gluGetString GLenum *name = (GLenum *) bp; bp += 4; const GLubyte * result = wegluGetString(*name); int AP = 0; ErlDrvTermData rt[7]; @@ -210,8 +210,8 @@ case 5021: { // gluGetString rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 7 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,7); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5022: { // gluLookAt +}; break; +case 5022: { // gluLookAt GLdouble *eyeX = (GLdouble *) bp; bp += 8; GLdouble *eyeY = (GLdouble *) bp; bp += 8; GLdouble *eyeZ = (GLdouble *) bp; bp += 8; @@ -222,8 +222,8 @@ case 5022: { // gluLookAt GLdouble *upY = (GLdouble *) bp; bp += 8; GLdouble *upZ = (GLdouble *) bp; bp += 8; wegluLookAt(*eyeX,*eyeY,*eyeZ,*centerX,*centerY,*centerZ,*upX,*upY,*upZ); -}; break; -case 5023: { // gluNewQuadric +}; break; +case 5023: { // gluNewQuadric GLUquadric * result = wegluNewQuadric(); int AP = 0; ErlDrvTermData rt[6]; rt[AP++]=ERL_DRV_ATOM; rt[AP++]=driver_mk_atom((char *) "_wxe_result_"); @@ -231,15 +231,15 @@ case 5023: { // gluNewQuadric rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5024: { // gluOrtho2D +}; break; +case 5024: { // gluOrtho2D GLdouble *left = (GLdouble *) bp; bp += 8; GLdouble *right = (GLdouble *) bp; bp += 8; GLdouble *bottom = (GLdouble *) bp; bp += 8; GLdouble *top = (GLdouble *) bp; bp += 8; wegluOrtho2D(*left,*right,*bottom,*top); -}; break; -case 5025: { // gluPartialDisk +}; break; +case 5025: { // gluPartialDisk GLUquadric * quad = (GLUquadric *) * (GLuint64EXT *) bp; bp += 8; GLdouble *inner = (GLdouble *) bp; bp += 8; GLdouble *outer = (GLdouble *) bp; bp += 8; @@ -248,23 +248,23 @@ case 5025: { // gluPartialDisk GLdouble *start = (GLdouble *) bp; bp += 8; GLdouble *sweep = (GLdouble *) bp; bp += 8; wegluPartialDisk(quad,*inner,*outer,*slices,*loops,*start,*sweep); -}; break; -case 5026: { // gluPerspective +}; break; +case 5026: { // gluPerspective GLdouble *fovy = (GLdouble *) bp; bp += 8; GLdouble *aspect = (GLdouble *) bp; bp += 8; GLdouble *zNear = (GLdouble *) bp; bp += 8; GLdouble *zFar = (GLdouble *) bp; bp += 8; wegluPerspective(*fovy,*aspect,*zNear,*zFar); -}; break; -case 5027: { // gluPickMatrix +}; break; +case 5027: { // gluPickMatrix GLdouble *x = (GLdouble *) bp; bp += 8; GLdouble *y = (GLdouble *) bp; bp += 8; GLdouble *delX = (GLdouble *) bp; bp += 8; GLdouble *delY = (GLdouble *) bp; bp += 8; GLint * viewport = (GLint *) bp; bp += 16; wegluPickMatrix(*x,*y,*delX,*delY,viewport); -}; break; -case 5028: { // gluProject +}; break; +case 5028: { // gluProject GLdouble *objX = (GLdouble *) bp; bp += 8; GLdouble *objY = (GLdouble *) bp; bp += 8; GLdouble *objZ = (GLdouble *) bp; bp += 8; @@ -285,28 +285,28 @@ case 5028: { // gluProject rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5029: { // gluQuadricDrawStyle +}; break; +case 5029: { // gluQuadricDrawStyle GLUquadric * quad = (GLUquadric *) * (GLuint64EXT *) bp; bp += 8; GLenum *draw = (GLenum *) bp; bp += 4; wegluQuadricDrawStyle(quad,*draw); -}; break; -case 5030: { // gluQuadricNormals +}; break; +case 5030: { // gluQuadricNormals GLUquadric * quad = (GLUquadric *) * (GLuint64EXT *) bp; bp += 8; GLenum *normal = (GLenum *) bp; bp += 4; wegluQuadricNormals(quad,*normal); -}; break; -case 5031: { // gluQuadricOrientation +}; break; +case 5031: { // gluQuadricOrientation GLUquadric * quad = (GLUquadric *) * (GLuint64EXT *) bp; bp += 8; GLenum *orientation = (GLenum *) bp; bp += 4; wegluQuadricOrientation(quad,*orientation); -}; break; -case 5032: { // gluQuadricTexture +}; break; +case 5032: { // gluQuadricTexture GLUquadric * quad = (GLUquadric *) * (GLuint64EXT *) bp; bp += 8; GLboolean *texture = (GLboolean *) bp; bp += 1; wegluQuadricTexture(quad,*texture); -}; break; -case 5033: { // gluScaleImage +}; break; +case 5033: { // gluScaleImage GLenum *format = (GLenum *) bp; bp += 4; GLsizei *wIn = (GLsizei *) bp; bp += 4; GLsizei *hIn = (GLsizei *) bp; bp += 4; @@ -323,15 +323,15 @@ case 5033: { // gluScaleImage rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5034: { // gluSphere +}; break; +case 5034: { // gluSphere GLUquadric * quad = (GLUquadric *) * (GLuint64EXT *) bp; bp += 8; GLdouble *radius = (GLdouble *) bp; bp += 8; GLint *slices = (GLint *) bp; bp += 4; GLint *stacks = (GLint *) bp; bp += 4; wegluSphere(quad,*radius,*slices,*stacks); -}; break; -case 5035: { // gluUnProject +}; break; +case 5035: { // gluUnProject GLdouble *winX = (GLdouble *) bp; bp += 8; GLdouble *winY = (GLdouble *) bp; bp += 8; GLdouble *winZ = (GLdouble *) bp; bp += 8; @@ -352,8 +352,8 @@ case 5035: { // gluUnProject rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5036: { // gluUnProject4 +}; break; +case 5036: { // gluUnProject4 GLdouble *winX = (GLdouble *) bp; bp += 8; GLdouble *winY = (GLdouble *) bp; bp += 8; GLdouble *winZ = (GLdouble *) bp; bp += 8; @@ -379,18 +379,18 @@ case 5036: { // gluUnProject4 rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 16 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,16); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5037: { // glAccum +}; break; +case 5037: { // glAccum GLenum *op = (GLenum *) bp; bp += 4; GLfloat *value = (GLfloat *) bp; bp += 4; weglAccum(*op,*value); -}; break; -case 5038: { // glAlphaFunc +}; break; +case 5038: { // glAlphaFunc GLenum *func = (GLenum *) bp; bp += 4; GLclampf *ref = (GLclampf *) bp; bp += 4; weglAlphaFunc(*func,*ref); -}; break; -case 5039: { // glAreTexturesResident +}; break; +case 5039: { // glAreTexturesResident int * texturesLen = (int *) bp; bp += 4; GLuint * textures = (GLuint *) bp; bp += (8-((*texturesLen*4+4)%8))%8; GLboolean *residences; @@ -407,23 +407,23 @@ case 5039: { // glAreTexturesResident rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 11 + (*texturesLen)*2 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,11 + (*texturesLen)*2); driver_send_term(WXE_DRV_PORT,caller,rt,AP); - driver_free(rt); + driver_free(rt); driver_free(residences); -}; break; -case 5040: { // glArrayElement +}; break; +case 5040: { // glArrayElement GLint *i = (GLint *) bp; bp += 4; weglArrayElement(*i); -}; break; -case 5041: { // glBegin +}; break; +case 5041: { // glBegin GLenum *mode = (GLenum *) bp; bp += 4; weglBegin(*mode); -}; break; -case 5042: { // glBindTexture +}; break; +case 5042: { // glBindTexture GLenum *target = (GLenum *) bp; bp += 4; GLuint *texture = (GLuint *) bp; bp += 4; weglBindTexture(*target,*texture); -}; break; -case 5043: { // glBitmap +}; break; +case 5043: { // glBitmap GLsizei *width = (GLsizei *) bp; bp += 4; GLsizei *height = (GLsizei *) bp; bp += 4; GLfloat *xorig = (GLfloat *) bp; bp += 4; @@ -432,8 +432,8 @@ case 5043: { // glBitmap GLfloat *ymove = (GLfloat *) bp; bp += 4; GLubyte *bitmap = (GLubyte *) * (int *) bp; bp += 4; weglBitmap(*width,*height,*xorig,*yorig,*xmove,*ymove,bitmap); -}; break; -case 5044: { // glBitmap +}; break; +case 5044: { // glBitmap GLsizei *width = (GLsizei *) bp; bp += 4; GLsizei *height = (GLsizei *) bp; bp += 4; GLfloat *xorig = (GLfloat *) bp; bp += 4; @@ -442,156 +442,156 @@ case 5044: { // glBitmap GLfloat *ymove = (GLfloat *) bp; bp += 4; GLubyte *bitmap = (GLubyte *) bins[0]->base; weglBitmap(*width,*height,*xorig,*yorig,*xmove,*ymove,bitmap); -}; break; -case 5045: { // glBlendFunc +}; break; +case 5045: { // glBlendFunc GLenum *sfactor = (GLenum *) bp; bp += 4; GLenum *dfactor = (GLenum *) bp; bp += 4; weglBlendFunc(*sfactor,*dfactor); -}; break; -case 5046: { // glCallList +}; break; +case 5046: { // glCallList GLuint *list = (GLuint *) bp; bp += 4; weglCallList(*list); -}; break; -case 5047: { // glCallLists +}; break; +case 5047: { // glCallLists int * listsLen = (int *) bp; bp += 4; GLuint * lists = (GLuint *) bp; bp += (8-((*listsLen*4+4)%8))%8; weglCallLists(*listsLen,GL_UNSIGNED_INT,lists); -}; break; -case 5048: { // glClear +}; break; +case 5048: { // glClear GLbitfield *mask = (GLbitfield *) bp; bp += 4; weglClear(*mask); -}; break; -case 5049: { // glClearAccum +}; break; +case 5049: { // glClearAccum GLfloat *red = (GLfloat *) bp; bp += 4; GLfloat *green = (GLfloat *) bp; bp += 4; GLfloat *blue = (GLfloat *) bp; bp += 4; GLfloat *alpha = (GLfloat *) bp; bp += 4; weglClearAccum(*red,*green,*blue,*alpha); -}; break; -case 5050: { // glClearColor +}; break; +case 5050: { // glClearColor GLclampf *red = (GLclampf *) bp; bp += 4; GLclampf *green = (GLclampf *) bp; bp += 4; GLclampf *blue = (GLclampf *) bp; bp += 4; GLclampf *alpha = (GLclampf *) bp; bp += 4; weglClearColor(*red,*green,*blue,*alpha); -}; break; -case 5051: { // glClearDepth +}; break; +case 5051: { // glClearDepth GLclampd *depth = (GLclampd *) bp; bp += 8; weglClearDepth(*depth); -}; break; -case 5052: { // glClearIndex +}; break; +case 5052: { // glClearIndex GLfloat *c = (GLfloat *) bp; bp += 4; weglClearIndex(*c); -}; break; -case 5053: { // glClearStencil +}; break; +case 5053: { // glClearStencil GLint *s = (GLint *) bp; bp += 4; weglClearStencil(*s); -}; break; -case 5054: { // glClipPlane +}; break; +case 5054: { // glClipPlane GLenum *plane = (GLenum *) bp; bp += 4; bp += 4; GLdouble * equation = (GLdouble *) bp; bp += 32; weglClipPlane(*plane,equation); -}; break; -case 5055: { // glColor3bv +}; break; +case 5055: { // glColor3bv GLbyte *v = (GLbyte *) bp; bp += 1; weglColor3bv(v); -}; break; -case 5056: { // glColor3dv +}; break; +case 5056: { // glColor3dv GLdouble *v = (GLdouble *) bp; bp += 8; weglColor3dv(v); -}; break; -case 5057: { // glColor3fv +}; break; +case 5057: { // glColor3fv GLfloat *v = (GLfloat *) bp; bp += 4; weglColor3fv(v); -}; break; -case 5058: { // glColor3iv +}; break; +case 5058: { // glColor3iv GLint *v = (GLint *) bp; bp += 4; weglColor3iv(v); -}; break; -case 5059: { // glColor3sv +}; break; +case 5059: { // glColor3sv GLshort *v = (GLshort *) bp; bp += 2; weglColor3sv(v); -}; break; -case 5060: { // glColor3ubv +}; break; +case 5060: { // glColor3ubv GLubyte *v = (GLubyte *) bp; bp += 1; weglColor3ubv(v); -}; break; -case 5061: { // glColor3uiv +}; break; +case 5061: { // glColor3uiv GLuint *v = (GLuint *) bp; bp += 4; weglColor3uiv(v); -}; break; -case 5062: { // glColor3usv +}; break; +case 5062: { // glColor3usv GLushort *v = (GLushort *) bp; bp += 2; weglColor3usv(v); -}; break; -case 5063: { // glColor4bv +}; break; +case 5063: { // glColor4bv GLbyte *v = (GLbyte *) bp; bp += 1; weglColor4bv(v); -}; break; -case 5064: { // glColor4dv +}; break; +case 5064: { // glColor4dv GLdouble *v = (GLdouble *) bp; bp += 8; weglColor4dv(v); -}; break; -case 5065: { // glColor4fv +}; break; +case 5065: { // glColor4fv GLfloat *v = (GLfloat *) bp; bp += 4; weglColor4fv(v); -}; break; -case 5066: { // glColor4iv +}; break; +case 5066: { // glColor4iv GLint *v = (GLint *) bp; bp += 4; weglColor4iv(v); -}; break; -case 5067: { // glColor4sv +}; break; +case 5067: { // glColor4sv GLshort *v = (GLshort *) bp; bp += 2; weglColor4sv(v); -}; break; -case 5068: { // glColor4ubv +}; break; +case 5068: { // glColor4ubv GLubyte *v = (GLubyte *) bp; bp += 1; weglColor4ubv(v); -}; break; -case 5069: { // glColor4uiv +}; break; +case 5069: { // glColor4uiv GLuint *v = (GLuint *) bp; bp += 4; weglColor4uiv(v); -}; break; -case 5070: { // glColor4usv +}; break; +case 5070: { // glColor4usv GLushort *v = (GLushort *) bp; bp += 2; weglColor4usv(v); -}; break; -case 5071: { // glColorMask +}; break; +case 5071: { // glColorMask GLboolean *red = (GLboolean *) bp; bp += 1; GLboolean *green = (GLboolean *) bp; bp += 1; GLboolean *blue = (GLboolean *) bp; bp += 1; GLboolean *alpha = (GLboolean *) bp; bp += 1; weglColorMask(*red,*green,*blue,*alpha); -}; break; -case 5072: { // glColorMaterial +}; break; +case 5072: { // glColorMaterial GLenum *face = (GLenum *) bp; bp += 4; GLenum *mode = (GLenum *) bp; bp += 4; weglColorMaterial(*face,*mode); -}; break; -case 5073: { // glColorPointer +}; break; +case 5073: { // glColorPointer GLint *size = (GLint *) bp; bp += 4; GLenum *type = (GLenum *) bp; bp += 4; GLsizei *stride = (GLsizei *) bp; bp += 4; GLvoid *pointer = (GLvoid *) * (int *) bp; bp += 4; weglColorPointer(*size,*type,*stride,pointer); -}; break; -case 5074: { // glColorPointer +}; break; +case 5074: { // glColorPointer GLint *size = (GLint *) bp; bp += 4; GLenum *type = (GLenum *) bp; bp += 4; GLsizei *stride = (GLsizei *) bp; bp += 4; GLvoid *pointer = (GLvoid *) bins[0]->base; weglColorPointer(*size,*type,*stride,pointer); -}; break; -case 5075: { // glCopyPixels +}; break; +case 5075: { // glCopyPixels GLint *x = (GLint *) bp; bp += 4; GLint *y = (GLint *) bp; bp += 4; GLsizei *width = (GLsizei *) bp; bp += 4; GLsizei *height = (GLsizei *) bp; bp += 4; GLenum *type = (GLenum *) bp; bp += 4; weglCopyPixels(*x,*y,*width,*height,*type); -}; break; -case 5076: { // glCopyTexImage1D +}; break; +case 5076: { // glCopyTexImage1D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLenum *internalFormat = (GLenum *) bp; bp += 4; @@ -600,8 +600,8 @@ case 5076: { // glCopyTexImage1D GLsizei *width = (GLsizei *) bp; bp += 4; GLint *border = (GLint *) bp; bp += 4; weglCopyTexImage1D(*target,*level,*internalFormat,*x,*y,*width,*border); -}; break; -case 5077: { // glCopyTexImage2D +}; break; +case 5077: { // glCopyTexImage2D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLenum *internalFormat = (GLenum *) bp; bp += 4; @@ -611,8 +611,8 @@ case 5077: { // glCopyTexImage2D GLsizei *height = (GLsizei *) bp; bp += 4; GLint *border = (GLint *) bp; bp += 4; weglCopyTexImage2D(*target,*level,*internalFormat,*x,*y,*width,*height,*border); -}; break; -case 5078: { // glCopyTexSubImage1D +}; break; +case 5078: { // glCopyTexSubImage1D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLint *xoffset = (GLint *) bp; bp += 4; @@ -620,8 +620,8 @@ case 5078: { // glCopyTexSubImage1D GLint *y = (GLint *) bp; bp += 4; GLsizei *width = (GLsizei *) bp; bp += 4; weglCopyTexSubImage1D(*target,*level,*xoffset,*x,*y,*width); -}; break; -case 5079: { // glCopyTexSubImage2D +}; break; +case 5079: { // glCopyTexSubImage2D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLint *xoffset = (GLint *) bp; bp += 4; @@ -631,150 +631,150 @@ case 5079: { // glCopyTexSubImage2D GLsizei *width = (GLsizei *) bp; bp += 4; GLsizei *height = (GLsizei *) bp; bp += 4; weglCopyTexSubImage2D(*target,*level,*xoffset,*yoffset,*x,*y,*width,*height); -}; break; -case 5080: { // glCullFace +}; break; +case 5080: { // glCullFace GLenum *mode = (GLenum *) bp; bp += 4; weglCullFace(*mode); -}; break; -case 5081: { // glDeleteLists +}; break; +case 5081: { // glDeleteLists GLuint *list = (GLuint *) bp; bp += 4; GLsizei *range = (GLsizei *) bp; bp += 4; weglDeleteLists(*list,*range); -}; break; -case 5082: { // glDeleteTextures +}; break; +case 5082: { // glDeleteTextures int * texturesLen = (int *) bp; bp += 4; GLuint * textures = (GLuint *) bp; bp += (8-((*texturesLen*4+4)%8))%8; weglDeleteTextures(*texturesLen,textures); -}; break; -case 5083: { // glDepthFunc +}; break; +case 5083: { // glDepthFunc GLenum *func = (GLenum *) bp; bp += 4; weglDepthFunc(*func); -}; break; -case 5084: { // glDepthMask +}; break; +case 5084: { // glDepthMask GLboolean *flag = (GLboolean *) bp; bp += 1; weglDepthMask(*flag); -}; break; -case 5085: { // glDepthRange +}; break; +case 5085: { // glDepthRange GLclampd *zNear = (GLclampd *) bp; bp += 8; GLclampd *zFar = (GLclampd *) bp; bp += 8; weglDepthRange(*zNear,*zFar); -}; break; -case 5086: { // glDisable +}; break; +case 5086: { // glDisable GLenum *cap = (GLenum *) bp; bp += 4; weglDisable(*cap); -}; break; -case 5087: { // glDisableClientState +}; break; +case 5087: { // glDisableClientState GLenum *array = (GLenum *) bp; bp += 4; weglDisableClientState(*array); -}; break; -case 5088: { // glDrawArrays +}; break; +case 5088: { // glDrawArrays GLenum *mode = (GLenum *) bp; bp += 4; GLint *first = (GLint *) bp; bp += 4; GLsizei *count = (GLsizei *) bp; bp += 4; weglDrawArrays(*mode,*first,*count); -}; break; -case 5089: { // glDrawBuffer +}; break; +case 5089: { // glDrawBuffer GLenum *mode = (GLenum *) bp; bp += 4; weglDrawBuffer(*mode); -}; break; -case 5090: { // glDrawElements +}; break; +case 5090: { // glDrawElements GLenum *mode = (GLenum *) bp; bp += 4; GLsizei *count = (GLsizei *) bp; bp += 4; GLenum *type = (GLenum *) bp; bp += 4; GLvoid *indices = (GLvoid *) * (int *) bp; bp += 4; weglDrawElements(*mode,*count,*type,indices); -}; break; -case 5091: { // glDrawElements +}; break; +case 5091: { // glDrawElements GLenum *mode = (GLenum *) bp; bp += 4; GLsizei *count = (GLsizei *) bp; bp += 4; GLenum *type = (GLenum *) bp; bp += 4; GLvoid *indices = (GLvoid *) bins[0]->base; weglDrawElements(*mode,*count,*type,indices); -}; break; -case 5092: { // glDrawPixels +}; break; +case 5092: { // glDrawPixels GLsizei *width = (GLsizei *) bp; bp += 4; GLsizei *height = (GLsizei *) bp; bp += 4; GLenum *format = (GLenum *) bp; bp += 4; GLenum *type = (GLenum *) bp; bp += 4; GLvoid *pixels = (GLvoid *) * (int *) bp; bp += 4; weglDrawPixels(*width,*height,*format,*type,pixels); -}; break; -case 5093: { // glDrawPixels +}; break; +case 5093: { // glDrawPixels GLsizei *width = (GLsizei *) bp; bp += 4; GLsizei *height = (GLsizei *) bp; bp += 4; GLenum *format = (GLenum *) bp; bp += 4; GLenum *type = (GLenum *) bp; bp += 4; GLvoid *pixels = (GLvoid *) bins[0]->base; weglDrawPixels(*width,*height,*format,*type,pixels); -}; break; -case 5094: { // glEdgeFlagv +}; break; +case 5094: { // glEdgeFlagv GLboolean *flag = (GLboolean *) bp; bp += 1; weglEdgeFlagv(flag); -}; break; -case 5095: { // glEdgeFlagPointer +}; break; +case 5095: { // glEdgeFlagPointer GLsizei *stride = (GLsizei *) bp; bp += 4; GLvoid *pointer = (GLvoid *) * (int *) bp; bp += 4; weglEdgeFlagPointer(*stride,pointer); -}; break; -case 5096: { // glEdgeFlagPointer +}; break; +case 5096: { // glEdgeFlagPointer GLsizei *stride = (GLsizei *) bp; bp += 4; GLvoid *pointer = (GLvoid *) bins[0]->base; weglEdgeFlagPointer(*stride,pointer); -}; break; -case 5097: { // glEnable +}; break; +case 5097: { // glEnable GLenum *cap = (GLenum *) bp; bp += 4; weglEnable(*cap); -}; break; -case 5098: { // glEnableClientState +}; break; +case 5098: { // glEnableClientState GLenum *array = (GLenum *) bp; bp += 4; weglEnableClientState(*array); -}; break; -case 5099: { // glEnd +}; break; +case 5099: { // glEnd weglEnd(); -}; break; -case 5100: { // glEndList +}; break; +case 5100: { // glEndList weglEndList(); -}; break; -case 5101: { // glEvalCoord1dv +}; break; +case 5101: { // glEvalCoord1dv GLdouble *u = (GLdouble *) bp; bp += 8; weglEvalCoord1dv(u); -}; break; -case 5102: { // glEvalCoord1fv +}; break; +case 5102: { // glEvalCoord1fv GLfloat *u = (GLfloat *) bp; bp += 4; weglEvalCoord1fv(u); -}; break; -case 5103: { // glEvalCoord2dv +}; break; +case 5103: { // glEvalCoord2dv GLdouble *u = (GLdouble *) bp; bp += 8; weglEvalCoord2dv(u); -}; break; -case 5104: { // glEvalCoord2fv +}; break; +case 5104: { // glEvalCoord2fv GLfloat *u = (GLfloat *) bp; bp += 4; weglEvalCoord2fv(u); -}; break; -case 5105: { // glEvalMesh1 +}; break; +case 5105: { // glEvalMesh1 GLenum *mode = (GLenum *) bp; bp += 4; GLint *i1 = (GLint *) bp; bp += 4; GLint *i2 = (GLint *) bp; bp += 4; weglEvalMesh1(*mode,*i1,*i2); -}; break; -case 5106: { // glEvalMesh2 +}; break; +case 5106: { // glEvalMesh2 GLenum *mode = (GLenum *) bp; bp += 4; GLint *i1 = (GLint *) bp; bp += 4; GLint *i2 = (GLint *) bp; bp += 4; GLint *j1 = (GLint *) bp; bp += 4; GLint *j2 = (GLint *) bp; bp += 4; weglEvalMesh2(*mode,*i1,*i2,*j1,*j2); -}; break; -case 5107: { // glEvalPoint1 +}; break; +case 5107: { // glEvalPoint1 GLint *i = (GLint *) bp; bp += 4; weglEvalPoint1(*i); -}; break; -case 5108: { // glEvalPoint2 +}; break; +case 5108: { // glEvalPoint2 GLint *i = (GLint *) bp; bp += 4; GLint *j = (GLint *) bp; bp += 4; weglEvalPoint2(*i,*j); -}; break; -case 5109: { // glFeedbackBuffer +}; break; +case 5109: { // glFeedbackBuffer GLsizei *size = (GLsizei *) bp; bp += 4; GLenum *type = (GLenum *) bp; bp += 4; GLfloat *buffer = (GLfloat *) bins[0]->base; @@ -784,40 +784,40 @@ case 5109: { // glFeedbackBuffer rt[AP++]=ERL_DRV_ATOM; rt[AP++]=driver_mk_atom((char *) "ok"); rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5110: { // glFinish +}; break; +case 5110: { // glFinish weglFinish(); -}; break; -case 5111: { // glFlush +}; break; +case 5111: { // glFlush weglFlush(); -}; break; -case 5112: { // glFogf +}; break; +case 5112: { // glFogf GLenum *pname = (GLenum *) bp; bp += 4; GLfloat *param = (GLfloat *) bp; bp += 4; weglFogf(*pname,*param); -}; break; -case 5113: { // glFogfv +}; break; +case 5113: { // glFogfv GLenum *pname = (GLenum *) bp; bp += 4; int *paramsLen = (int *) bp; bp += 4; GLfloat *params = (GLfloat *) bp; bp += *paramsLen*4+((*paramsLen)+0)%2*4; weglFogfv(*pname,params); -}; break; -case 5114: { // glFogi +}; break; +case 5114: { // glFogi GLenum *pname = (GLenum *) bp; bp += 4; GLint *param = (GLint *) bp; bp += 4; weglFogi(*pname,*param); -}; break; -case 5115: { // glFogiv +}; break; +case 5115: { // glFogiv GLenum *pname = (GLenum *) bp; bp += 4; int *paramsLen = (int *) bp; bp += 4; GLint *params = (GLint *) bp; bp += *paramsLen*4+((*paramsLen)+0)%2*4; weglFogiv(*pname,params); -}; break; -case 5116: { // glFrontFace +}; break; +case 5116: { // glFrontFace GLenum *mode = (GLenum *) bp; bp += 4; weglFrontFace(*mode); -}; break; -case 5117: { // glFrustum +}; break; +case 5117: { // glFrustum GLdouble *left = (GLdouble *) bp; bp += 8; GLdouble *right = (GLdouble *) bp; bp += 8; GLdouble *bottom = (GLdouble *) bp; bp += 8; @@ -825,8 +825,8 @@ case 5117: { // glFrustum GLdouble *zNear = (GLdouble *) bp; bp += 8; GLdouble *zFar = (GLdouble *) bp; bp += 8; weglFrustum(*left,*right,*bottom,*top,*zNear,*zFar); -}; break; -case 5118: { // glGenLists +}; break; +case 5118: { // glGenLists GLsizei *range = (GLsizei *) bp; bp += 4; GLuint result = weglGenLists(*range); int AP = 0; ErlDrvTermData rt[6]; @@ -835,8 +835,8 @@ case 5118: { // glGenLists rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5119: { // glGenTextures +}; break; +case 5119: { // glGenTextures GLsizei *n = (GLsizei *) bp; bp += 4; GLuint *textures; textures = (GLuint *) driver_alloc(sizeof(GLuint) * *n); @@ -850,10 +850,10 @@ case 5119: { // glGenTextures rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 7 + (*n)*2 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,7 + (*n)*2); driver_send_term(WXE_DRV_PORT,caller,rt,AP); - driver_free(rt); + driver_free(rt); driver_free(textures); -}; break; -case 5120: { // glGetBooleanv +}; break; +case 5120: { // glGetBooleanv GLenum *pname = (GLenum *) bp; bp += 4; GLboolean params[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; weglGetBooleanv(*pname,params); @@ -880,8 +880,8 @@ case 5120: { // glGetBooleanv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 39 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,39); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5121: { // glGetClipPlane +}; break; +case 5121: { // glGetClipPlane GLenum *plane = (GLenum *) bp; bp += 4; GLdouble equation[4] = {0.0,0.0,0.0,0.0}; weglGetClipPlane(*plane,equation); @@ -896,8 +896,8 @@ case 5121: { // glGetClipPlane rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5122: { // glGetDoublev +}; break; +case 5122: { // glGetDoublev GLenum *pname = (GLenum *) bp; bp += 4; GLdouble params[16] = {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}; weglGetDoublev(*pname,params); @@ -924,8 +924,8 @@ case 5122: { // glGetDoublev rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 39 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,39); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5123: { // glGetError +}; break; +case 5123: { // glGetError GLenum result = weglGetError(); int AP = 0; ErlDrvTermData rt[6]; rt[AP++]=ERL_DRV_ATOM; rt[AP++]=driver_mk_atom((char *) "_wxe_result_"); @@ -933,8 +933,8 @@ case 5123: { // glGetError rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5124: { // glGetFloatv +}; break; +case 5124: { // glGetFloatv GLenum *pname = (GLenum *) bp; bp += 4; GLfloat params[16] = {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}; weglGetFloatv(*pname,params); @@ -962,8 +962,8 @@ case 5124: { // glGetFloatv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 39 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,39); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5125: { // glGetIntegerv +}; break; +case 5125: { // glGetIntegerv GLenum *pname = (GLenum *) bp; bp += 4; GLint params[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; weglGetIntegerv(*pname,params); @@ -990,8 +990,8 @@ case 5125: { // glGetIntegerv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 39 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,39); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5126: { // glGetLightfv +}; break; +case 5126: { // glGetLightfv GLenum *light = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLfloat params[4] = {0.0,0.0,0.0,0.0}; @@ -1008,8 +1008,8 @@ case 5126: { // glGetLightfv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5127: { // glGetLightiv +}; break; +case 5127: { // glGetLightiv GLenum *light = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLint params[4] = {0,0,0,0}; @@ -1025,8 +1025,8 @@ case 5127: { // glGetLightiv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5128: { // glGetMapdv +}; break; +case 5128: { // glGetMapdv GLenum *target = (GLenum *) bp; bp += 4; GLenum *query = (GLenum *) bp; bp += 4; GLdouble *v = (GLdouble *) bins[0]->base; @@ -1036,8 +1036,8 @@ case 5128: { // glGetMapdv rt[AP++]=ERL_DRV_ATOM; rt[AP++]=driver_mk_atom((char *) "ok"); rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5129: { // glGetMapfv +}; break; +case 5129: { // glGetMapfv GLenum *target = (GLenum *) bp; bp += 4; GLenum *query = (GLenum *) bp; bp += 4; GLfloat *v = (GLfloat *) bins[0]->base; @@ -1047,8 +1047,8 @@ case 5129: { // glGetMapfv rt[AP++]=ERL_DRV_ATOM; rt[AP++]=driver_mk_atom((char *) "ok"); rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5130: { // glGetMapiv +}; break; +case 5130: { // glGetMapiv GLenum *target = (GLenum *) bp; bp += 4; GLenum *query = (GLenum *) bp; bp += 4; GLint *v = (GLint *) bins[0]->base; @@ -1058,8 +1058,8 @@ case 5130: { // glGetMapiv rt[AP++]=ERL_DRV_ATOM; rt[AP++]=driver_mk_atom((char *) "ok"); rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5131: { // glGetMaterialfv +}; break; +case 5131: { // glGetMaterialfv GLenum *face = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLfloat params[4] = {0.0,0.0,0.0,0.0}; @@ -1076,8 +1076,8 @@ case 5131: { // glGetMaterialfv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5132: { // glGetMaterialiv +}; break; +case 5132: { // glGetMaterialiv GLenum *face = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLint params[4] = {0,0,0,0}; @@ -1093,8 +1093,8 @@ case 5132: { // glGetMaterialiv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5133: { // glGetPixelMapfv +}; break; +case 5133: { // glGetPixelMapfv GLenum *map = (GLenum *) bp; bp += 4; GLfloat *values = (GLfloat *) bins[0]->base; weglGetPixelMapfv(*map,values); @@ -1103,8 +1103,8 @@ case 5133: { // glGetPixelMapfv rt[AP++]=ERL_DRV_ATOM; rt[AP++]=driver_mk_atom((char *) "ok"); rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5134: { // glGetPixelMapuiv +}; break; +case 5134: { // glGetPixelMapuiv GLenum *map = (GLenum *) bp; bp += 4; GLuint *values = (GLuint *) bins[0]->base; weglGetPixelMapuiv(*map,values); @@ -1113,8 +1113,8 @@ case 5134: { // glGetPixelMapuiv rt[AP++]=ERL_DRV_ATOM; rt[AP++]=driver_mk_atom((char *) "ok"); rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5135: { // glGetPixelMapusv +}; break; +case 5135: { // glGetPixelMapusv GLenum *map = (GLenum *) bp; bp += 4; GLushort *values = (GLushort *) bins[0]->base; weglGetPixelMapusv(*map,values); @@ -1123,8 +1123,8 @@ case 5135: { // glGetPixelMapusv rt[AP++]=ERL_DRV_ATOM; rt[AP++]=driver_mk_atom((char *) "ok"); rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5136: { // glGetPolygonStipple +}; break; +case 5136: { // glGetPolygonStipple GLubyte mask[128]; weglGetPolygonStipple(mask); int AP = 0; ErlDrvTermData rt[8]; @@ -1136,8 +1136,8 @@ case 5136: { // glGetPolygonStipple if (AP != 8 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,8); driver_send_term(WXE_DRV_PORT,caller,rt,AP); driver_free_binary(BinCopy); -}; break; -case 5137: { // glGetString +}; break; +case 5137: { // glGetString GLenum *name = (GLenum *) bp; bp += 4; const GLubyte * result = weglGetString(*name); int AP = 0; ErlDrvTermData rt[7]; @@ -1146,8 +1146,8 @@ case 5137: { // glGetString rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 7 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,7); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5138: { // glGetTexEnvfv +}; break; +case 5138: { // glGetTexEnvfv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLfloat params[4] = {0.0,0.0,0.0,0.0}; @@ -1164,8 +1164,8 @@ case 5138: { // glGetTexEnvfv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5139: { // glGetTexEnviv +}; break; +case 5139: { // glGetTexEnviv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLint params[4] = {0,0,0,0}; @@ -1181,8 +1181,8 @@ case 5139: { // glGetTexEnviv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5140: { // glGetTexGendv +}; break; +case 5140: { // glGetTexGendv GLenum *coord = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLdouble params[4] = {0.0,0.0,0.0,0.0}; @@ -1198,8 +1198,8 @@ case 5140: { // glGetTexGendv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5141: { // glGetTexGenfv +}; break; +case 5141: { // glGetTexGenfv GLenum *coord = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLfloat params[4] = {0.0,0.0,0.0,0.0}; @@ -1216,8 +1216,8 @@ case 5141: { // glGetTexGenfv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5142: { // glGetTexGeniv +}; break; +case 5142: { // glGetTexGeniv GLenum *coord = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLint params[4] = {0,0,0,0}; @@ -1233,8 +1233,8 @@ case 5142: { // glGetTexGeniv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5143: { // glGetTexImage +}; break; +case 5143: { // glGetTexImage GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLenum *format = (GLenum *) bp; bp += 4; @@ -1246,8 +1246,8 @@ case 5143: { // glGetTexImage rt[AP++]=ERL_DRV_ATOM; rt[AP++]=driver_mk_atom((char *) "ok"); rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5144: { // glGetTexLevelParameterfv +}; break; +case 5144: { // glGetTexLevelParameterfv GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; @@ -1262,8 +1262,8 @@ case 5144: { // glGetTexLevelParameterfv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 8 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,8); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5145: { // glGetTexLevelParameteriv +}; break; +case 5145: { // glGetTexLevelParameteriv GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; @@ -1277,8 +1277,8 @@ case 5145: { // glGetTexLevelParameteriv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 8 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,8); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5146: { // glGetTexParameterfv +}; break; +case 5146: { // glGetTexParameterfv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLfloat params[4] = {0.0,0.0,0.0,0.0}; @@ -1295,8 +1295,8 @@ case 5146: { // glGetTexParameterfv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5147: { // glGetTexParameteriv +}; break; +case 5147: { // glGetTexParameteriv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLint params[4] = {0,0,0,0}; @@ -1312,64 +1312,64 @@ case 5147: { // glGetTexParameteriv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5148: { // glHint +}; break; +case 5148: { // glHint GLenum *target = (GLenum *) bp; bp += 4; GLenum *mode = (GLenum *) bp; bp += 4; weglHint(*target,*mode); -}; break; -case 5149: { // glIndexMask +}; break; +case 5149: { // glIndexMask GLuint *mask = (GLuint *) bp; bp += 4; weglIndexMask(*mask); -}; break; -case 5150: { // glIndexPointer +}; break; +case 5150: { // glIndexPointer GLenum *type = (GLenum *) bp; bp += 4; GLsizei *stride = (GLsizei *) bp; bp += 4; GLvoid *pointer = (GLvoid *) * (int *) bp; bp += 4; weglIndexPointer(*type,*stride,pointer); -}; break; -case 5151: { // glIndexPointer +}; break; +case 5151: { // glIndexPointer GLenum *type = (GLenum *) bp; bp += 4; GLsizei *stride = (GLsizei *) bp; bp += 4; GLvoid *pointer = (GLvoid *) bins[0]->base; weglIndexPointer(*type,*stride,pointer); -}; break; -case 5152: { // glIndexdv +}; break; +case 5152: { // glIndexdv GLdouble *c = (GLdouble *) bp; bp += 8; weglIndexdv(c); -}; break; -case 5153: { // glIndexfv +}; break; +case 5153: { // glIndexfv GLfloat *c = (GLfloat *) bp; bp += 4; weglIndexfv(c); -}; break; -case 5154: { // glIndexiv +}; break; +case 5154: { // glIndexiv GLint *c = (GLint *) bp; bp += 4; weglIndexiv(c); -}; break; -case 5155: { // glIndexsv +}; break; +case 5155: { // glIndexsv GLshort *c = (GLshort *) bp; bp += 2; weglIndexsv(c); -}; break; -case 5156: { // glIndexubv +}; break; +case 5156: { // glIndexubv GLubyte *c = (GLubyte *) bp; bp += 1; weglIndexubv(c); -}; break; -case 5157: { // glInitNames +}; break; +case 5157: { // glInitNames weglInitNames(); -}; break; -case 5158: { // glInterleavedArrays +}; break; +case 5158: { // glInterleavedArrays GLenum *format = (GLenum *) bp; bp += 4; GLsizei *stride = (GLsizei *) bp; bp += 4; GLvoid *pointer = (GLvoid *) * (int *) bp; bp += 4; weglInterleavedArrays(*format,*stride,pointer); -}; break; -case 5159: { // glInterleavedArrays +}; break; +case 5159: { // glInterleavedArrays GLenum *format = (GLenum *) bp; bp += 4; GLsizei *stride = (GLsizei *) bp; bp += 4; GLvoid *pointer = (GLvoid *) bins[0]->base; weglInterleavedArrays(*format,*stride,pointer); -}; break; -case 5160: { // glIsEnabled +}; break; +case 5160: { // glIsEnabled GLenum *cap = (GLenum *) bp; bp += 4; GLboolean result = weglIsEnabled(*cap); int AP = 0; ErlDrvTermData rt[6]; @@ -1378,8 +1378,8 @@ case 5160: { // glIsEnabled rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5161: { // glIsList +}; break; +case 5161: { // glIsList GLuint *list = (GLuint *) bp; bp += 4; GLboolean result = weglIsList(*list); int AP = 0; ErlDrvTermData rt[6]; @@ -1388,8 +1388,8 @@ case 5161: { // glIsList rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5162: { // glIsTexture +}; break; +case 5162: { // glIsTexture GLuint *texture = (GLuint *) bp; bp += 4; GLboolean result = weglIsTexture(*texture); int AP = 0; ErlDrvTermData rt[6]; @@ -1398,88 +1398,88 @@ case 5162: { // glIsTexture rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5163: { // glLightModelf +}; break; +case 5163: { // glLightModelf GLenum *pname = (GLenum *) bp; bp += 4; GLfloat *param = (GLfloat *) bp; bp += 4; weglLightModelf(*pname,*param); -}; break; -case 5164: { // glLightModelfv +}; break; +case 5164: { // glLightModelfv GLenum *pname = (GLenum *) bp; bp += 4; int *paramsLen = (int *) bp; bp += 4; GLfloat *params = (GLfloat *) bp; bp += *paramsLen*4+((*paramsLen)+0)%2*4; weglLightModelfv(*pname,params); -}; break; -case 5165: { // glLightModeli +}; break; +case 5165: { // glLightModeli GLenum *pname = (GLenum *) bp; bp += 4; GLint *param = (GLint *) bp; bp += 4; weglLightModeli(*pname,*param); -}; break; -case 5166: { // glLightModeliv +}; break; +case 5166: { // glLightModeliv GLenum *pname = (GLenum *) bp; bp += 4; int *paramsLen = (int *) bp; bp += 4; GLint *params = (GLint *) bp; bp += *paramsLen*4+((*paramsLen)+0)%2*4; weglLightModeliv(*pname,params); -}; break; -case 5167: { // glLightf +}; break; +case 5167: { // glLightf GLenum *light = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLfloat *param = (GLfloat *) bp; bp += 4; weglLightf(*light,*pname,*param); -}; break; -case 5168: { // glLightfv +}; break; +case 5168: { // glLightfv GLenum *light = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; int *paramsLen = (int *) bp; bp += 4; GLfloat *params = (GLfloat *) bp; bp += *paramsLen*4+((*paramsLen)+1)%2*4; weglLightfv(*light,*pname,params); -}; break; -case 5169: { // glLighti +}; break; +case 5169: { // glLighti GLenum *light = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLint *param = (GLint *) bp; bp += 4; weglLighti(*light,*pname,*param); -}; break; -case 5170: { // glLightiv +}; break; +case 5170: { // glLightiv GLenum *light = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; int *paramsLen = (int *) bp; bp += 4; GLint *params = (GLint *) bp; bp += *paramsLen*4+((*paramsLen)+1)%2*4; weglLightiv(*light,*pname,params); -}; break; -case 5171: { // glLineStipple +}; break; +case 5171: { // glLineStipple GLint *factor = (GLint *) bp; bp += 4; GLushort *pattern = (GLushort *) bp; bp += 2; weglLineStipple(*factor,*pattern); -}; break; -case 5172: { // glLineWidth +}; break; +case 5172: { // glLineWidth GLfloat *width = (GLfloat *) bp; bp += 4; weglLineWidth(*width); -}; break; -case 5173: { // glListBase +}; break; +case 5173: { // glListBase GLuint *base = (GLuint *) bp; bp += 4; weglListBase(*base); -}; break; -case 5174: { // glLoadIdentity +}; break; +case 5174: { // glLoadIdentity weglLoadIdentity(); -}; break; -case 5175: { // glLoadMatrixd +}; break; +case 5175: { // glLoadMatrixd GLdouble * m = (GLdouble *) bp; bp += 128; weglLoadMatrixd(m); -}; break; -case 5176: { // glLoadMatrixf +}; break; +case 5176: { // glLoadMatrixf GLfloat * m = (GLfloat *) bp; bp += 64; weglLoadMatrixf(m); -}; break; -case 5177: { // glLoadName +}; break; +case 5177: { // glLoadName GLuint *name = (GLuint *) bp; bp += 4; weglLoadName(*name); -}; break; -case 5178: { // glLogicOp +}; break; +case 5178: { // glLogicOp GLenum *opcode = (GLenum *) bp; bp += 4; weglLogicOp(*opcode); -}; break; -case 5179: { // glMap1d +}; break; +case 5179: { // glMap1d GLenum *target = (GLenum *) bp; bp += 4; bp += 4; GLdouble *u1 = (GLdouble *) bp; bp += 8; @@ -1488,8 +1488,8 @@ case 5179: { // glMap1d GLint *order = (GLint *) bp; bp += 4; GLdouble *points = (GLdouble *) bins[0]->base; weglMap1d(*target,*u1,*u2,*stride,*order,points); -}; break; -case 5180: { // glMap1f +}; break; +case 5180: { // glMap1f GLenum *target = (GLenum *) bp; bp += 4; GLfloat *u1 = (GLfloat *) bp; bp += 4; GLfloat *u2 = (GLfloat *) bp; bp += 4; @@ -1497,8 +1497,8 @@ case 5180: { // glMap1f GLint *order = (GLint *) bp; bp += 4; GLfloat *points = (GLfloat *) bins[0]->base; weglMap1f(*target,*u1,*u2,*stride,*order,points); -}; break; -case 5181: { // glMap2d +}; break; +case 5181: { // glMap2d GLenum *target = (GLenum *) bp; bp += 4; bp += 4; GLdouble *u1 = (GLdouble *) bp; bp += 8; @@ -1511,8 +1511,8 @@ case 5181: { // glMap2d GLint *vorder = (GLint *) bp; bp += 4; GLdouble *points = (GLdouble *) bins[0]->base; weglMap2d(*target,*u1,*u2,*ustride,*uorder,*v1,*v2,*vstride,*vorder,points); -}; break; -case 5182: { // glMap2f +}; break; +case 5182: { // glMap2f GLenum *target = (GLenum *) bp; bp += 4; GLfloat *u1 = (GLfloat *) bp; bp += 4; GLfloat *u2 = (GLfloat *) bp; bp += 4; @@ -1524,21 +1524,21 @@ case 5182: { // glMap2f GLint *vorder = (GLint *) bp; bp += 4; GLfloat *points = (GLfloat *) bins[0]->base; weglMap2f(*target,*u1,*u2,*ustride,*uorder,*v1,*v2,*vstride,*vorder,points); -}; break; -case 5183: { // glMapGrid1d +}; break; +case 5183: { // glMapGrid1d GLint *un = (GLint *) bp; bp += 4; bp += 4; GLdouble *u1 = (GLdouble *) bp; bp += 8; GLdouble *u2 = (GLdouble *) bp; bp += 8; weglMapGrid1d(*un,*u1,*u2); -}; break; -case 5184: { // glMapGrid1f +}; break; +case 5184: { // glMapGrid1f GLint *un = (GLint *) bp; bp += 4; GLfloat *u1 = (GLfloat *) bp; bp += 4; GLfloat *u2 = (GLfloat *) bp; bp += 4; weglMapGrid1f(*un,*u1,*u2); -}; break; -case 5185: { // glMapGrid2d +}; break; +case 5185: { // glMapGrid2d GLint *un = (GLint *) bp; bp += 4; bp += 4; GLdouble *u1 = (GLdouble *) bp; bp += 8; @@ -1548,8 +1548,8 @@ case 5185: { // glMapGrid2d GLdouble *v1 = (GLdouble *) bp; bp += 8; GLdouble *v2 = (GLdouble *) bp; bp += 8; weglMapGrid2d(*un,*u1,*u2,*vn,*v1,*v2); -}; break; -case 5186: { // glMapGrid2f +}; break; +case 5186: { // glMapGrid2f GLint *un = (GLint *) bp; bp += 4; GLfloat *u1 = (GLfloat *) bp; bp += 4; GLfloat *u2 = (GLfloat *) bp; bp += 4; @@ -1557,83 +1557,83 @@ case 5186: { // glMapGrid2f GLfloat *v1 = (GLfloat *) bp; bp += 4; GLfloat *v2 = (GLfloat *) bp; bp += 4; weglMapGrid2f(*un,*u1,*u2,*vn,*v1,*v2); -}; break; -case 5187: { // glMaterialf +}; break; +case 5187: { // glMaterialf GLenum *face = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLfloat *param = (GLfloat *) bp; bp += 4; weglMaterialf(*face,*pname,*param); -}; break; -case 5188: { // glMaterialfv +}; break; +case 5188: { // glMaterialfv GLenum *face = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; int *paramsLen = (int *) bp; bp += 4; GLfloat *params = (GLfloat *) bp; bp += *paramsLen*4+((*paramsLen)+1)%2*4; weglMaterialfv(*face,*pname,params); -}; break; -case 5189: { // glMateriali +}; break; +case 5189: { // glMateriali GLenum *face = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLint *param = (GLint *) bp; bp += 4; weglMateriali(*face,*pname,*param); -}; break; -case 5190: { // glMaterialiv +}; break; +case 5190: { // glMaterialiv GLenum *face = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; int *paramsLen = (int *) bp; bp += 4; GLint *params = (GLint *) bp; bp += *paramsLen*4+((*paramsLen)+1)%2*4; weglMaterialiv(*face,*pname,params); -}; break; -case 5191: { // glMatrixMode +}; break; +case 5191: { // glMatrixMode GLenum *mode = (GLenum *) bp; bp += 4; weglMatrixMode(*mode); -}; break; -case 5192: { // glMultMatrixd +}; break; +case 5192: { // glMultMatrixd GLdouble * m = (GLdouble *) bp; bp += 128; weglMultMatrixd(m); -}; break; -case 5193: { // glMultMatrixf +}; break; +case 5193: { // glMultMatrixf GLfloat * m = (GLfloat *) bp; bp += 64; weglMultMatrixf(m); -}; break; -case 5194: { // glNewList +}; break; +case 5194: { // glNewList GLuint *list = (GLuint *) bp; bp += 4; GLenum *mode = (GLenum *) bp; bp += 4; weglNewList(*list,*mode); -}; break; -case 5195: { // glNormal3bv +}; break; +case 5195: { // glNormal3bv GLbyte *v = (GLbyte *) bp; bp += 1; weglNormal3bv(v); -}; break; -case 5196: { // glNormal3dv +}; break; +case 5196: { // glNormal3dv GLdouble *v = (GLdouble *) bp; bp += 8; weglNormal3dv(v); -}; break; -case 5197: { // glNormal3fv +}; break; +case 5197: { // glNormal3fv GLfloat *v = (GLfloat *) bp; bp += 4; weglNormal3fv(v); -}; break; -case 5198: { // glNormal3iv +}; break; +case 5198: { // glNormal3iv GLint *v = (GLint *) bp; bp += 4; weglNormal3iv(v); -}; break; -case 5199: { // glNormal3sv +}; break; +case 5199: { // glNormal3sv GLshort *v = (GLshort *) bp; bp += 2; weglNormal3sv(v); -}; break; -case 5200: { // glNormalPointer +}; break; +case 5200: { // glNormalPointer GLenum *type = (GLenum *) bp; bp += 4; GLsizei *stride = (GLsizei *) bp; bp += 4; GLvoid *pointer = (GLvoid *) * (int *) bp; bp += 4; weglNormalPointer(*type,*stride,pointer); -}; break; -case 5201: { // glNormalPointer +}; break; +case 5201: { // glNormalPointer GLenum *type = (GLenum *) bp; bp += 4; GLsizei *stride = (GLsizei *) bp; bp += 4; GLvoid *pointer = (GLvoid *) bins[0]->base; weglNormalPointer(*type,*stride,pointer); -}; break; -case 5202: { // glOrtho +}; break; +case 5202: { // glOrtho GLdouble *left = (GLdouble *) bp; bp += 8; GLdouble *right = (GLdouble *) bp; bp += 8; GLdouble *bottom = (GLdouble *) bp; bp += 8; @@ -1641,159 +1641,159 @@ case 5202: { // glOrtho GLdouble *zNear = (GLdouble *) bp; bp += 8; GLdouble *zFar = (GLdouble *) bp; bp += 8; weglOrtho(*left,*right,*bottom,*top,*zNear,*zFar); -}; break; -case 5203: { // glPassThrough +}; break; +case 5203: { // glPassThrough GLfloat *token = (GLfloat *) bp; bp += 4; weglPassThrough(*token); -}; break; -case 5204: { // glPixelMapfv +}; break; +case 5204: { // glPixelMapfv GLenum *map = (GLenum *) bp; bp += 4; GLsizei *mapsize = (GLsizei *) bp; bp += 4; GLfloat *values = (GLfloat *) bins[0]->base; weglPixelMapfv(*map,*mapsize,values); -}; break; -case 5205: { // glPixelMapuiv +}; break; +case 5205: { // glPixelMapuiv GLenum *map = (GLenum *) bp; bp += 4; GLsizei *mapsize = (GLsizei *) bp; bp += 4; GLuint *values = (GLuint *) bins[0]->base; weglPixelMapuiv(*map,*mapsize,values); -}; break; -case 5206: { // glPixelMapusv +}; break; +case 5206: { // glPixelMapusv GLenum *map = (GLenum *) bp; bp += 4; GLsizei *mapsize = (GLsizei *) bp; bp += 4; GLushort *values = (GLushort *) bins[0]->base; weglPixelMapusv(*map,*mapsize,values); -}; break; -case 5207: { // glPixelStoref +}; break; +case 5207: { // glPixelStoref GLenum *pname = (GLenum *) bp; bp += 4; GLfloat *param = (GLfloat *) bp; bp += 4; weglPixelStoref(*pname,*param); -}; break; -case 5208: { // glPixelStorei +}; break; +case 5208: { // glPixelStorei GLenum *pname = (GLenum *) bp; bp += 4; GLint *param = (GLint *) bp; bp += 4; weglPixelStorei(*pname,*param); -}; break; -case 5209: { // glPixelTransferf +}; break; +case 5209: { // glPixelTransferf GLenum *pname = (GLenum *) bp; bp += 4; GLfloat *param = (GLfloat *) bp; bp += 4; weglPixelTransferf(*pname,*param); -}; break; -case 5210: { // glPixelTransferi +}; break; +case 5210: { // glPixelTransferi GLenum *pname = (GLenum *) bp; bp += 4; GLint *param = (GLint *) bp; bp += 4; weglPixelTransferi(*pname,*param); -}; break; -case 5211: { // glPixelZoom +}; break; +case 5211: { // glPixelZoom GLfloat *xfactor = (GLfloat *) bp; bp += 4; GLfloat *yfactor = (GLfloat *) bp; bp += 4; weglPixelZoom(*xfactor,*yfactor); -}; break; -case 5212: { // glPointSize +}; break; +case 5212: { // glPointSize GLfloat *size = (GLfloat *) bp; bp += 4; weglPointSize(*size); -}; break; -case 5213: { // glPolygonMode +}; break; +case 5213: { // glPolygonMode GLenum *face = (GLenum *) bp; bp += 4; GLenum *mode = (GLenum *) bp; bp += 4; weglPolygonMode(*face,*mode); -}; break; -case 5214: { // glPolygonOffset +}; break; +case 5214: { // glPolygonOffset GLfloat *factor = (GLfloat *) bp; bp += 4; GLfloat *units = (GLfloat *) bp; bp += 4; weglPolygonOffset(*factor,*units); -}; break; -case 5215: { // glPolygonStipple +}; break; +case 5215: { // glPolygonStipple GLubyte *mask = (GLubyte *) bins[0]->base; weglPolygonStipple(mask); -}; break; -case 5216: { // glPopAttrib +}; break; +case 5216: { // glPopAttrib weglPopAttrib(); -}; break; -case 5217: { // glPopClientAttrib +}; break; +case 5217: { // glPopClientAttrib weglPopClientAttrib(); -}; break; -case 5218: { // glPopMatrix +}; break; +case 5218: { // glPopMatrix weglPopMatrix(); -}; break; -case 5219: { // glPopName +}; break; +case 5219: { // glPopName weglPopName(); -}; break; -case 5220: { // glPrioritizeTextures +}; break; +case 5220: { // glPrioritizeTextures int * texturesLen = (int *) bp; bp += 4; GLuint * textures = (GLuint *) bp; bp += (8-((*texturesLen*4+4)%8))%8; int * prioritiesLen = (int *) bp; bp += 4; GLclampf * priorities = (GLclampf *) bp; bp += (8-((*prioritiesLen*4+4)%8))%8; weglPrioritizeTextures(*texturesLen,textures,priorities); -}; break; -case 5221: { // glPushAttrib +}; break; +case 5221: { // glPushAttrib GLbitfield *mask = (GLbitfield *) bp; bp += 4; weglPushAttrib(*mask); -}; break; -case 5222: { // glPushClientAttrib +}; break; +case 5222: { // glPushClientAttrib GLbitfield *mask = (GLbitfield *) bp; bp += 4; weglPushClientAttrib(*mask); -}; break; -case 5223: { // glPushMatrix +}; break; +case 5223: { // glPushMatrix weglPushMatrix(); -}; break; -case 5224: { // glPushName +}; break; +case 5224: { // glPushName GLuint *name = (GLuint *) bp; bp += 4; weglPushName(*name); -}; break; -case 5225: { // glRasterPos2dv +}; break; +case 5225: { // glRasterPos2dv GLdouble *v = (GLdouble *) bp; bp += 8; weglRasterPos2dv(v); -}; break; -case 5226: { // glRasterPos2fv +}; break; +case 5226: { // glRasterPos2fv GLfloat *v = (GLfloat *) bp; bp += 4; weglRasterPos2fv(v); -}; break; -case 5227: { // glRasterPos2iv +}; break; +case 5227: { // glRasterPos2iv GLint *v = (GLint *) bp; bp += 4; weglRasterPos2iv(v); -}; break; -case 5228: { // glRasterPos2sv +}; break; +case 5228: { // glRasterPos2sv GLshort *v = (GLshort *) bp; bp += 2; weglRasterPos2sv(v); -}; break; -case 5229: { // glRasterPos3dv +}; break; +case 5229: { // glRasterPos3dv GLdouble *v = (GLdouble *) bp; bp += 8; weglRasterPos3dv(v); -}; break; -case 5230: { // glRasterPos3fv +}; break; +case 5230: { // glRasterPos3fv GLfloat *v = (GLfloat *) bp; bp += 4; weglRasterPos3fv(v); -}; break; -case 5231: { // glRasterPos3iv +}; break; +case 5231: { // glRasterPos3iv GLint *v = (GLint *) bp; bp += 4; weglRasterPos3iv(v); -}; break; -case 5232: { // glRasterPos3sv +}; break; +case 5232: { // glRasterPos3sv GLshort *v = (GLshort *) bp; bp += 2; weglRasterPos3sv(v); -}; break; -case 5233: { // glRasterPos4dv +}; break; +case 5233: { // glRasterPos4dv GLdouble *v = (GLdouble *) bp; bp += 8; weglRasterPos4dv(v); -}; break; -case 5234: { // glRasterPos4fv +}; break; +case 5234: { // glRasterPos4fv GLfloat *v = (GLfloat *) bp; bp += 4; weglRasterPos4fv(v); -}; break; -case 5235: { // glRasterPos4iv +}; break; +case 5235: { // glRasterPos4iv GLint *v = (GLint *) bp; bp += 4; weglRasterPos4iv(v); -}; break; -case 5236: { // glRasterPos4sv +}; break; +case 5236: { // glRasterPos4sv GLshort *v = (GLshort *) bp; bp += 2; weglRasterPos4sv(v); -}; break; -case 5237: { // glReadBuffer +}; break; +case 5237: { // glReadBuffer GLenum *mode = (GLenum *) bp; bp += 4; weglReadBuffer(*mode); -}; break; -case 5238: { // glReadPixels +}; break; +case 5238: { // glReadPixels GLint *x = (GLint *) bp; bp += 4; GLint *y = (GLint *) bp; bp += 4; GLsizei *width = (GLsizei *) bp; bp += 4; @@ -1807,56 +1807,56 @@ case 5238: { // glReadPixels rt[AP++]=ERL_DRV_ATOM; rt[AP++]=driver_mk_atom((char *) "ok"); rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5239: { // glRectd +}; break; +case 5239: { // glRectd GLdouble *x1 = (GLdouble *) bp; bp += 8; GLdouble *y1 = (GLdouble *) bp; bp += 8; GLdouble *x2 = (GLdouble *) bp; bp += 8; GLdouble *y2 = (GLdouble *) bp; bp += 8; weglRectd(*x1,*y1,*x2,*y2); -}; break; -case 5240: { // glRectdv +}; break; +case 5240: { // glRectdv GLdouble * v1 = (GLdouble *) bp; bp += 16; GLdouble * v2 = (GLdouble *) bp; bp += 16; weglRectdv(v1,v2); -}; break; -case 5241: { // glRectf +}; break; +case 5241: { // glRectf GLfloat *x1 = (GLfloat *) bp; bp += 4; GLfloat *y1 = (GLfloat *) bp; bp += 4; GLfloat *x2 = (GLfloat *) bp; bp += 4; GLfloat *y2 = (GLfloat *) bp; bp += 4; weglRectf(*x1,*y1,*x2,*y2); -}; break; -case 5242: { // glRectfv +}; break; +case 5242: { // glRectfv GLfloat * v1 = (GLfloat *) bp; bp += 8; GLfloat * v2 = (GLfloat *) bp; bp += 8; weglRectfv(v1,v2); -}; break; -case 5243: { // glRecti +}; break; +case 5243: { // glRecti GLint *x1 = (GLint *) bp; bp += 4; GLint *y1 = (GLint *) bp; bp += 4; GLint *x2 = (GLint *) bp; bp += 4; GLint *y2 = (GLint *) bp; bp += 4; weglRecti(*x1,*y1,*x2,*y2); -}; break; -case 5244: { // glRectiv +}; break; +case 5244: { // glRectiv GLint * v1 = (GLint *) bp; bp += 8; GLint * v2 = (GLint *) bp; bp += 8; weglRectiv(v1,v2); -}; break; -case 5245: { // glRects +}; break; +case 5245: { // glRects GLshort *x1 = (GLshort *) bp; bp += 2; GLshort *y1 = (GLshort *) bp; bp += 2; GLshort *x2 = (GLshort *) bp; bp += 2; GLshort *y2 = (GLshort *) bp; bp += 2; weglRects(*x1,*y1,*x2,*y2); -}; break; -case 5246: { // glRectsv +}; break; +case 5246: { // glRectsv GLshort * v1 = (GLshort *) bp; bp += 4; GLshort * v2 = (GLshort *) bp; bp += 4; weglRectsv(v1,v2); -}; break; -case 5247: { // glRenderMode +}; break; +case 5247: { // glRenderMode GLenum *mode = (GLenum *) bp; bp += 4; GLint result = weglRenderMode(*mode); int AP = 0; ErlDrvTermData rt[6]; @@ -1865,41 +1865,41 @@ case 5247: { // glRenderMode rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5248: { // glRotated +}; break; +case 5248: { // glRotated GLdouble *angle = (GLdouble *) bp; bp += 8; GLdouble *x = (GLdouble *) bp; bp += 8; GLdouble *y = (GLdouble *) bp; bp += 8; GLdouble *z = (GLdouble *) bp; bp += 8; weglRotated(*angle,*x,*y,*z); -}; break; -case 5249: { // glRotatef +}; break; +case 5249: { // glRotatef GLfloat *angle = (GLfloat *) bp; bp += 4; GLfloat *x = (GLfloat *) bp; bp += 4; GLfloat *y = (GLfloat *) bp; bp += 4; GLfloat *z = (GLfloat *) bp; bp += 4; weglRotatef(*angle,*x,*y,*z); -}; break; -case 5250: { // glScaled +}; break; +case 5250: { // glScaled GLdouble *x = (GLdouble *) bp; bp += 8; GLdouble *y = (GLdouble *) bp; bp += 8; GLdouble *z = (GLdouble *) bp; bp += 8; weglScaled(*x,*y,*z); -}; break; -case 5251: { // glScalef +}; break; +case 5251: { // glScalef GLfloat *x = (GLfloat *) bp; bp += 4; GLfloat *y = (GLfloat *) bp; bp += 4; GLfloat *z = (GLfloat *) bp; bp += 4; weglScalef(*x,*y,*z); -}; break; -case 5252: { // glScissor +}; break; +case 5252: { // glScissor GLint *x = (GLint *) bp; bp += 4; GLint *y = (GLint *) bp; bp += 4; GLsizei *width = (GLsizei *) bp; bp += 4; GLsizei *height = (GLsizei *) bp; bp += 4; weglScissor(*x,*y,*width,*height); -}; break; -case 5253: { // glSelectBuffer +}; break; +case 5253: { // glSelectBuffer GLsizei *size = (GLsizei *) bp; bp += 4; GLuint *buffer = (GLuint *) bins[0]->base; weglSelectBuffer(*size,buffer); @@ -1908,171 +1908,171 @@ case 5253: { // glSelectBuffer rt[AP++]=ERL_DRV_ATOM; rt[AP++]=driver_mk_atom((char *) "ok"); rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5254: { // glShadeModel +}; break; +case 5254: { // glShadeModel GLenum *mode = (GLenum *) bp; bp += 4; weglShadeModel(*mode); -}; break; -case 5255: { // glStencilFunc +}; break; +case 5255: { // glStencilFunc GLenum *func = (GLenum *) bp; bp += 4; GLint *ref = (GLint *) bp; bp += 4; GLuint *mask = (GLuint *) bp; bp += 4; weglStencilFunc(*func,*ref,*mask); -}; break; -case 5256: { // glStencilMask +}; break; +case 5256: { // glStencilMask GLuint *mask = (GLuint *) bp; bp += 4; weglStencilMask(*mask); -}; break; -case 5257: { // glStencilOp +}; break; +case 5257: { // glStencilOp GLenum *fail = (GLenum *) bp; bp += 4; GLenum *zfail = (GLenum *) bp; bp += 4; GLenum *zpass = (GLenum *) bp; bp += 4; weglStencilOp(*fail,*zfail,*zpass); -}; break; -case 5258: { // glTexCoord1dv +}; break; +case 5258: { // glTexCoord1dv GLdouble *v = (GLdouble *) bp; bp += 8; weglTexCoord1dv(v); -}; break; -case 5259: { // glTexCoord1fv +}; break; +case 5259: { // glTexCoord1fv GLfloat *v = (GLfloat *) bp; bp += 4; weglTexCoord1fv(v); -}; break; -case 5260: { // glTexCoord1iv +}; break; +case 5260: { // glTexCoord1iv GLint *v = (GLint *) bp; bp += 4; weglTexCoord1iv(v); -}; break; -case 5261: { // glTexCoord1sv +}; break; +case 5261: { // glTexCoord1sv GLshort *v = (GLshort *) bp; bp += 2; weglTexCoord1sv(v); -}; break; -case 5262: { // glTexCoord2dv +}; break; +case 5262: { // glTexCoord2dv GLdouble *v = (GLdouble *) bp; bp += 8; weglTexCoord2dv(v); -}; break; -case 5263: { // glTexCoord2fv +}; break; +case 5263: { // glTexCoord2fv GLfloat *v = (GLfloat *) bp; bp += 4; weglTexCoord2fv(v); -}; break; -case 5264: { // glTexCoord2iv +}; break; +case 5264: { // glTexCoord2iv GLint *v = (GLint *) bp; bp += 4; weglTexCoord2iv(v); -}; break; -case 5265: { // glTexCoord2sv +}; break; +case 5265: { // glTexCoord2sv GLshort *v = (GLshort *) bp; bp += 2; weglTexCoord2sv(v); -}; break; -case 5266: { // glTexCoord3dv +}; break; +case 5266: { // glTexCoord3dv GLdouble *v = (GLdouble *) bp; bp += 8; weglTexCoord3dv(v); -}; break; -case 5267: { // glTexCoord3fv +}; break; +case 5267: { // glTexCoord3fv GLfloat *v = (GLfloat *) bp; bp += 4; weglTexCoord3fv(v); -}; break; -case 5268: { // glTexCoord3iv +}; break; +case 5268: { // glTexCoord3iv GLint *v = (GLint *) bp; bp += 4; weglTexCoord3iv(v); -}; break; -case 5269: { // glTexCoord3sv +}; break; +case 5269: { // glTexCoord3sv GLshort *v = (GLshort *) bp; bp += 2; weglTexCoord3sv(v); -}; break; -case 5270: { // glTexCoord4dv +}; break; +case 5270: { // glTexCoord4dv GLdouble *v = (GLdouble *) bp; bp += 8; weglTexCoord4dv(v); -}; break; -case 5271: { // glTexCoord4fv +}; break; +case 5271: { // glTexCoord4fv GLfloat *v = (GLfloat *) bp; bp += 4; weglTexCoord4fv(v); -}; break; -case 5272: { // glTexCoord4iv +}; break; +case 5272: { // glTexCoord4iv GLint *v = (GLint *) bp; bp += 4; weglTexCoord4iv(v); -}; break; -case 5273: { // glTexCoord4sv +}; break; +case 5273: { // glTexCoord4sv GLshort *v = (GLshort *) bp; bp += 2; weglTexCoord4sv(v); -}; break; -case 5274: { // glTexCoordPointer +}; break; +case 5274: { // glTexCoordPointer GLint *size = (GLint *) bp; bp += 4; GLenum *type = (GLenum *) bp; bp += 4; GLsizei *stride = (GLsizei *) bp; bp += 4; GLvoid *pointer = (GLvoid *) * (int *) bp; bp += 4; weglTexCoordPointer(*size,*type,*stride,pointer); -}; break; -case 5275: { // glTexCoordPointer +}; break; +case 5275: { // glTexCoordPointer GLint *size = (GLint *) bp; bp += 4; GLenum *type = (GLenum *) bp; bp += 4; GLsizei *stride = (GLsizei *) bp; bp += 4; GLvoid *pointer = (GLvoid *) bins[0]->base; weglTexCoordPointer(*size,*type,*stride,pointer); -}; break; -case 5276: { // glTexEnvf +}; break; +case 5276: { // glTexEnvf GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLfloat *param = (GLfloat *) bp; bp += 4; weglTexEnvf(*target,*pname,*param); -}; break; -case 5277: { // glTexEnvfv +}; break; +case 5277: { // glTexEnvfv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; int *paramsLen = (int *) bp; bp += 4; GLfloat *params = (GLfloat *) bp; bp += *paramsLen*4+((*paramsLen)+1)%2*4; weglTexEnvfv(*target,*pname,params); -}; break; -case 5278: { // glTexEnvi +}; break; +case 5278: { // glTexEnvi GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLint *param = (GLint *) bp; bp += 4; weglTexEnvi(*target,*pname,*param); -}; break; -case 5279: { // glTexEnviv +}; break; +case 5279: { // glTexEnviv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; int *paramsLen = (int *) bp; bp += 4; GLint *params = (GLint *) bp; bp += *paramsLen*4+((*paramsLen)+1)%2*4; weglTexEnviv(*target,*pname,params); -}; break; -case 5280: { // glTexGend +}; break; +case 5280: { // glTexGend GLenum *coord = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLdouble *param = (GLdouble *) bp; bp += 8; weglTexGend(*coord,*pname,*param); -}; break; -case 5281: { // glTexGendv +}; break; +case 5281: { // glTexGendv GLenum *coord = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; int *paramsLen = (int *) bp; bp += 8; GLdouble *params = (GLdouble *) bp; bp += *paramsLen*8; weglTexGendv(*coord,*pname,params); -}; break; -case 5282: { // glTexGenf +}; break; +case 5282: { // glTexGenf GLenum *coord = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLfloat *param = (GLfloat *) bp; bp += 4; weglTexGenf(*coord,*pname,*param); -}; break; -case 5283: { // glTexGenfv +}; break; +case 5283: { // glTexGenfv GLenum *coord = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; int *paramsLen = (int *) bp; bp += 4; GLfloat *params = (GLfloat *) bp; bp += *paramsLen*4+((*paramsLen)+1)%2*4; weglTexGenfv(*coord,*pname,params); -}; break; -case 5284: { // glTexGeni +}; break; +case 5284: { // glTexGeni GLenum *coord = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLint *param = (GLint *) bp; bp += 4; weglTexGeni(*coord,*pname,*param); -}; break; -case 5285: { // glTexGeniv +}; break; +case 5285: { // glTexGeniv GLenum *coord = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; int *paramsLen = (int *) bp; bp += 4; GLint *params = (GLint *) bp; bp += *paramsLen*4+((*paramsLen)+1)%2*4; weglTexGeniv(*coord,*pname,params); -}; break; -case 5286: { // glTexImage1D +}; break; +case 5286: { // glTexImage1D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLint *internalformat = (GLint *) bp; bp += 4; @@ -2082,8 +2082,8 @@ case 5286: { // glTexImage1D GLenum *type = (GLenum *) bp; bp += 4; GLvoid *pixels = (GLvoid *) * (int *) bp; bp += 4; weglTexImage1D(*target,*level,*internalformat,*width,*border,*format,*type,pixels); -}; break; -case 5287: { // glTexImage1D +}; break; +case 5287: { // glTexImage1D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLint *internalformat = (GLint *) bp; bp += 4; @@ -2093,8 +2093,8 @@ case 5287: { // glTexImage1D GLenum *type = (GLenum *) bp; bp += 4; GLvoid *pixels = (GLvoid *) bins[0]->base; weglTexImage1D(*target,*level,*internalformat,*width,*border,*format,*type,pixels); -}; break; -case 5288: { // glTexImage2D +}; break; +case 5288: { // glTexImage2D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLint *internalformat = (GLint *) bp; bp += 4; @@ -2105,8 +2105,8 @@ case 5288: { // glTexImage2D GLenum *type = (GLenum *) bp; bp += 4; GLvoid *pixels = (GLvoid *) * (int *) bp; bp += 4; weglTexImage2D(*target,*level,*internalformat,*width,*height,*border,*format,*type,pixels); -}; break; -case 5289: { // glTexImage2D +}; break; +case 5289: { // glTexImage2D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLint *internalformat = (GLint *) bp; bp += 4; @@ -2117,34 +2117,34 @@ case 5289: { // glTexImage2D GLenum *type = (GLenum *) bp; bp += 4; GLvoid *pixels = (GLvoid *) bins[0]->base; weglTexImage2D(*target,*level,*internalformat,*width,*height,*border,*format,*type,pixels); -}; break; -case 5290: { // glTexParameterf +}; break; +case 5290: { // glTexParameterf GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLfloat *param = (GLfloat *) bp; bp += 4; weglTexParameterf(*target,*pname,*param); -}; break; -case 5291: { // glTexParameterfv +}; break; +case 5291: { // glTexParameterfv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; int *paramsLen = (int *) bp; bp += 4; GLfloat *params = (GLfloat *) bp; bp += *paramsLen*4+((*paramsLen)+1)%2*4; weglTexParameterfv(*target,*pname,params); -}; break; -case 5292: { // glTexParameteri +}; break; +case 5292: { // glTexParameteri GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLint *param = (GLint *) bp; bp += 4; weglTexParameteri(*target,*pname,*param); -}; break; -case 5293: { // glTexParameteriv +}; break; +case 5293: { // glTexParameteriv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; int *paramsLen = (int *) bp; bp += 4; GLint *params = (GLint *) bp; bp += *paramsLen*4+((*paramsLen)+1)%2*4; weglTexParameteriv(*target,*pname,params); -}; break; -case 5294: { // glTexSubImage1D +}; break; +case 5294: { // glTexSubImage1D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLint *xoffset = (GLint *) bp; bp += 4; @@ -2153,8 +2153,8 @@ case 5294: { // glTexSubImage1D GLenum *type = (GLenum *) bp; bp += 4; GLvoid *pixels = (GLvoid *) * (int *) bp; bp += 4; weglTexSubImage1D(*target,*level,*xoffset,*width,*format,*type,pixels); -}; break; -case 5295: { // glTexSubImage1D +}; break; +case 5295: { // glTexSubImage1D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLint *xoffset = (GLint *) bp; bp += 4; @@ -2163,8 +2163,8 @@ case 5295: { // glTexSubImage1D GLenum *type = (GLenum *) bp; bp += 4; GLvoid *pixels = (GLvoid *) bins[0]->base; weglTexSubImage1D(*target,*level,*xoffset,*width,*format,*type,pixels); -}; break; -case 5296: { // glTexSubImage2D +}; break; +case 5296: { // glTexSubImage2D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLint *xoffset = (GLint *) bp; bp += 4; @@ -2175,8 +2175,8 @@ case 5296: { // glTexSubImage2D GLenum *type = (GLenum *) bp; bp += 4; GLvoid *pixels = (GLvoid *) * (int *) bp; bp += 4; weglTexSubImage2D(*target,*level,*xoffset,*yoffset,*width,*height,*format,*type,pixels); -}; break; -case 5297: { // glTexSubImage2D +}; break; +case 5297: { // glTexSubImage2D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLint *xoffset = (GLint *) bp; bp += 4; @@ -2187,100 +2187,100 @@ case 5297: { // glTexSubImage2D GLenum *type = (GLenum *) bp; bp += 4; GLvoid *pixels = (GLvoid *) bins[0]->base; weglTexSubImage2D(*target,*level,*xoffset,*yoffset,*width,*height,*format,*type,pixels); -}; break; -case 5298: { // glTranslated +}; break; +case 5298: { // glTranslated GLdouble *x = (GLdouble *) bp; bp += 8; GLdouble *y = (GLdouble *) bp; bp += 8; GLdouble *z = (GLdouble *) bp; bp += 8; weglTranslated(*x,*y,*z); -}; break; -case 5299: { // glTranslatef +}; break; +case 5299: { // glTranslatef GLfloat *x = (GLfloat *) bp; bp += 4; GLfloat *y = (GLfloat *) bp; bp += 4; GLfloat *z = (GLfloat *) bp; bp += 4; weglTranslatef(*x,*y,*z); -}; break; -case 5300: { // glVertex2dv +}; break; +case 5300: { // glVertex2dv GLdouble *v = (GLdouble *) bp; bp += 8; weglVertex2dv(v); -}; break; -case 5301: { // glVertex2fv +}; break; +case 5301: { // glVertex2fv GLfloat *v = (GLfloat *) bp; bp += 4; weglVertex2fv(v); -}; break; -case 5302: { // glVertex2iv +}; break; +case 5302: { // glVertex2iv GLint *v = (GLint *) bp; bp += 4; weglVertex2iv(v); -}; break; -case 5303: { // glVertex2sv +}; break; +case 5303: { // glVertex2sv GLshort *v = (GLshort *) bp; bp += 2; weglVertex2sv(v); -}; break; -case 5304: { // glVertex3dv +}; break; +case 5304: { // glVertex3dv GLdouble *v = (GLdouble *) bp; bp += 8; weglVertex3dv(v); -}; break; -case 5305: { // glVertex3fv +}; break; +case 5305: { // glVertex3fv GLfloat *v = (GLfloat *) bp; bp += 4; weglVertex3fv(v); -}; break; -case 5306: { // glVertex3iv +}; break; +case 5306: { // glVertex3iv GLint *v = (GLint *) bp; bp += 4; weglVertex3iv(v); -}; break; -case 5307: { // glVertex3sv +}; break; +case 5307: { // glVertex3sv GLshort *v = (GLshort *) bp; bp += 2; weglVertex3sv(v); -}; break; -case 5308: { // glVertex4dv +}; break; +case 5308: { // glVertex4dv GLdouble *v = (GLdouble *) bp; bp += 8; weglVertex4dv(v); -}; break; -case 5309: { // glVertex4fv +}; break; +case 5309: { // glVertex4fv GLfloat *v = (GLfloat *) bp; bp += 4; weglVertex4fv(v); -}; break; -case 5310: { // glVertex4iv +}; break; +case 5310: { // glVertex4iv GLint *v = (GLint *) bp; bp += 4; weglVertex4iv(v); -}; break; -case 5311: { // glVertex4sv +}; break; +case 5311: { // glVertex4sv GLshort *v = (GLshort *) bp; bp += 2; weglVertex4sv(v); -}; break; -case 5312: { // glVertexPointer +}; break; +case 5312: { // glVertexPointer GLint *size = (GLint *) bp; bp += 4; GLenum *type = (GLenum *) bp; bp += 4; GLsizei *stride = (GLsizei *) bp; bp += 4; GLvoid *pointer = (GLvoid *) * (int *) bp; bp += 4; weglVertexPointer(*size,*type,*stride,pointer); -}; break; -case 5313: { // glVertexPointer +}; break; +case 5313: { // glVertexPointer GLint *size = (GLint *) bp; bp += 4; GLenum *type = (GLenum *) bp; bp += 4; GLsizei *stride = (GLsizei *) bp; bp += 4; GLvoid *pointer = (GLvoid *) bins[0]->base; weglVertexPointer(*size,*type,*stride,pointer); -}; break; -case 5314: { // glViewport +}; break; +case 5314: { // glViewport GLint *x = (GLint *) bp; bp += 4; GLint *y = (GLint *) bp; bp += 4; GLsizei *width = (GLsizei *) bp; bp += 4; GLsizei *height = (GLsizei *) bp; bp += 4; weglViewport(*x,*y,*width,*height); -}; break; -case 5315: { // glBlendColor +}; break; +case 5315: { // glBlendColor GLclampf *red = (GLclampf *) bp; bp += 4; GLclampf *green = (GLclampf *) bp; bp += 4; GLclampf *blue = (GLclampf *) bp; bp += 4; GLclampf *alpha = (GLclampf *) bp; bp += 4; weglBlendColor(*red,*green,*blue,*alpha); -}; break; -case 5316: { // glBlendEquation +}; break; +case 5316: { // glBlendEquation GLenum *mode = (GLenum *) bp; bp += 4; weglBlendEquation(*mode); -}; break; -case 5317: { // glDrawRangeElements +}; break; +case 5317: { // glDrawRangeElements GLenum *mode = (GLenum *) bp; bp += 4; GLuint *start = (GLuint *) bp; bp += 4; GLuint *end = (GLuint *) bp; bp += 4; @@ -2288,8 +2288,8 @@ case 5317: { // glDrawRangeElements GLenum *type = (GLenum *) bp; bp += 4; GLvoid *indices = (GLvoid *) * (int *) bp; bp += 4; weglDrawRangeElements(*mode,*start,*end,*count,*type,indices); -}; break; -case 5318: { // glDrawRangeElements +}; break; +case 5318: { // glDrawRangeElements GLenum *mode = (GLenum *) bp; bp += 4; GLuint *start = (GLuint *) bp; bp += 4; GLuint *end = (GLuint *) bp; bp += 4; @@ -2297,8 +2297,8 @@ case 5318: { // glDrawRangeElements GLenum *type = (GLenum *) bp; bp += 4; GLvoid *indices = (GLvoid *) bins[0]->base; weglDrawRangeElements(*mode,*start,*end,*count,*type,indices); -}; break; -case 5319: { // glTexImage3D +}; break; +case 5319: { // glTexImage3D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLint *internalformat = (GLint *) bp; bp += 4; @@ -2310,8 +2310,8 @@ case 5319: { // glTexImage3D GLenum *type = (GLenum *) bp; bp += 4; GLvoid *pixels = (GLvoid *) * (int *) bp; bp += 4; weglTexImage3D(*target,*level,*internalformat,*width,*height,*depth,*border,*format,*type,pixels); -}; break; -case 5320: { // glTexImage3D +}; break; +case 5320: { // glTexImage3D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLint *internalformat = (GLint *) bp; bp += 4; @@ -2323,8 +2323,8 @@ case 5320: { // glTexImage3D GLenum *type = (GLenum *) bp; bp += 4; GLvoid *pixels = (GLvoid *) bins[0]->base; weglTexImage3D(*target,*level,*internalformat,*width,*height,*depth,*border,*format,*type,pixels); -}; break; -case 5321: { // glTexSubImage3D +}; break; +case 5321: { // glTexSubImage3D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLint *xoffset = (GLint *) bp; bp += 4; @@ -2337,8 +2337,8 @@ case 5321: { // glTexSubImage3D GLenum *type = (GLenum *) bp; bp += 4; GLvoid *pixels = (GLvoid *) * (int *) bp; bp += 4; weglTexSubImage3D(*target,*level,*xoffset,*yoffset,*zoffset,*width,*height,*depth,*format,*type,pixels); -}; break; -case 5322: { // glTexSubImage3D +}; break; +case 5322: { // glTexSubImage3D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLint *xoffset = (GLint *) bp; bp += 4; @@ -2351,8 +2351,8 @@ case 5322: { // glTexSubImage3D GLenum *type = (GLenum *) bp; bp += 4; GLvoid *pixels = (GLvoid *) bins[0]->base; weglTexSubImage3D(*target,*level,*xoffset,*yoffset,*zoffset,*width,*height,*depth,*format,*type,pixels); -}; break; -case 5323: { // glCopyTexSubImage3D +}; break; +case 5323: { // glCopyTexSubImage3D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLint *xoffset = (GLint *) bp; bp += 4; @@ -2363,8 +2363,8 @@ case 5323: { // glCopyTexSubImage3D GLsizei *width = (GLsizei *) bp; bp += 4; GLsizei *height = (GLsizei *) bp; bp += 4; weglCopyTexSubImage3D(*target,*level,*xoffset,*yoffset,*zoffset,*x,*y,*width,*height); -}; break; -case 5324: { // glColorTable +}; break; +case 5324: { // glColorTable GLenum *target = (GLenum *) bp; bp += 4; GLenum *internalformat = (GLenum *) bp; bp += 4; GLsizei *width = (GLsizei *) bp; bp += 4; @@ -2372,8 +2372,8 @@ case 5324: { // glColorTable GLenum *type = (GLenum *) bp; bp += 4; GLvoid *table = (GLvoid *) * (int *) bp; bp += 4; weglColorTable(*target,*internalformat,*width,*format,*type,table); -}; break; -case 5325: { // glColorTable +}; break; +case 5325: { // glColorTable GLenum *target = (GLenum *) bp; bp += 4; GLenum *internalformat = (GLenum *) bp; bp += 4; GLsizei *width = (GLsizei *) bp; bp += 4; @@ -2381,28 +2381,28 @@ case 5325: { // glColorTable GLenum *type = (GLenum *) bp; bp += 4; GLvoid *table = (GLvoid *) bins[0]->base; weglColorTable(*target,*internalformat,*width,*format,*type,table); -}; break; -case 5326: { // glColorTableParameterfv +}; break; +case 5326: { // glColorTableParameterfv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLfloat * params = (GLfloat *) bp; bp += 16; weglColorTableParameterfv(*target,*pname,params); -}; break; -case 5327: { // glColorTableParameteriv +}; break; +case 5327: { // glColorTableParameteriv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLint * params = (GLint *) bp; bp += 16; weglColorTableParameteriv(*target,*pname,params); -}; break; -case 5328: { // glCopyColorTable +}; break; +case 5328: { // glCopyColorTable GLenum *target = (GLenum *) bp; bp += 4; GLenum *internalformat = (GLenum *) bp; bp += 4; GLint *x = (GLint *) bp; bp += 4; GLint *y = (GLint *) bp; bp += 4; GLsizei *width = (GLsizei *) bp; bp += 4; weglCopyColorTable(*target,*internalformat,*x,*y,*width); -}; break; -case 5329: { // glGetColorTable +}; break; +case 5329: { // glGetColorTable GLenum *target = (GLenum *) bp; bp += 4; GLenum *format = (GLenum *) bp; bp += 4; GLenum *type = (GLenum *) bp; bp += 4; @@ -2413,8 +2413,8 @@ case 5329: { // glGetColorTable rt[AP++]=ERL_DRV_ATOM; rt[AP++]=driver_mk_atom((char *) "ok"); rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5330: { // glGetColorTableParameterfv +}; break; +case 5330: { // glGetColorTableParameterfv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLfloat params[4] = {0.0,0.0,0.0,0.0}; @@ -2431,8 +2431,8 @@ case 5330: { // glGetColorTableParameterfv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5331: { // glGetColorTableParameteriv +}; break; +case 5331: { // glGetColorTableParameteriv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLint params[4] = {0,0,0,0}; @@ -2448,8 +2448,8 @@ case 5331: { // glGetColorTableParameteriv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5332: { // glColorSubTable +}; break; +case 5332: { // glColorSubTable GLenum *target = (GLenum *) bp; bp += 4; GLsizei *start = (GLsizei *) bp; bp += 4; GLsizei *count = (GLsizei *) bp; bp += 4; @@ -2457,8 +2457,8 @@ case 5332: { // glColorSubTable GLenum *type = (GLenum *) bp; bp += 4; GLvoid *data = (GLvoid *) * (int *) bp; bp += 4; weglColorSubTable(*target,*start,*count,*format,*type,data); -}; break; -case 5333: { // glColorSubTable +}; break; +case 5333: { // glColorSubTable GLenum *target = (GLenum *) bp; bp += 4; GLsizei *start = (GLsizei *) bp; bp += 4; GLsizei *count = (GLsizei *) bp; bp += 4; @@ -2466,16 +2466,16 @@ case 5333: { // glColorSubTable GLenum *type = (GLenum *) bp; bp += 4; GLvoid *data = (GLvoid *) bins[0]->base; weglColorSubTable(*target,*start,*count,*format,*type,data); -}; break; -case 5334: { // glCopyColorSubTable +}; break; +case 5334: { // glCopyColorSubTable GLenum *target = (GLenum *) bp; bp += 4; GLsizei *start = (GLsizei *) bp; bp += 4; GLint *x = (GLint *) bp; bp += 4; GLint *y = (GLint *) bp; bp += 4; GLsizei *width = (GLsizei *) bp; bp += 4; weglCopyColorSubTable(*target,*start,*x,*y,*width); -}; break; -case 5335: { // glConvolutionFilter1D +}; break; +case 5335: { // glConvolutionFilter1D GLenum *target = (GLenum *) bp; bp += 4; GLenum *internalformat = (GLenum *) bp; bp += 4; GLsizei *width = (GLsizei *) bp; bp += 4; @@ -2483,8 +2483,8 @@ case 5335: { // glConvolutionFilter1D GLenum *type = (GLenum *) bp; bp += 4; GLvoid *image = (GLvoid *) * (int *) bp; bp += 4; weglConvolutionFilter1D(*target,*internalformat,*width,*format,*type,image); -}; break; -case 5336: { // glConvolutionFilter1D +}; break; +case 5336: { // glConvolutionFilter1D GLenum *target = (GLenum *) bp; bp += 4; GLenum *internalformat = (GLenum *) bp; bp += 4; GLsizei *width = (GLsizei *) bp; bp += 4; @@ -2492,8 +2492,8 @@ case 5336: { // glConvolutionFilter1D GLenum *type = (GLenum *) bp; bp += 4; GLvoid *image = (GLvoid *) bins[0]->base; weglConvolutionFilter1D(*target,*internalformat,*width,*format,*type,image); -}; break; -case 5337: { // glConvolutionFilter2D +}; break; +case 5337: { // glConvolutionFilter2D GLenum *target = (GLenum *) bp; bp += 4; GLenum *internalformat = (GLenum *) bp; bp += 4; GLsizei *width = (GLsizei *) bp; bp += 4; @@ -2502,8 +2502,8 @@ case 5337: { // glConvolutionFilter2D GLenum *type = (GLenum *) bp; bp += 4; GLvoid *image = (GLvoid *) * (int *) bp; bp += 4; weglConvolutionFilter2D(*target,*internalformat,*width,*height,*format,*type,image); -}; break; -case 5338: { // glConvolutionFilter2D +}; break; +case 5338: { // glConvolutionFilter2D GLenum *target = (GLenum *) bp; bp += 4; GLenum *internalformat = (GLenum *) bp; bp += 4; GLsizei *width = (GLsizei *) bp; bp += 4; @@ -2512,30 +2512,30 @@ case 5338: { // glConvolutionFilter2D GLenum *type = (GLenum *) bp; bp += 4; GLvoid *image = (GLvoid *) bins[0]->base; weglConvolutionFilter2D(*target,*internalformat,*width,*height,*format,*type,image); -}; break; -case 5339: { // glConvolutionParameterfv +}; break; +case 5339: { // glConvolutionParameterfv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; int *paramsLen = (int *) bp; bp += 4; GLfloat *params = (GLfloat *) bp; bp += *paramsLen*4+((*paramsLen)+1)%2*4; weglConvolutionParameterfv(*target,*pname,params); -}; break; -case 5340: { // glConvolutionParameteriv +}; break; +case 5340: { // glConvolutionParameteriv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; int *paramsLen = (int *) bp; bp += 4; GLint *params = (GLint *) bp; bp += *paramsLen*4+((*paramsLen)+1)%2*4; weglConvolutionParameteriv(*target,*pname,params); -}; break; -case 5341: { // glCopyConvolutionFilter1D +}; break; +case 5341: { // glCopyConvolutionFilter1D GLenum *target = (GLenum *) bp; bp += 4; GLenum *internalformat = (GLenum *) bp; bp += 4; GLint *x = (GLint *) bp; bp += 4; GLint *y = (GLint *) bp; bp += 4; GLsizei *width = (GLsizei *) bp; bp += 4; weglCopyConvolutionFilter1D(*target,*internalformat,*x,*y,*width); -}; break; -case 5342: { // glCopyConvolutionFilter2D +}; break; +case 5342: { // glCopyConvolutionFilter2D GLenum *target = (GLenum *) bp; bp += 4; GLenum *internalformat = (GLenum *) bp; bp += 4; GLint *x = (GLint *) bp; bp += 4; @@ -2543,8 +2543,8 @@ case 5342: { // glCopyConvolutionFilter2D GLsizei *width = (GLsizei *) bp; bp += 4; GLsizei *height = (GLsizei *) bp; bp += 4; weglCopyConvolutionFilter2D(*target,*internalformat,*x,*y,*width,*height); -}; break; -case 5343: { // glGetConvolutionFilter +}; break; +case 5343: { // glGetConvolutionFilter GLenum *target = (GLenum *) bp; bp += 4; GLenum *format = (GLenum *) bp; bp += 4; GLenum *type = (GLenum *) bp; bp += 4; @@ -2555,8 +2555,8 @@ case 5343: { // glGetConvolutionFilter rt[AP++]=ERL_DRV_ATOM; rt[AP++]=driver_mk_atom((char *) "ok"); rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5344: { // glGetConvolutionParameterfv +}; break; +case 5344: { // glGetConvolutionParameterfv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLfloat params[4] = {0.0,0.0,0.0,0.0}; @@ -2573,8 +2573,8 @@ case 5344: { // glGetConvolutionParameterfv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5345: { // glGetConvolutionParameteriv +}; break; +case 5345: { // glGetConvolutionParameteriv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLint params[4] = {0,0,0,0}; @@ -2590,8 +2590,8 @@ case 5345: { // glGetConvolutionParameteriv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5346: { // glSeparableFilter2D +}; break; +case 5346: { // glSeparableFilter2D GLenum *target = (GLenum *) bp; bp += 4; GLenum *internalformat = (GLenum *) bp; bp += 4; GLsizei *width = (GLsizei *) bp; bp += 4; @@ -2601,8 +2601,8 @@ case 5346: { // glSeparableFilter2D GLvoid *row = (GLvoid *) * (int *) bp; bp += 4; GLvoid *column = (GLvoid *) * (int *) bp; bp += 4; weglSeparableFilter2D(*target,*internalformat,*width,*height,*format,*type,row,column); -}; break; -case 5347: { // glSeparableFilter2D +}; break; +case 5347: { // glSeparableFilter2D GLenum *target = (GLenum *) bp; bp += 4; GLenum *internalformat = (GLenum *) bp; bp += 4; GLsizei *width = (GLsizei *) bp; bp += 4; @@ -2612,8 +2612,8 @@ case 5347: { // glSeparableFilter2D GLvoid *row = (GLvoid *) bins[0]->base; GLvoid *column = (GLvoid *) bins[1]->base; weglSeparableFilter2D(*target,*internalformat,*width,*height,*format,*type,row,column); -}; break; -case 5348: { // glGetHistogram +}; break; +case 5348: { // glGetHistogram GLenum *target = (GLenum *) bp; bp += 4; GLboolean *reset = (GLboolean *) bp; bp += 1; bp += 3; @@ -2626,8 +2626,8 @@ case 5348: { // glGetHistogram rt[AP++]=ERL_DRV_ATOM; rt[AP++]=driver_mk_atom((char *) "ok"); rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5349: { // glGetHistogramParameterfv +}; break; +case 5349: { // glGetHistogramParameterfv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLfloat params[1] = {0.0}; @@ -2641,8 +2641,8 @@ case 5349: { // glGetHistogramParameterfv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 8 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,8); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5350: { // glGetHistogramParameteriv +}; break; +case 5350: { // glGetHistogramParameteriv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLint params[1] = {0}; @@ -2655,8 +2655,8 @@ case 5350: { // glGetHistogramParameteriv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 8 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,8); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5351: { // glGetMinmax +}; break; +case 5351: { // glGetMinmax GLenum *target = (GLenum *) bp; bp += 4; GLboolean *reset = (GLboolean *) bp; bp += 1; bp += 3; @@ -2669,8 +2669,8 @@ case 5351: { // glGetMinmax rt[AP++]=ERL_DRV_ATOM; rt[AP++]=driver_mk_atom((char *) "ok"); rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5352: { // glGetMinmaxParameterfv +}; break; +case 5352: { // glGetMinmaxParameterfv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLfloat params[1] = {0.0}; @@ -2684,8 +2684,8 @@ case 5352: { // glGetMinmaxParameterfv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 8 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,8); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5353: { // glGetMinmaxParameteriv +}; break; +case 5353: { // glGetMinmaxParameteriv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLint params[1] = {0}; @@ -2698,38 +2698,38 @@ case 5353: { // glGetMinmaxParameteriv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 8 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,8); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5354: { // glHistogram +}; break; +case 5354: { // glHistogram GLenum *target = (GLenum *) bp; bp += 4; GLsizei *width = (GLsizei *) bp; bp += 4; GLenum *internalformat = (GLenum *) bp; bp += 4; GLboolean *sink = (GLboolean *) bp; bp += 1; weglHistogram(*target,*width,*internalformat,*sink); -}; break; -case 5355: { // glMinmax +}; break; +case 5355: { // glMinmax GLenum *target = (GLenum *) bp; bp += 4; GLenum *internalformat = (GLenum *) bp; bp += 4; GLboolean *sink = (GLboolean *) bp; bp += 1; weglMinmax(*target,*internalformat,*sink); -}; break; -case 5356: { // glResetHistogram +}; break; +case 5356: { // glResetHistogram GLenum *target = (GLenum *) bp; bp += 4; weglResetHistogram(*target); -}; break; -case 5357: { // glResetMinmax +}; break; +case 5357: { // glResetMinmax GLenum *target = (GLenum *) bp; bp += 4; weglResetMinmax(*target); -}; break; -case 5358: { // glActiveTexture +}; break; +case 5358: { // glActiveTexture GLenum *texture = (GLenum *) bp; bp += 4; weglActiveTexture(*texture); -}; break; -case 5359: { // glSampleCoverage +}; break; +case 5359: { // glSampleCoverage GLclampf *value = (GLclampf *) bp; bp += 4; GLboolean *invert = (GLboolean *) bp; bp += 1; weglSampleCoverage(*value,*invert); -}; break; -case 5360: { // glCompressedTexImage3D +}; break; +case 5360: { // glCompressedTexImage3D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLenum *internalformat = (GLenum *) bp; bp += 4; @@ -2740,8 +2740,8 @@ case 5360: { // glCompressedTexImage3D GLsizei *imageSize = (GLsizei *) bp; bp += 4; GLvoid *data = (GLvoid *) * (int *) bp; bp += 4; weglCompressedTexImage3D(*target,*level,*internalformat,*width,*height,*depth,*border,*imageSize,data); -}; break; -case 5361: { // glCompressedTexImage3D +}; break; +case 5361: { // glCompressedTexImage3D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLenum *internalformat = (GLenum *) bp; bp += 4; @@ -2752,8 +2752,8 @@ case 5361: { // glCompressedTexImage3D GLsizei *imageSize = (GLsizei *) bp; bp += 4; GLvoid *data = (GLvoid *) bins[0]->base; weglCompressedTexImage3D(*target,*level,*internalformat,*width,*height,*depth,*border,*imageSize,data); -}; break; -case 5362: { // glCompressedTexImage2D +}; break; +case 5362: { // glCompressedTexImage2D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLenum *internalformat = (GLenum *) bp; bp += 4; @@ -2763,8 +2763,8 @@ case 5362: { // glCompressedTexImage2D GLsizei *imageSize = (GLsizei *) bp; bp += 4; GLvoid *data = (GLvoid *) * (int *) bp; bp += 4; weglCompressedTexImage2D(*target,*level,*internalformat,*width,*height,*border,*imageSize,data); -}; break; -case 5363: { // glCompressedTexImage2D +}; break; +case 5363: { // glCompressedTexImage2D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLenum *internalformat = (GLenum *) bp; bp += 4; @@ -2774,8 +2774,8 @@ case 5363: { // glCompressedTexImage2D GLsizei *imageSize = (GLsizei *) bp; bp += 4; GLvoid *data = (GLvoid *) bins[0]->base; weglCompressedTexImage2D(*target,*level,*internalformat,*width,*height,*border,*imageSize,data); -}; break; -case 5364: { // glCompressedTexImage1D +}; break; +case 5364: { // glCompressedTexImage1D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLenum *internalformat = (GLenum *) bp; bp += 4; @@ -2784,8 +2784,8 @@ case 5364: { // glCompressedTexImage1D GLsizei *imageSize = (GLsizei *) bp; bp += 4; GLvoid *data = (GLvoid *) * (int *) bp; bp += 4; weglCompressedTexImage1D(*target,*level,*internalformat,*width,*border,*imageSize,data); -}; break; -case 5365: { // glCompressedTexImage1D +}; break; +case 5365: { // glCompressedTexImage1D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLenum *internalformat = (GLenum *) bp; bp += 4; @@ -2794,8 +2794,8 @@ case 5365: { // glCompressedTexImage1D GLsizei *imageSize = (GLsizei *) bp; bp += 4; GLvoid *data = (GLvoid *) bins[0]->base; weglCompressedTexImage1D(*target,*level,*internalformat,*width,*border,*imageSize,data); -}; break; -case 5366: { // glCompressedTexSubImage3D +}; break; +case 5366: { // glCompressedTexSubImage3D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLint *xoffset = (GLint *) bp; bp += 4; @@ -2808,8 +2808,8 @@ case 5366: { // glCompressedTexSubImage3D GLsizei *imageSize = (GLsizei *) bp; bp += 4; GLvoid *data = (GLvoid *) * (int *) bp; bp += 4; weglCompressedTexSubImage3D(*target,*level,*xoffset,*yoffset,*zoffset,*width,*height,*depth,*format,*imageSize,data); -}; break; -case 5367: { // glCompressedTexSubImage3D +}; break; +case 5367: { // glCompressedTexSubImage3D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLint *xoffset = (GLint *) bp; bp += 4; @@ -2822,8 +2822,8 @@ case 5367: { // glCompressedTexSubImage3D GLsizei *imageSize = (GLsizei *) bp; bp += 4; GLvoid *data = (GLvoid *) bins[0]->base; weglCompressedTexSubImage3D(*target,*level,*xoffset,*yoffset,*zoffset,*width,*height,*depth,*format,*imageSize,data); -}; break; -case 5368: { // glCompressedTexSubImage2D +}; break; +case 5368: { // glCompressedTexSubImage2D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLint *xoffset = (GLint *) bp; bp += 4; @@ -2834,8 +2834,8 @@ case 5368: { // glCompressedTexSubImage2D GLsizei *imageSize = (GLsizei *) bp; bp += 4; GLvoid *data = (GLvoid *) * (int *) bp; bp += 4; weglCompressedTexSubImage2D(*target,*level,*xoffset,*yoffset,*width,*height,*format,*imageSize,data); -}; break; -case 5369: { // glCompressedTexSubImage2D +}; break; +case 5369: { // glCompressedTexSubImage2D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLint *xoffset = (GLint *) bp; bp += 4; @@ -2846,8 +2846,8 @@ case 5369: { // glCompressedTexSubImage2D GLsizei *imageSize = (GLsizei *) bp; bp += 4; GLvoid *data = (GLvoid *) bins[0]->base; weglCompressedTexSubImage2D(*target,*level,*xoffset,*yoffset,*width,*height,*format,*imageSize,data); -}; break; -case 5370: { // glCompressedTexSubImage1D +}; break; +case 5370: { // glCompressedTexSubImage1D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLint *xoffset = (GLint *) bp; bp += 4; @@ -2856,8 +2856,8 @@ case 5370: { // glCompressedTexSubImage1D GLsizei *imageSize = (GLsizei *) bp; bp += 4; GLvoid *data = (GLvoid *) * (int *) bp; bp += 4; weglCompressedTexSubImage1D(*target,*level,*xoffset,*width,*format,*imageSize,data); -}; break; -case 5371: { // glCompressedTexSubImage1D +}; break; +case 5371: { // glCompressedTexSubImage1D GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLint *xoffset = (GLint *) bp; bp += 4; @@ -2866,8 +2866,8 @@ case 5371: { // glCompressedTexSubImage1D GLsizei *imageSize = (GLsizei *) bp; bp += 4; GLvoid *data = (GLvoid *) bins[0]->base; weglCompressedTexSubImage1D(*target,*level,*xoffset,*width,*format,*imageSize,data); -}; break; -case 5372: { // glGetCompressedTexImage +}; break; +case 5372: { // glGetCompressedTexImage GLenum *target = (GLenum *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLvoid *img = (GLvoid *) bins[0]->base; @@ -2877,247 +2877,247 @@ case 5372: { // glGetCompressedTexImage rt[AP++]=ERL_DRV_ATOM; rt[AP++]=driver_mk_atom((char *) "ok"); rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5373: { // glClientActiveTexture +}; break; +case 5373: { // glClientActiveTexture GLenum *texture = (GLenum *) bp; bp += 4; weglClientActiveTexture(*texture); -}; break; -case 5374: { // glMultiTexCoord1dv +}; break; +case 5374: { // glMultiTexCoord1dv GLenum *target = (GLenum *) bp; bp += 4; bp += 4; GLdouble *v = (GLdouble *) bp; bp += 8; weglMultiTexCoord1dv(*target,v); -}; break; -case 5375: { // glMultiTexCoord1fv +}; break; +case 5375: { // glMultiTexCoord1fv GLenum *target = (GLenum *) bp; bp += 4; GLfloat *v = (GLfloat *) bp; bp += 4; weglMultiTexCoord1fv(*target,v); -}; break; -case 5376: { // glMultiTexCoord1iv +}; break; +case 5376: { // glMultiTexCoord1iv GLenum *target = (GLenum *) bp; bp += 4; GLint *v = (GLint *) bp; bp += 4; weglMultiTexCoord1iv(*target,v); -}; break; -case 5377: { // glMultiTexCoord1sv +}; break; +case 5377: { // glMultiTexCoord1sv GLenum *target = (GLenum *) bp; bp += 4; GLshort *v = (GLshort *) bp; bp += 2; weglMultiTexCoord1sv(*target,v); -}; break; -case 5378: { // glMultiTexCoord2dv +}; break; +case 5378: { // glMultiTexCoord2dv GLenum *target = (GLenum *) bp; bp += 4; bp += 4; GLdouble *v = (GLdouble *) bp; bp += 8; weglMultiTexCoord2dv(*target,v); -}; break; -case 5379: { // glMultiTexCoord2fv +}; break; +case 5379: { // glMultiTexCoord2fv GLenum *target = (GLenum *) bp; bp += 4; GLfloat *v = (GLfloat *) bp; bp += 4; weglMultiTexCoord2fv(*target,v); -}; break; -case 5380: { // glMultiTexCoord2iv +}; break; +case 5380: { // glMultiTexCoord2iv GLenum *target = (GLenum *) bp; bp += 4; GLint *v = (GLint *) bp; bp += 4; weglMultiTexCoord2iv(*target,v); -}; break; -case 5381: { // glMultiTexCoord2sv +}; break; +case 5381: { // glMultiTexCoord2sv GLenum *target = (GLenum *) bp; bp += 4; GLshort *v = (GLshort *) bp; bp += 2; weglMultiTexCoord2sv(*target,v); -}; break; -case 5382: { // glMultiTexCoord3dv +}; break; +case 5382: { // glMultiTexCoord3dv GLenum *target = (GLenum *) bp; bp += 4; bp += 4; GLdouble *v = (GLdouble *) bp; bp += 8; weglMultiTexCoord3dv(*target,v); -}; break; -case 5383: { // glMultiTexCoord3fv +}; break; +case 5383: { // glMultiTexCoord3fv GLenum *target = (GLenum *) bp; bp += 4; GLfloat *v = (GLfloat *) bp; bp += 4; weglMultiTexCoord3fv(*target,v); -}; break; -case 5384: { // glMultiTexCoord3iv +}; break; +case 5384: { // glMultiTexCoord3iv GLenum *target = (GLenum *) bp; bp += 4; GLint *v = (GLint *) bp; bp += 4; weglMultiTexCoord3iv(*target,v); -}; break; -case 5385: { // glMultiTexCoord3sv +}; break; +case 5385: { // glMultiTexCoord3sv GLenum *target = (GLenum *) bp; bp += 4; GLshort *v = (GLshort *) bp; bp += 2; weglMultiTexCoord3sv(*target,v); -}; break; -case 5386: { // glMultiTexCoord4dv +}; break; +case 5386: { // glMultiTexCoord4dv GLenum *target = (GLenum *) bp; bp += 4; bp += 4; GLdouble *v = (GLdouble *) bp; bp += 8; weglMultiTexCoord4dv(*target,v); -}; break; -case 5387: { // glMultiTexCoord4fv +}; break; +case 5387: { // glMultiTexCoord4fv GLenum *target = (GLenum *) bp; bp += 4; GLfloat *v = (GLfloat *) bp; bp += 4; weglMultiTexCoord4fv(*target,v); -}; break; -case 5388: { // glMultiTexCoord4iv +}; break; +case 5388: { // glMultiTexCoord4iv GLenum *target = (GLenum *) bp; bp += 4; GLint *v = (GLint *) bp; bp += 4; weglMultiTexCoord4iv(*target,v); -}; break; -case 5389: { // glMultiTexCoord4sv +}; break; +case 5389: { // glMultiTexCoord4sv GLenum *target = (GLenum *) bp; bp += 4; GLshort *v = (GLshort *) bp; bp += 2; weglMultiTexCoord4sv(*target,v); -}; break; -case 5390: { // glLoadTransposeMatrixf +}; break; +case 5390: { // glLoadTransposeMatrixf GLfloat * m = (GLfloat *) bp; bp += 64; weglLoadTransposeMatrixf(m); -}; break; -case 5391: { // glLoadTransposeMatrixd +}; break; +case 5391: { // glLoadTransposeMatrixd GLdouble * m = (GLdouble *) bp; bp += 128; weglLoadTransposeMatrixd(m); -}; break; -case 5392: { // glMultTransposeMatrixf +}; break; +case 5392: { // glMultTransposeMatrixf GLfloat * m = (GLfloat *) bp; bp += 64; weglMultTransposeMatrixf(m); -}; break; -case 5393: { // glMultTransposeMatrixd +}; break; +case 5393: { // glMultTransposeMatrixd GLdouble * m = (GLdouble *) bp; bp += 128; weglMultTransposeMatrixd(m); -}; break; -case 5394: { // glBlendFuncSeparate +}; break; +case 5394: { // glBlendFuncSeparate GLenum *sfactorRGB = (GLenum *) bp; bp += 4; GLenum *dfactorRGB = (GLenum *) bp; bp += 4; GLenum *sfactorAlpha = (GLenum *) bp; bp += 4; GLenum *dfactorAlpha = (GLenum *) bp; bp += 4; weglBlendFuncSeparate(*sfactorRGB,*dfactorRGB,*sfactorAlpha,*dfactorAlpha); -}; break; -case 5395: { // glMultiDrawArrays +}; break; +case 5395: { // glMultiDrawArrays GLenum *mode = (GLenum *) bp; bp += 4; int * firstLen = (int *) bp; bp += 4; GLint * first = (GLint *) bp; bp += (8-((*firstLen*4+0)%8))%8; int * countLen = (int *) bp; bp += 4; GLsizei * count = (GLsizei *) bp; bp += (8-((*countLen*4+4)%8))%8; weglMultiDrawArrays(*mode,first,count,*firstLen); -}; break; -case 5396: { // glPointParameterf +}; break; +case 5396: { // glPointParameterf GLenum *pname = (GLenum *) bp; bp += 4; GLfloat *param = (GLfloat *) bp; bp += 4; weglPointParameterf(*pname,*param); -}; break; -case 5397: { // glPointParameterfv +}; break; +case 5397: { // glPointParameterfv GLenum *pname = (GLenum *) bp; bp += 4; int *paramsLen = (int *) bp; bp += 4; GLfloat *params = (GLfloat *) bp; bp += *paramsLen*4+((*paramsLen)+0)%2*4; weglPointParameterfv(*pname,params); -}; break; -case 5398: { // glPointParameteri +}; break; +case 5398: { // glPointParameteri GLenum *pname = (GLenum *) bp; bp += 4; GLint *param = (GLint *) bp; bp += 4; weglPointParameteri(*pname,*param); -}; break; -case 5399: { // glPointParameteriv +}; break; +case 5399: { // glPointParameteriv GLenum *pname = (GLenum *) bp; bp += 4; int *paramsLen = (int *) bp; bp += 4; GLint *params = (GLint *) bp; bp += *paramsLen*4+((*paramsLen)+0)%2*4; weglPointParameteriv(*pname,params); -}; break; -case 5400: { // glFogCoordfv +}; break; +case 5400: { // glFogCoordfv GLfloat *coord = (GLfloat *) bp; bp += 4; weglFogCoordfv(coord); -}; break; -case 5401: { // glFogCoorddv +}; break; +case 5401: { // glFogCoorddv GLdouble *coord = (GLdouble *) bp; bp += 8; weglFogCoorddv(coord); -}; break; -case 5402: { // glFogCoordPointer +}; break; +case 5402: { // glFogCoordPointer GLenum *type = (GLenum *) bp; bp += 4; GLsizei *stride = (GLsizei *) bp; bp += 4; GLvoid *pointer = (GLvoid *) * (int *) bp; bp += 4; weglFogCoordPointer(*type,*stride,pointer); -}; break; -case 5403: { // glFogCoordPointer +}; break; +case 5403: { // glFogCoordPointer GLenum *type = (GLenum *) bp; bp += 4; GLsizei *stride = (GLsizei *) bp; bp += 4; GLvoid *pointer = (GLvoid *) bins[0]->base; weglFogCoordPointer(*type,*stride,pointer); -}; break; -case 5404: { // glSecondaryColor3bv +}; break; +case 5404: { // glSecondaryColor3bv GLbyte *v = (GLbyte *) bp; bp += 1; weglSecondaryColor3bv(v); -}; break; -case 5405: { // glSecondaryColor3dv +}; break; +case 5405: { // glSecondaryColor3dv GLdouble *v = (GLdouble *) bp; bp += 8; weglSecondaryColor3dv(v); -}; break; -case 5406: { // glSecondaryColor3fv +}; break; +case 5406: { // glSecondaryColor3fv GLfloat *v = (GLfloat *) bp; bp += 4; weglSecondaryColor3fv(v); -}; break; -case 5407: { // glSecondaryColor3iv +}; break; +case 5407: { // glSecondaryColor3iv GLint *v = (GLint *) bp; bp += 4; weglSecondaryColor3iv(v); -}; break; -case 5408: { // glSecondaryColor3sv +}; break; +case 5408: { // glSecondaryColor3sv GLshort *v = (GLshort *) bp; bp += 2; weglSecondaryColor3sv(v); -}; break; -case 5409: { // glSecondaryColor3ubv +}; break; +case 5409: { // glSecondaryColor3ubv GLubyte *v = (GLubyte *) bp; bp += 1; weglSecondaryColor3ubv(v); -}; break; -case 5410: { // glSecondaryColor3uiv +}; break; +case 5410: { // glSecondaryColor3uiv GLuint *v = (GLuint *) bp; bp += 4; weglSecondaryColor3uiv(v); -}; break; -case 5411: { // glSecondaryColor3usv +}; break; +case 5411: { // glSecondaryColor3usv GLushort *v = (GLushort *) bp; bp += 2; weglSecondaryColor3usv(v); -}; break; -case 5412: { // glSecondaryColorPointer +}; break; +case 5412: { // glSecondaryColorPointer GLint *size = (GLint *) bp; bp += 4; GLenum *type = (GLenum *) bp; bp += 4; GLsizei *stride = (GLsizei *) bp; bp += 4; GLvoid *pointer = (GLvoid *) * (int *) bp; bp += 4; weglSecondaryColorPointer(*size,*type,*stride,pointer); -}; break; -case 5413: { // glSecondaryColorPointer +}; break; +case 5413: { // glSecondaryColorPointer GLint *size = (GLint *) bp; bp += 4; GLenum *type = (GLenum *) bp; bp += 4; GLsizei *stride = (GLsizei *) bp; bp += 4; GLvoid *pointer = (GLvoid *) bins[0]->base; weglSecondaryColorPointer(*size,*type,*stride,pointer); -}; break; -case 5414: { // glWindowPos2dv +}; break; +case 5414: { // glWindowPos2dv GLdouble *v = (GLdouble *) bp; bp += 8; weglWindowPos2dv(v); -}; break; -case 5415: { // glWindowPos2fv +}; break; +case 5415: { // glWindowPos2fv GLfloat *v = (GLfloat *) bp; bp += 4; weglWindowPos2fv(v); -}; break; -case 5416: { // glWindowPos2iv +}; break; +case 5416: { // glWindowPos2iv GLint *v = (GLint *) bp; bp += 4; weglWindowPos2iv(v); -}; break; -case 5417: { // glWindowPos2sv +}; break; +case 5417: { // glWindowPos2sv GLshort *v = (GLshort *) bp; bp += 2; weglWindowPos2sv(v); -}; break; -case 5418: { // glWindowPos3dv +}; break; +case 5418: { // glWindowPos3dv GLdouble *v = (GLdouble *) bp; bp += 8; weglWindowPos3dv(v); -}; break; -case 5419: { // glWindowPos3fv +}; break; +case 5419: { // glWindowPos3fv GLfloat *v = (GLfloat *) bp; bp += 4; weglWindowPos3fv(v); -}; break; -case 5420: { // glWindowPos3iv +}; break; +case 5420: { // glWindowPos3iv GLint *v = (GLint *) bp; bp += 4; weglWindowPos3iv(v); -}; break; -case 5421: { // glWindowPos3sv +}; break; +case 5421: { // glWindowPos3sv GLshort *v = (GLshort *) bp; bp += 2; weglWindowPos3sv(v); -}; break; -case 5422: { // glGenQueries +}; break; +case 5422: { // glGenQueries GLsizei *n = (GLsizei *) bp; bp += 4; GLuint *ids; ids = (GLuint *) driver_alloc(sizeof(GLuint) * *n); @@ -3131,15 +3131,15 @@ case 5422: { // glGenQueries rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 7 + (*n)*2 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,7 + (*n)*2); driver_send_term(WXE_DRV_PORT,caller,rt,AP); - driver_free(rt); + driver_free(rt); driver_free(ids); -}; break; -case 5423: { // glDeleteQueries +}; break; +case 5423: { // glDeleteQueries int * idsLen = (int *) bp; bp += 4; GLuint * ids = (GLuint *) bp; bp += (8-((*idsLen*4+4)%8))%8; weglDeleteQueries(*idsLen,ids); -}; break; -case 5424: { // glIsQuery +}; break; +case 5424: { // glIsQuery GLuint *id = (GLuint *) bp; bp += 4; GLboolean result = weglIsQuery(*id); int AP = 0; ErlDrvTermData rt[6]; @@ -3148,17 +3148,17 @@ case 5424: { // glIsQuery rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5425: { // glBeginQuery +}; break; +case 5425: { // glBeginQuery GLenum *target = (GLenum *) bp; bp += 4; GLuint *id = (GLuint *) bp; bp += 4; weglBeginQuery(*target,*id); -}; break; -case 5426: { // glEndQuery +}; break; +case 5426: { // glEndQuery GLenum *target = (GLenum *) bp; bp += 4; weglEndQuery(*target); -}; break; -case 5427: { // glGetQueryiv +}; break; +case 5427: { // glGetQueryiv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLint params[1] = {0}; @@ -3169,8 +3169,8 @@ case 5427: { // glGetQueryiv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5428: { // glGetQueryObjectiv +}; break; +case 5428: { // glGetQueryObjectiv GLuint *id = (GLuint *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLint params[1] = {0}; @@ -3181,8 +3181,8 @@ case 5428: { // glGetQueryObjectiv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5429: { // glGetQueryObjectuiv +}; break; +case 5429: { // glGetQueryObjectuiv GLuint *id = (GLuint *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLuint params[1] = {0}; @@ -3193,18 +3193,18 @@ case 5429: { // glGetQueryObjectuiv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5430: { // glBindBuffer +}; break; +case 5430: { // glBindBuffer GLenum *target = (GLenum *) bp; bp += 4; GLuint *buffer = (GLuint *) bp; bp += 4; weglBindBuffer(*target,*buffer); -}; break; -case 5431: { // glDeleteBuffers +}; break; +case 5431: { // glDeleteBuffers int * buffersLen = (int *) bp; bp += 4; GLuint * buffers = (GLuint *) bp; bp += (8-((*buffersLen*4+4)%8))%8; weglDeleteBuffers(*buffersLen,buffers); -}; break; -case 5432: { // glGenBuffers +}; break; +case 5432: { // glGenBuffers GLsizei *n = (GLsizei *) bp; bp += 4; GLuint *buffers; buffers = (GLuint *) driver_alloc(sizeof(GLuint) * *n); @@ -3218,10 +3218,10 @@ case 5432: { // glGenBuffers rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 7 + (*n)*2 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,7 + (*n)*2); driver_send_term(WXE_DRV_PORT,caller,rt,AP); - driver_free(rt); + driver_free(rt); driver_free(buffers); -}; break; -case 5433: { // glIsBuffer +}; break; +case 5433: { // glIsBuffer GLuint *buffer = (GLuint *) bp; bp += 4; GLboolean result = weglIsBuffer(*buffer); int AP = 0; ErlDrvTermData rt[6]; @@ -3230,40 +3230,40 @@ case 5433: { // glIsBuffer rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5434: { // glBufferData +}; break; +case 5434: { // glBufferData GLenum *target = (GLenum *) bp; bp += 4; bp += 4; GLsizeiptr size = (GLsizeiptr) * (GLuint64EXT *) bp; bp += 8; GLvoid *data = (GLvoid *) * (int *) bp; bp += 4; GLenum *usage = (GLenum *) bp; bp += 4; weglBufferData(*target,size,data,*usage); -}; break; -case 5435: { // glBufferData +}; break; +case 5435: { // glBufferData GLenum *target = (GLenum *) bp; bp += 4; bp += 4; GLsizeiptr size = (GLsizeiptr) * (GLuint64EXT *) bp; bp += 8; GLvoid *data = (GLvoid *) bins[0]->base; GLenum *usage = (GLenum *) bp; bp += 4; weglBufferData(*target,size,data,*usage); -}; break; -case 5436: { // glBufferSubData +}; break; +case 5436: { // glBufferSubData GLenum *target = (GLenum *) bp; bp += 4; bp += 4; GLintptr offset = (GLintptr) * (GLuint64EXT *) bp; bp += 8; GLsizeiptr size = (GLsizeiptr) * (GLuint64EXT *) bp; bp += 8; GLvoid *data = (GLvoid *) * (int *) bp; bp += 4; weglBufferSubData(*target,offset,size,data); -}; break; -case 5437: { // glBufferSubData +}; break; +case 5437: { // glBufferSubData GLenum *target = (GLenum *) bp; bp += 4; bp += 4; GLintptr offset = (GLintptr) * (GLuint64EXT *) bp; bp += 8; GLsizeiptr size = (GLsizeiptr) * (GLuint64EXT *) bp; bp += 8; GLvoid *data = (GLvoid *) bins[0]->base; weglBufferSubData(*target,offset,size,data); -}; break; -case 5438: { // glGetBufferSubData +}; break; +case 5438: { // glGetBufferSubData GLenum *target = (GLenum *) bp; bp += 4; bp += 4; GLintptr offset = (GLintptr) * (GLuint64EXT *) bp; bp += 8; @@ -3275,8 +3275,8 @@ case 5438: { // glGetBufferSubData rt[AP++]=ERL_DRV_ATOM; rt[AP++]=driver_mk_atom((char *) "ok"); rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5439: { // glGetBufferParameteriv +}; break; +case 5439: { // glGetBufferParameteriv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLint params[1] = {0}; @@ -3287,53 +3287,53 @@ case 5439: { // glGetBufferParameteriv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5440: { // glBlendEquationSeparate +}; break; +case 5440: { // glBlendEquationSeparate GLenum *modeRGB = (GLenum *) bp; bp += 4; GLenum *modeAlpha = (GLenum *) bp; bp += 4; weglBlendEquationSeparate(*modeRGB,*modeAlpha); -}; break; -case 5441: { // glDrawBuffers +}; break; +case 5441: { // glDrawBuffers int * bufsLen = (int *) bp; bp += 4; GLenum * bufs = (GLenum *) bp; bp += (8-((*bufsLen*4+4)%8))%8; weglDrawBuffers(*bufsLen,bufs); -}; break; -case 5442: { // glStencilOpSeparate +}; break; +case 5442: { // glStencilOpSeparate GLenum *face = (GLenum *) bp; bp += 4; GLenum *sfail = (GLenum *) bp; bp += 4; GLenum *dpfail = (GLenum *) bp; bp += 4; GLenum *dppass = (GLenum *) bp; bp += 4; weglStencilOpSeparate(*face,*sfail,*dpfail,*dppass); -}; break; -case 5443: { // glStencilFuncSeparate +}; break; +case 5443: { // glStencilFuncSeparate GLenum *frontfunc = (GLenum *) bp; bp += 4; GLenum *backfunc = (GLenum *) bp; bp += 4; GLint *ref = (GLint *) bp; bp += 4; GLuint *mask = (GLuint *) bp; bp += 4; weglStencilFuncSeparate(*frontfunc,*backfunc,*ref,*mask); -}; break; -case 5444: { // glStencilMaskSeparate +}; break; +case 5444: { // glStencilMaskSeparate GLenum *face = (GLenum *) bp; bp += 4; GLuint *mask = (GLuint *) bp; bp += 4; weglStencilMaskSeparate(*face,*mask); -}; break; -case 5445: { // glAttachShader +}; break; +case 5445: { // glAttachShader GLuint *program = (GLuint *) bp; bp += 4; GLuint *shader = (GLuint *) bp; bp += 4; weglAttachShader(*program,*shader); -}; break; -case 5446: { // glBindAttribLocation +}; break; +case 5446: { // glBindAttribLocation GLuint *program = (GLuint *) bp; bp += 4; GLuint *index = (GLuint *) bp; bp += 4; GLchar *name = (GLchar *) bp; int nameLen = strlen((char *)name); bp += nameLen+1+((8-((1+nameLen+0)%8))%8); weglBindAttribLocation(*program,*index,name); -}; break; -case 5447: { // glCompileShader +}; break; +case 5447: { // glCompileShader GLuint *shader = (GLuint *) bp; bp += 4; weglCompileShader(*shader); -}; break; -case 5448: { // glCreateProgram +}; break; +case 5448: { // glCreateProgram GLuint result = weglCreateProgram(); int AP = 0; ErlDrvTermData rt[6]; rt[AP++]=ERL_DRV_ATOM; rt[AP++]=driver_mk_atom((char *) "_wxe_result_"); @@ -3341,8 +3341,8 @@ case 5448: { // glCreateProgram rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5449: { // glCreateShader +}; break; +case 5449: { // glCreateShader GLenum *type = (GLenum *) bp; bp += 4; GLuint result = weglCreateShader(*type); int AP = 0; ErlDrvTermData rt[6]; @@ -3351,29 +3351,29 @@ case 5449: { // glCreateShader rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5450: { // glDeleteProgram +}; break; +case 5450: { // glDeleteProgram GLuint *program = (GLuint *) bp; bp += 4; weglDeleteProgram(*program); -}; break; -case 5451: { // glDeleteShader +}; break; +case 5451: { // glDeleteShader GLuint *shader = (GLuint *) bp; bp += 4; weglDeleteShader(*shader); -}; break; -case 5452: { // glDetachShader +}; break; +case 5452: { // glDetachShader GLuint *program = (GLuint *) bp; bp += 4; GLuint *shader = (GLuint *) bp; bp += 4; weglDetachShader(*program,*shader); -}; break; -case 5453: { // glDisableVertexAttribArray +}; break; +case 5453: { // glDisableVertexAttribArray GLuint *index = (GLuint *) bp; bp += 4; weglDisableVertexAttribArray(*index); -}; break; -case 5454: { // glEnableVertexAttribArray +}; break; +case 5454: { // glEnableVertexAttribArray GLuint *index = (GLuint *) bp; bp += 4; weglEnableVertexAttribArray(*index); -}; break; -case 5455: { // glGetActiveAttrib +}; break; +case 5455: { // glGetActiveAttrib GLuint *program = (GLuint *) bp; bp += 4; GLuint *index = (GLuint *) bp; bp += 4; GLsizei *bufSize = (GLsizei *) bp; bp += 4; @@ -3393,8 +3393,8 @@ case 5455: { // glGetActiveAttrib if (AP != 13 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,13); driver_send_term(WXE_DRV_PORT,caller,rt,AP); driver_free(name); -}; break; -case 5456: { // glGetActiveUniform +}; break; +case 5456: { // glGetActiveUniform GLuint *program = (GLuint *) bp; bp += 4; GLuint *index = (GLuint *) bp; bp += 4; GLsizei *bufSize = (GLsizei *) bp; bp += 4; @@ -3414,8 +3414,8 @@ case 5456: { // glGetActiveUniform if (AP != 13 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,13); driver_send_term(WXE_DRV_PORT,caller,rt,AP); driver_free(name); -}; break; -case 5457: { // glGetAttachedShaders +}; break; +case 5457: { // glGetAttachedShaders GLuint *program = (GLuint *) bp; bp += 4; GLsizei *maxCount = (GLsizei *) bp; bp += 4; GLsizei count[1] = {0}; @@ -3431,10 +3431,10 @@ case 5457: { // glGetAttachedShaders rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 7 + (*count)*2 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,7 + (*count)*2); driver_send_term(WXE_DRV_PORT,caller,rt,AP); - driver_free(rt); + driver_free(rt); driver_free(obj); -}; break; -case 5458: { // glGetAttribLocation +}; break; +case 5458: { // glGetAttribLocation GLuint *program = (GLuint *) bp; bp += 4; GLchar *name = (GLchar *) bp; int nameLen = strlen((char *)name); bp += nameLen+1+((8-((1+nameLen+4)%8))%8); @@ -3445,8 +3445,8 @@ case 5458: { // glGetAttribLocation rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5459: { // glGetProgramiv +}; break; +case 5459: { // glGetProgramiv GLuint *program = (GLuint *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLint params[1] = {0}; @@ -3457,8 +3457,8 @@ case 5459: { // glGetProgramiv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5460: { // glGetProgramInfoLog +}; break; +case 5460: { // glGetProgramInfoLog GLuint *program = (GLuint *) bp; bp += 4; GLsizei *bufSize = (GLsizei *) bp; bp += 4; GLsizei length[1] = {0}; @@ -3472,8 +3472,8 @@ case 5460: { // glGetProgramInfoLog if (AP != 7 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,7); driver_send_term(WXE_DRV_PORT,caller,rt,AP); driver_free(infoLog); -}; break; -case 5461: { // glGetShaderiv +}; break; +case 5461: { // glGetShaderiv GLuint *shader = (GLuint *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLint params[1] = {0}; @@ -3484,8 +3484,8 @@ case 5461: { // glGetShaderiv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5462: { // glGetShaderInfoLog +}; break; +case 5462: { // glGetShaderInfoLog GLuint *shader = (GLuint *) bp; bp += 4; GLsizei *bufSize = (GLsizei *) bp; bp += 4; GLsizei length[1] = {0}; @@ -3499,8 +3499,8 @@ case 5462: { // glGetShaderInfoLog if (AP != 7 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,7); driver_send_term(WXE_DRV_PORT,caller,rt,AP); driver_free(infoLog); -}; break; -case 5463: { // glGetShaderSource +}; break; +case 5463: { // glGetShaderSource GLuint *shader = (GLuint *) bp; bp += 4; GLsizei *bufSize = (GLsizei *) bp; bp += 4; GLsizei length[1] = {0}; @@ -3514,8 +3514,8 @@ case 5463: { // glGetShaderSource if (AP != 7 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,7); driver_send_term(WXE_DRV_PORT,caller,rt,AP); driver_free(source); -}; break; -case 5464: { // glGetUniformLocation +}; break; +case 5464: { // glGetUniformLocation GLuint *program = (GLuint *) bp; bp += 4; GLchar *name = (GLchar *) bp; int nameLen = strlen((char *)name); bp += nameLen+1+((8-((1+nameLen+4)%8))%8); @@ -3526,8 +3526,8 @@ case 5464: { // glGetUniformLocation rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5465: { // glGetUniformfv +}; break; +case 5465: { // glGetUniformfv GLuint *program = (GLuint *) bp; bp += 4; GLint *location = (GLint *) bp; bp += 4; GLfloat params[16] = {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}; @@ -3556,8 +3556,8 @@ case 5465: { // glGetUniformfv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 38 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,38); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5466: { // glGetUniformiv +}; break; +case 5466: { // glGetUniformiv GLuint *program = (GLuint *) bp; bp += 4; GLint *location = (GLint *) bp; bp += 4; GLint params[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; @@ -3585,8 +3585,8 @@ case 5466: { // glGetUniformiv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 38 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,38); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5467: { // glGetVertexAttribdv +}; break; +case 5467: { // glGetVertexAttribdv GLuint *index = (GLuint *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLdouble params[4] = {0.0,0.0,0.0,0.0}; @@ -3602,8 +3602,8 @@ case 5467: { // glGetVertexAttribdv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5468: { // glGetVertexAttribfv +}; break; +case 5468: { // glGetVertexAttribfv GLuint *index = (GLuint *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLfloat params[4] = {0.0,0.0,0.0,0.0}; @@ -3620,8 +3620,8 @@ case 5468: { // glGetVertexAttribfv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5469: { // glGetVertexAttribiv +}; break; +case 5469: { // glGetVertexAttribiv GLuint *index = (GLuint *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLint params[4] = {0,0,0,0}; @@ -3637,8 +3637,8 @@ case 5469: { // glGetVertexAttribiv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5470: { // glIsProgram +}; break; +case 5470: { // glIsProgram GLuint *program = (GLuint *) bp; bp += 4; GLboolean result = weglIsProgram(*program); int AP = 0; ErlDrvTermData rt[6]; @@ -3647,8 +3647,8 @@ case 5470: { // glIsProgram rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5471: { // glIsShader +}; break; +case 5471: { // glIsShader GLuint *shader = (GLuint *) bp; bp += 4; GLboolean result = weglIsShader(*shader); int AP = 0; ErlDrvTermData rt[6]; @@ -3657,275 +3657,275 @@ case 5471: { // glIsShader rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5472: { // glLinkProgram +}; break; +case 5472: { // glLinkProgram GLuint *program = (GLuint *) bp; bp += 4; weglLinkProgram(*program); -}; break; -case 5473: { // glShaderSource +}; break; +case 5473: { // glShaderSource GLuint *shader = (GLuint *) bp; bp += 4; int * stringLen = (int *) bp; bp += 4; int * stringTotSize = (int *) bp; bp += 4; GLchar **string; - string = (GLchar **) driver_alloc(sizeof(GLchar *) * *stringLen); + string = (GLchar **) driver_alloc(sizeof(GLchar *) * *stringLen); for(int i=0;i<*stringLen;i++) { string[i] = (GLchar *) bp; bp += 1+strlen(bp);}; bp += (8 - ((0 + *stringTotSize) % 8)) % 8; weglShaderSource(*shader,*stringLen,(const GLchar **) string,NULL); driver_free(string); -}; break; -case 5474: { // glUseProgram +}; break; +case 5474: { // glUseProgram GLuint *program = (GLuint *) bp; bp += 4; weglUseProgram(*program); -}; break; -case 5475: { // glUniform1f +}; break; +case 5475: { // glUniform1f GLint *location = (GLint *) bp; bp += 4; GLfloat *v0 = (GLfloat *) bp; bp += 4; weglUniform1f(*location,*v0); -}; break; -case 5476: { // glUniform2f +}; break; +case 5476: { // glUniform2f GLint *location = (GLint *) bp; bp += 4; GLfloat *v0 = (GLfloat *) bp; bp += 4; GLfloat *v1 = (GLfloat *) bp; bp += 4; weglUniform2f(*location,*v0,*v1); -}; break; -case 5477: { // glUniform3f +}; break; +case 5477: { // glUniform3f GLint *location = (GLint *) bp; bp += 4; GLfloat *v0 = (GLfloat *) bp; bp += 4; GLfloat *v1 = (GLfloat *) bp; bp += 4; GLfloat *v2 = (GLfloat *) bp; bp += 4; weglUniform3f(*location,*v0,*v1,*v2); -}; break; -case 5478: { // glUniform4f +}; break; +case 5478: { // glUniform4f GLint *location = (GLint *) bp; bp += 4; GLfloat *v0 = (GLfloat *) bp; bp += 4; GLfloat *v1 = (GLfloat *) bp; bp += 4; GLfloat *v2 = (GLfloat *) bp; bp += 4; GLfloat *v3 = (GLfloat *) bp; bp += 4; weglUniform4f(*location,*v0,*v1,*v2,*v3); -}; break; -case 5479: { // glUniform1i +}; break; +case 5479: { // glUniform1i GLint *location = (GLint *) bp; bp += 4; GLint *v0 = (GLint *) bp; bp += 4; weglUniform1i(*location,*v0); -}; break; -case 5480: { // glUniform2i +}; break; +case 5480: { // glUniform2i GLint *location = (GLint *) bp; bp += 4; GLint *v0 = (GLint *) bp; bp += 4; GLint *v1 = (GLint *) bp; bp += 4; weglUniform2i(*location,*v0,*v1); -}; break; -case 5481: { // glUniform3i +}; break; +case 5481: { // glUniform3i GLint *location = (GLint *) bp; bp += 4; GLint *v0 = (GLint *) bp; bp += 4; GLint *v1 = (GLint *) bp; bp += 4; GLint *v2 = (GLint *) bp; bp += 4; weglUniform3i(*location,*v0,*v1,*v2); -}; break; -case 5482: { // glUniform4i +}; break; +case 5482: { // glUniform4i GLint *location = (GLint *) bp; bp += 4; GLint *v0 = (GLint *) bp; bp += 4; GLint *v1 = (GLint *) bp; bp += 4; GLint *v2 = (GLint *) bp; bp += 4; GLint *v3 = (GLint *) bp; bp += 4; weglUniform4i(*location,*v0,*v1,*v2,*v3); -}; break; -case 5483: { // glUniform1fv +}; break; +case 5483: { // glUniform1fv GLint *location = (GLint *) bp; bp += 4; int * valueLen = (int *) bp; bp += 4; GLfloat * value = (GLfloat *) bp; bp += (8-((*valueLen*4+0)%8))%8; weglUniform1fv(*location,*valueLen,value); -}; break; -case 5484: { // glUniform2fv +}; break; +case 5484: { // glUniform2fv GLint *location = (GLint *) bp; bp += 4; int *valueLen = (int *) bp; bp += 4; GLfloat * value = (GLfloat *) bp; bp += *valueLen*8; weglUniform2fv(*location,*valueLen,value); -}; break; -case 5485: { // glUniform3fv +}; break; +case 5485: { // glUniform3fv GLint *location = (GLint *) bp; bp += 4; int *valueLen = (int *) bp; bp += 4; GLfloat * value = (GLfloat *) bp; bp += *valueLen*12; weglUniform3fv(*location,*valueLen,value); -}; break; -case 5486: { // glUniform4fv +}; break; +case 5486: { // glUniform4fv GLint *location = (GLint *) bp; bp += 4; int *valueLen = (int *) bp; bp += 4; GLfloat * value = (GLfloat *) bp; bp += *valueLen*16; weglUniform4fv(*location,*valueLen,value); -}; break; -case 5487: { // glUniform1iv +}; break; +case 5487: { // glUniform1iv GLint *location = (GLint *) bp; bp += 4; int * valueLen = (int *) bp; bp += 4; GLint * value = (GLint *) bp; bp += (8-((*valueLen*4+0)%8))%8; weglUniform1iv(*location,*valueLen,value); -}; break; -case 5488: { // glUniform2iv +}; break; +case 5488: { // glUniform2iv GLint *location = (GLint *) bp; bp += 4; int *valueLen = (int *) bp; bp += 4; GLint * value = (GLint *) bp; bp += *valueLen*8; weglUniform2iv(*location,*valueLen,value); -}; break; -case 5489: { // glUniform3iv +}; break; +case 5489: { // glUniform3iv GLint *location = (GLint *) bp; bp += 4; int *valueLen = (int *) bp; bp += 4; GLint * value = (GLint *) bp; bp += *valueLen*12; weglUniform3iv(*location,*valueLen,value); -}; break; -case 5490: { // glUniform4iv +}; break; +case 5490: { // glUniform4iv GLint *location = (GLint *) bp; bp += 4; int *valueLen = (int *) bp; bp += 4; GLint * value = (GLint *) bp; bp += *valueLen*16; weglUniform4iv(*location,*valueLen,value); -}; break; -case 5491: { // glUniformMatrix2fv +}; break; +case 5491: { // glUniformMatrix2fv GLint *location = (GLint *) bp; bp += 4; GLboolean *transpose = (GLboolean *) bp; bp += 1; bp += 3; int *valueLen = (int *) bp; bp += 4; GLfloat * value = (GLfloat *) bp; bp += *valueLen*16; weglUniformMatrix2fv(*location,*valueLen,*transpose,value); -}; break; -case 5492: { // glUniformMatrix3fv +}; break; +case 5492: { // glUniformMatrix3fv GLint *location = (GLint *) bp; bp += 4; GLboolean *transpose = (GLboolean *) bp; bp += 1; bp += 3; int *valueLen = (int *) bp; bp += 4; GLfloat * value = (GLfloat *) bp; bp += *valueLen*36; weglUniformMatrix3fv(*location,*valueLen,*transpose,value); -}; break; -case 5493: { // glUniformMatrix4fv +}; break; +case 5493: { // glUniformMatrix4fv GLint *location = (GLint *) bp; bp += 4; GLboolean *transpose = (GLboolean *) bp; bp += 1; bp += 3; int *valueLen = (int *) bp; bp += 4; GLfloat * value = (GLfloat *) bp; bp += *valueLen*64; weglUniformMatrix4fv(*location,*valueLen,*transpose,value); -}; break; -case 5494: { // glValidateProgram +}; break; +case 5494: { // glValidateProgram GLuint *program = (GLuint *) bp; bp += 4; weglValidateProgram(*program); -}; break; -case 5495: { // glVertexAttrib1dv +}; break; +case 5495: { // glVertexAttrib1dv GLuint *index = (GLuint *) bp; bp += 4; bp += 4; GLdouble *v = (GLdouble *) bp; bp += 8; weglVertexAttrib1dv(*index,v); -}; break; -case 5496: { // glVertexAttrib1fv +}; break; +case 5496: { // glVertexAttrib1fv GLuint *index = (GLuint *) bp; bp += 4; GLfloat *v = (GLfloat *) bp; bp += 4; weglVertexAttrib1fv(*index,v); -}; break; -case 5497: { // glVertexAttrib1sv +}; break; +case 5497: { // glVertexAttrib1sv GLuint *index = (GLuint *) bp; bp += 4; GLshort *v = (GLshort *) bp; bp += 2; weglVertexAttrib1sv(*index,v); -}; break; -case 5498: { // glVertexAttrib2dv +}; break; +case 5498: { // glVertexAttrib2dv GLuint *index = (GLuint *) bp; bp += 4; bp += 4; GLdouble *v = (GLdouble *) bp; bp += 8; weglVertexAttrib2dv(*index,v); -}; break; -case 5499: { // glVertexAttrib2fv +}; break; +case 5499: { // glVertexAttrib2fv GLuint *index = (GLuint *) bp; bp += 4; GLfloat *v = (GLfloat *) bp; bp += 4; weglVertexAttrib2fv(*index,v); -}; break; -case 5500: { // glVertexAttrib2sv +}; break; +case 5500: { // glVertexAttrib2sv GLuint *index = (GLuint *) bp; bp += 4; GLshort *v = (GLshort *) bp; bp += 2; weglVertexAttrib2sv(*index,v); -}; break; -case 5501: { // glVertexAttrib3dv +}; break; +case 5501: { // glVertexAttrib3dv GLuint *index = (GLuint *) bp; bp += 4; bp += 4; GLdouble *v = (GLdouble *) bp; bp += 8; weglVertexAttrib3dv(*index,v); -}; break; -case 5502: { // glVertexAttrib3fv +}; break; +case 5502: { // glVertexAttrib3fv GLuint *index = (GLuint *) bp; bp += 4; GLfloat *v = (GLfloat *) bp; bp += 4; weglVertexAttrib3fv(*index,v); -}; break; -case 5503: { // glVertexAttrib3sv +}; break; +case 5503: { // glVertexAttrib3sv GLuint *index = (GLuint *) bp; bp += 4; GLshort *v = (GLshort *) bp; bp += 2; weglVertexAttrib3sv(*index,v); -}; break; -case 5504: { // glVertexAttrib4Nbv +}; break; +case 5504: { // glVertexAttrib4Nbv GLuint *index = (GLuint *) bp; bp += 4; GLbyte * v = (GLbyte *) bp; bp += 4; weglVertexAttrib4Nbv(*index,v); -}; break; -case 5505: { // glVertexAttrib4Niv +}; break; +case 5505: { // glVertexAttrib4Niv GLuint *index = (GLuint *) bp; bp += 4; GLint * v = (GLint *) bp; bp += 16; weglVertexAttrib4Niv(*index,v); -}; break; -case 5506: { // glVertexAttrib4Nsv +}; break; +case 5506: { // glVertexAttrib4Nsv GLuint *index = (GLuint *) bp; bp += 4; GLshort * v = (GLshort *) bp; bp += 8; weglVertexAttrib4Nsv(*index,v); -}; break; -case 5507: { // glVertexAttrib4Nubv +}; break; +case 5507: { // glVertexAttrib4Nubv GLuint *index = (GLuint *) bp; bp += 4; GLubyte * v = (GLubyte *) bp; bp += 4; weglVertexAttrib4Nubv(*index,v); -}; break; -case 5508: { // glVertexAttrib4Nuiv +}; break; +case 5508: { // glVertexAttrib4Nuiv GLuint *index = (GLuint *) bp; bp += 4; GLuint * v = (GLuint *) bp; bp += 16; weglVertexAttrib4Nuiv(*index,v); -}; break; -case 5509: { // glVertexAttrib4Nusv +}; break; +case 5509: { // glVertexAttrib4Nusv GLuint *index = (GLuint *) bp; bp += 4; GLushort * v = (GLushort *) bp; bp += 8; weglVertexAttrib4Nusv(*index,v); -}; break; -case 5510: { // glVertexAttrib4bv +}; break; +case 5510: { // glVertexAttrib4bv GLuint *index = (GLuint *) bp; bp += 4; GLbyte * v = (GLbyte *) bp; bp += 4; weglVertexAttrib4bv(*index,v); -}; break; -case 5511: { // glVertexAttrib4dv +}; break; +case 5511: { // glVertexAttrib4dv GLuint *index = (GLuint *) bp; bp += 4; bp += 4; GLdouble * v = (GLdouble *) bp; bp += 32; weglVertexAttrib4dv(*index,v); -}; break; -case 5512: { // glVertexAttrib4fv +}; break; +case 5512: { // glVertexAttrib4fv GLuint *index = (GLuint *) bp; bp += 4; GLfloat * v = (GLfloat *) bp; bp += 16; weglVertexAttrib4fv(*index,v); -}; break; -case 5513: { // glVertexAttrib4iv +}; break; +case 5513: { // glVertexAttrib4iv GLuint *index = (GLuint *) bp; bp += 4; GLint * v = (GLint *) bp; bp += 16; weglVertexAttrib4iv(*index,v); -}; break; -case 5514: { // glVertexAttrib4sv +}; break; +case 5514: { // glVertexAttrib4sv GLuint *index = (GLuint *) bp; bp += 4; GLshort * v = (GLshort *) bp; bp += 8; weglVertexAttrib4sv(*index,v); -}; break; -case 5515: { // glVertexAttrib4ubv +}; break; +case 5515: { // glVertexAttrib4ubv GLuint *index = (GLuint *) bp; bp += 4; GLubyte * v = (GLubyte *) bp; bp += 4; weglVertexAttrib4ubv(*index,v); -}; break; -case 5516: { // glVertexAttrib4uiv +}; break; +case 5516: { // glVertexAttrib4uiv GLuint *index = (GLuint *) bp; bp += 4; GLuint * v = (GLuint *) bp; bp += 16; weglVertexAttrib4uiv(*index,v); -}; break; -case 5517: { // glVertexAttrib4usv +}; break; +case 5517: { // glVertexAttrib4usv GLuint *index = (GLuint *) bp; bp += 4; GLushort * v = (GLushort *) bp; bp += 8; weglVertexAttrib4usv(*index,v); -}; break; -case 5518: { // glVertexAttribPointer +}; break; +case 5518: { // glVertexAttribPointer GLuint *index = (GLuint *) bp; bp += 4; GLint *size = (GLint *) bp; bp += 4; GLenum *type = (GLenum *) bp; bp += 4; @@ -3934,8 +3934,8 @@ case 5518: { // glVertexAttribPointer GLsizei *stride = (GLsizei *) bp; bp += 4; GLvoid *pointer = (GLvoid *) * (int *) bp; bp += 4; weglVertexAttribPointer(*index,*size,*type,*normalized,*stride,pointer); -}; break; -case 5519: { // glVertexAttribPointer +}; break; +case 5519: { // glVertexAttribPointer GLuint *index = (GLuint *) bp; bp += 4; GLint *size = (GLint *) bp; bp += 4; GLenum *type = (GLenum *) bp; bp += 4; @@ -3944,64 +3944,64 @@ case 5519: { // glVertexAttribPointer GLsizei *stride = (GLsizei *) bp; bp += 4; GLvoid *pointer = (GLvoid *) bins[0]->base; weglVertexAttribPointer(*index,*size,*type,*normalized,*stride,pointer); -}; break; -case 5520: { // glUniformMatrix2x3fv +}; break; +case 5520: { // glUniformMatrix2x3fv GLint *location = (GLint *) bp; bp += 4; GLboolean *transpose = (GLboolean *) bp; bp += 1; bp += 3; int *valueLen = (int *) bp; bp += 4; GLfloat * value = (GLfloat *) bp; bp += *valueLen*24; weglUniformMatrix2x3fv(*location,*valueLen,*transpose,value); -}; break; -case 5521: { // glUniformMatrix3x2fv +}; break; +case 5521: { // glUniformMatrix3x2fv GLint *location = (GLint *) bp; bp += 4; GLboolean *transpose = (GLboolean *) bp; bp += 1; bp += 3; int *valueLen = (int *) bp; bp += 4; GLfloat * value = (GLfloat *) bp; bp += *valueLen*24; weglUniformMatrix3x2fv(*location,*valueLen,*transpose,value); -}; break; -case 5522: { // glUniformMatrix2x4fv +}; break; +case 5522: { // glUniformMatrix2x4fv GLint *location = (GLint *) bp; bp += 4; GLboolean *transpose = (GLboolean *) bp; bp += 1; bp += 3; int *valueLen = (int *) bp; bp += 4; GLfloat * value = (GLfloat *) bp; bp += *valueLen*32; weglUniformMatrix2x4fv(*location,*valueLen,*transpose,value); -}; break; -case 5523: { // glUniformMatrix4x2fv +}; break; +case 5523: { // glUniformMatrix4x2fv GLint *location = (GLint *) bp; bp += 4; GLboolean *transpose = (GLboolean *) bp; bp += 1; bp += 3; int *valueLen = (int *) bp; bp += 4; GLfloat * value = (GLfloat *) bp; bp += *valueLen*32; weglUniformMatrix4x2fv(*location,*valueLen,*transpose,value); -}; break; -case 5524: { // glUniformMatrix3x4fv +}; break; +case 5524: { // glUniformMatrix3x4fv GLint *location = (GLint *) bp; bp += 4; GLboolean *transpose = (GLboolean *) bp; bp += 1; bp += 3; int *valueLen = (int *) bp; bp += 4; GLfloat * value = (GLfloat *) bp; bp += *valueLen*48; weglUniformMatrix3x4fv(*location,*valueLen,*transpose,value); -}; break; -case 5525: { // glUniformMatrix4x3fv +}; break; +case 5525: { // glUniformMatrix4x3fv GLint *location = (GLint *) bp; bp += 4; GLboolean *transpose = (GLboolean *) bp; bp += 1; bp += 3; int *valueLen = (int *) bp; bp += 4; GLfloat * value = (GLfloat *) bp; bp += *valueLen*48; weglUniformMatrix4x3fv(*location,*valueLen,*transpose,value); -}; break; -case 5526: { // glColorMaski +}; break; +case 5526: { // glColorMaski GLuint *index = (GLuint *) bp; bp += 4; GLboolean *r = (GLboolean *) bp; bp += 1; GLboolean *g = (GLboolean *) bp; bp += 1; GLboolean *b = (GLboolean *) bp; bp += 1; GLboolean *a = (GLboolean *) bp; bp += 1; weglColorMaski(*index,*r,*g,*b,*a); -}; break; -case 5527: { // glGetBooleani_v +}; break; +case 5527: { // glGetBooleani_v GLenum *target = (GLenum *) bp; bp += 4; GLuint *index = (GLuint *) bp; bp += 4; GLboolean data[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; @@ -4029,8 +4029,8 @@ case 5527: { // glGetBooleani_v rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 39 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,39); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5528: { // glGetIntegeri_v +}; break; +case 5528: { // glGetIntegeri_v GLenum *target = (GLenum *) bp; bp += 4; GLuint *index = (GLuint *) bp; bp += 4; GLint data[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; @@ -4058,18 +4058,18 @@ case 5528: { // glGetIntegeri_v rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 39 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,39); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5529: { // glEnablei +}; break; +case 5529: { // glEnablei GLenum *target = (GLenum *) bp; bp += 4; GLuint *index = (GLuint *) bp; bp += 4; weglEnablei(*target,*index); -}; break; -case 5530: { // glDisablei +}; break; +case 5530: { // glDisablei GLenum *target = (GLenum *) bp; bp += 4; GLuint *index = (GLuint *) bp; bp += 4; weglDisablei(*target,*index); -}; break; -case 5531: { // glIsEnabledi +}; break; +case 5531: { // glIsEnabledi GLenum *target = (GLenum *) bp; bp += 4; GLuint *index = (GLuint *) bp; bp += 4; GLboolean result = weglIsEnabledi(*target,*index); @@ -4079,15 +4079,15 @@ case 5531: { // glIsEnabledi rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5532: { // glBeginTransformFeedback +}; break; +case 5532: { // glBeginTransformFeedback GLenum *primitiveMode = (GLenum *) bp; bp += 4; weglBeginTransformFeedback(*primitiveMode); -}; break; -case 5533: { // glEndTransformFeedback +}; break; +case 5533: { // glEndTransformFeedback weglEndTransformFeedback(); -}; break; -case 5534: { // glBindBufferRange +}; break; +case 5534: { // glBindBufferRange GLenum *target = (GLenum *) bp; bp += 4; GLuint *index = (GLuint *) bp; bp += 4; GLuint *buffer = (GLuint *) bp; bp += 4; @@ -4095,27 +4095,27 @@ case 5534: { // glBindBufferRange GLintptr offset = (GLintptr) * (GLuint64EXT *) bp; bp += 8; GLsizeiptr size = (GLsizeiptr) * (GLuint64EXT *) bp; bp += 8; weglBindBufferRange(*target,*index,*buffer,offset,size); -}; break; -case 5535: { // glBindBufferBase +}; break; +case 5535: { // glBindBufferBase GLenum *target = (GLenum *) bp; bp += 4; GLuint *index = (GLuint *) bp; bp += 4; GLuint *buffer = (GLuint *) bp; bp += 4; weglBindBufferBase(*target,*index,*buffer); -}; break; -case 5536: { // glTransformFeedbackVaryings +}; break; +case 5536: { // glTransformFeedbackVaryings GLuint *program = (GLuint *) bp; bp += 4; int * varyingsLen = (int *) bp; bp += 4; int * varyingsTotSize = (int *) bp; bp += 4; GLchar **varyings; - varyings = (GLchar **) driver_alloc(sizeof(GLchar *) * *varyingsLen); + varyings = (GLchar **) driver_alloc(sizeof(GLchar *) * *varyingsLen); for(int i=0;i<*varyingsLen;i++) { varyings[i] = (GLchar *) bp; bp += 1+strlen(bp);}; bp += (8 - ((0 + *varyingsTotSize) % 8)) % 8; GLenum *bufferMode = (GLenum *) bp; bp += 4; weglTransformFeedbackVaryings(*program,*varyingsLen,(const GLchar **) varyings,*bufferMode); driver_free(varyings); -}; break; -case 5537: { // glGetTransformFeedbackVarying +}; break; +case 5537: { // glGetTransformFeedbackVarying GLuint *program = (GLuint *) bp; bp += 4; GLuint *index = (GLuint *) bp; bp += 4; GLsizei *bufSize = (GLsizei *) bp; bp += 4; @@ -4135,37 +4135,37 @@ case 5537: { // glGetTransformFeedbackVarying if (AP != 13 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,13); driver_send_term(WXE_DRV_PORT,caller,rt,AP); driver_free(name); -}; break; -case 5538: { // glClampColor +}; break; +case 5538: { // glClampColor GLenum *target = (GLenum *) bp; bp += 4; GLenum *clamp = (GLenum *) bp; bp += 4; weglClampColor(*target,*clamp); -}; break; -case 5539: { // glBeginConditionalRender +}; break; +case 5539: { // glBeginConditionalRender GLuint *id = (GLuint *) bp; bp += 4; GLenum *mode = (GLenum *) bp; bp += 4; weglBeginConditionalRender(*id,*mode); -}; break; -case 5540: { // glEndConditionalRender +}; break; +case 5540: { // glEndConditionalRender weglEndConditionalRender(); -}; break; -case 5541: { // glVertexAttribIPointer +}; break; +case 5541: { // glVertexAttribIPointer GLuint *index = (GLuint *) bp; bp += 4; GLint *size = (GLint *) bp; bp += 4; GLenum *type = (GLenum *) bp; bp += 4; GLsizei *stride = (GLsizei *) bp; bp += 4; GLvoid *pointer = (GLvoid *) * (int *) bp; bp += 4; weglVertexAttribIPointer(*index,*size,*type,*stride,pointer); -}; break; -case 5542: { // glVertexAttribIPointer +}; break; +case 5542: { // glVertexAttribIPointer GLuint *index = (GLuint *) bp; bp += 4; GLint *size = (GLint *) bp; bp += 4; GLenum *type = (GLenum *) bp; bp += 4; GLsizei *stride = (GLsizei *) bp; bp += 4; GLvoid *pointer = (GLvoid *) bins[0]->base; weglVertexAttribIPointer(*index,*size,*type,*stride,pointer); -}; break; -case 5543: { // glGetVertexAttribIiv +}; break; +case 5543: { // glGetVertexAttribIiv GLuint *index = (GLuint *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLint params[4] = {0,0,0,0}; @@ -4181,8 +4181,8 @@ case 5543: { // glGetVertexAttribIiv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5544: { // glGetVertexAttribIuiv +}; break; +case 5544: { // glGetVertexAttribIuiv GLuint *index = (GLuint *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLuint params[4] = {0,0,0,0}; @@ -4198,8 +4198,8 @@ case 5544: { // glGetVertexAttribIuiv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5545: { // glGetUniformuiv +}; break; +case 5545: { // glGetUniformuiv GLuint *program = (GLuint *) bp; bp += 4; GLint *location = (GLint *) bp; bp += 4; GLuint params[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; @@ -4227,15 +4227,15 @@ case 5545: { // glGetUniformuiv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 38 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,38); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5546: { // glBindFragDataLocation +}; break; +case 5546: { // glBindFragDataLocation GLuint *program = (GLuint *) bp; bp += 4; GLuint *color = (GLuint *) bp; bp += 4; GLchar *name = (GLchar *) bp; int nameLen = strlen((char *)name); bp += nameLen+1+((8-((1+nameLen+0)%8))%8); weglBindFragDataLocation(*program,*color,name); -}; break; -case 5547: { // glGetFragDataLocation +}; break; +case 5547: { // glGetFragDataLocation GLuint *program = (GLuint *) bp; bp += 4; GLchar *name = (GLchar *) bp; int nameLen = strlen((char *)name); bp += nameLen+1+((8-((1+nameLen+4)%8))%8); @@ -4246,72 +4246,72 @@ case 5547: { // glGetFragDataLocation rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5548: { // glUniform1ui +}; break; +case 5548: { // glUniform1ui GLint *location = (GLint *) bp; bp += 4; GLuint *v0 = (GLuint *) bp; bp += 4; weglUniform1ui(*location,*v0); -}; break; -case 5549: { // glUniform2ui +}; break; +case 5549: { // glUniform2ui GLint *location = (GLint *) bp; bp += 4; GLuint *v0 = (GLuint *) bp; bp += 4; GLuint *v1 = (GLuint *) bp; bp += 4; weglUniform2ui(*location,*v0,*v1); -}; break; -case 5550: { // glUniform3ui +}; break; +case 5550: { // glUniform3ui GLint *location = (GLint *) bp; bp += 4; GLuint *v0 = (GLuint *) bp; bp += 4; GLuint *v1 = (GLuint *) bp; bp += 4; GLuint *v2 = (GLuint *) bp; bp += 4; weglUniform3ui(*location,*v0,*v1,*v2); -}; break; -case 5551: { // glUniform4ui +}; break; +case 5551: { // glUniform4ui GLint *location = (GLint *) bp; bp += 4; GLuint *v0 = (GLuint *) bp; bp += 4; GLuint *v1 = (GLuint *) bp; bp += 4; GLuint *v2 = (GLuint *) bp; bp += 4; GLuint *v3 = (GLuint *) bp; bp += 4; weglUniform4ui(*location,*v0,*v1,*v2,*v3); -}; break; -case 5552: { // glUniform1uiv +}; break; +case 5552: { // glUniform1uiv GLint *location = (GLint *) bp; bp += 4; int * valueLen = (int *) bp; bp += 4; GLuint * value = (GLuint *) bp; bp += (8-((*valueLen*4+0)%8))%8; weglUniform1uiv(*location,*valueLen,value); -}; break; -case 5553: { // glUniform2uiv +}; break; +case 5553: { // glUniform2uiv GLint *location = (GLint *) bp; bp += 4; int *valueLen = (int *) bp; bp += 4; GLuint * value = (GLuint *) bp; bp += *valueLen*8; weglUniform2uiv(*location,*valueLen,value); -}; break; -case 5554: { // glUniform3uiv +}; break; +case 5554: { // glUniform3uiv GLint *location = (GLint *) bp; bp += 4; int *valueLen = (int *) bp; bp += 4; GLuint * value = (GLuint *) bp; bp += *valueLen*12; weglUniform3uiv(*location,*valueLen,value); -}; break; -case 5555: { // glUniform4uiv +}; break; +case 5555: { // glUniform4uiv GLint *location = (GLint *) bp; bp += 4; int *valueLen = (int *) bp; bp += 4; GLuint * value = (GLuint *) bp; bp += *valueLen*16; weglUniform4uiv(*location,*valueLen,value); -}; break; -case 5556: { // glTexParameterIiv +}; break; +case 5556: { // glTexParameterIiv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; int *paramsLen = (int *) bp; bp += 4; GLint *params = (GLint *) bp; bp += *paramsLen*4+((*paramsLen)+1)%2*4; weglTexParameterIiv(*target,*pname,params); -}; break; -case 5557: { // glTexParameterIuiv +}; break; +case 5557: { // glTexParameterIuiv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; int *paramsLen = (int *) bp; bp += 4; GLuint *params = (GLuint *) bp; bp += *paramsLen*4+((*paramsLen)+1)%2*4; weglTexParameterIuiv(*target,*pname,params); -}; break; -case 5558: { // glGetTexParameterIiv +}; break; +case 5558: { // glGetTexParameterIiv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLint params[4] = {0,0,0,0}; @@ -4327,8 +4327,8 @@ case 5558: { // glGetTexParameterIiv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5559: { // glGetTexParameterIuiv +}; break; +case 5559: { // glGetTexParameterIuiv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLuint params[4] = {0,0,0,0}; @@ -4344,36 +4344,36 @@ case 5559: { // glGetTexParameterIuiv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5560: { // glClearBufferiv +}; break; +case 5560: { // glClearBufferiv GLenum *buffer = (GLenum *) bp; bp += 4; GLint *drawbuffer = (GLint *) bp; bp += 4; int *valueLen = (int *) bp; bp += 4; GLint *value = (GLint *) bp; bp += *valueLen*4+((*valueLen)+1)%2*4; weglClearBufferiv(*buffer,*drawbuffer,value); -}; break; -case 5561: { // glClearBufferuiv +}; break; +case 5561: { // glClearBufferuiv GLenum *buffer = (GLenum *) bp; bp += 4; GLint *drawbuffer = (GLint *) bp; bp += 4; int *valueLen = (int *) bp; bp += 4; GLuint *value = (GLuint *) bp; bp += *valueLen*4+((*valueLen)+1)%2*4; weglClearBufferuiv(*buffer,*drawbuffer,value); -}; break; -case 5562: { // glClearBufferfv +}; break; +case 5562: { // glClearBufferfv GLenum *buffer = (GLenum *) bp; bp += 4; GLint *drawbuffer = (GLint *) bp; bp += 4; int *valueLen = (int *) bp; bp += 4; GLfloat *value = (GLfloat *) bp; bp += *valueLen*4+((*valueLen)+1)%2*4; weglClearBufferfv(*buffer,*drawbuffer,value); -}; break; -case 5563: { // glClearBufferfi +}; break; +case 5563: { // glClearBufferfi GLenum *buffer = (GLenum *) bp; bp += 4; GLint *drawbuffer = (GLint *) bp; bp += 4; GLfloat *depth = (GLfloat *) bp; bp += 4; GLint *stencil = (GLint *) bp; bp += 4; weglClearBufferfi(*buffer,*drawbuffer,*depth,*stencil); -}; break; -case 5564: { // glGetStringi +}; break; +case 5564: { // glGetStringi GLenum *name = (GLenum *) bp; bp += 4; GLuint *index = (GLuint *) bp; bp += 4; const GLubyte * result = weglGetStringi(*name,*index); @@ -4383,197 +4383,197 @@ case 5564: { // glGetStringi rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 7 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,7); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5565: { // glVertexAttribI1iv +}; break; +case 5565: { // glVertexAttribI1iv GLuint *index = (GLuint *) bp; bp += 4; GLint *v = (GLint *) bp; bp += 4; weglVertexAttribI1iv(*index,v); -}; break; -case 5566: { // glVertexAttribI2iv +}; break; +case 5566: { // glVertexAttribI2iv GLuint *index = (GLuint *) bp; bp += 4; GLint *v = (GLint *) bp; bp += 4; weglVertexAttribI2iv(*index,v); -}; break; -case 5567: { // glVertexAttribI3iv +}; break; +case 5567: { // glVertexAttribI3iv GLuint *index = (GLuint *) bp; bp += 4; GLint *v = (GLint *) bp; bp += 4; weglVertexAttribI3iv(*index,v); -}; break; -case 5568: { // glVertexAttribI4iv +}; break; +case 5568: { // glVertexAttribI4iv GLuint *index = (GLuint *) bp; bp += 4; GLint * v = (GLint *) bp; bp += 16; weglVertexAttribI4iv(*index,v); -}; break; -case 5569: { // glVertexAttribI1uiv +}; break; +case 5569: { // glVertexAttribI1uiv GLuint *index = (GLuint *) bp; bp += 4; GLuint *v = (GLuint *) bp; bp += 4; weglVertexAttribI1uiv(*index,v); -}; break; -case 5570: { // glVertexAttribI2uiv +}; break; +case 5570: { // glVertexAttribI2uiv GLuint *index = (GLuint *) bp; bp += 4; GLuint *v = (GLuint *) bp; bp += 4; weglVertexAttribI2uiv(*index,v); -}; break; -case 5571: { // glVertexAttribI3uiv +}; break; +case 5571: { // glVertexAttribI3uiv GLuint *index = (GLuint *) bp; bp += 4; GLuint *v = (GLuint *) bp; bp += 4; weglVertexAttribI3uiv(*index,v); -}; break; -case 5572: { // glVertexAttribI4uiv +}; break; +case 5572: { // glVertexAttribI4uiv GLuint *index = (GLuint *) bp; bp += 4; GLuint * v = (GLuint *) bp; bp += 16; weglVertexAttribI4uiv(*index,v); -}; break; -case 5573: { // glVertexAttribI4bv +}; break; +case 5573: { // glVertexAttribI4bv GLuint *index = (GLuint *) bp; bp += 4; GLbyte * v = (GLbyte *) bp; bp += 4; weglVertexAttribI4bv(*index,v); -}; break; -case 5574: { // glVertexAttribI4sv +}; break; +case 5574: { // glVertexAttribI4sv GLuint *index = (GLuint *) bp; bp += 4; GLshort * v = (GLshort *) bp; bp += 8; weglVertexAttribI4sv(*index,v); -}; break; -case 5575: { // glVertexAttribI4ubv +}; break; +case 5575: { // glVertexAttribI4ubv GLuint *index = (GLuint *) bp; bp += 4; GLubyte * v = (GLubyte *) bp; bp += 4; weglVertexAttribI4ubv(*index,v); -}; break; -case 5576: { // glVertexAttribI4usv +}; break; +case 5576: { // glVertexAttribI4usv GLuint *index = (GLuint *) bp; bp += 4; GLushort * v = (GLushort *) bp; bp += 8; weglVertexAttribI4usv(*index,v); -}; break; -case 5577: { // glDrawArraysInstanced +}; break; +case 5577: { // glDrawArraysInstanced GLenum *mode = (GLenum *) bp; bp += 4; GLint *first = (GLint *) bp; bp += 4; GLsizei *count = (GLsizei *) bp; bp += 4; GLsizei *primcount = (GLsizei *) bp; bp += 4; weglDrawArraysInstanced(*mode,*first,*count,*primcount); -}; break; -case 5578: { // glDrawElementsInstanced +}; break; +case 5578: { // glDrawElementsInstanced GLenum *mode = (GLenum *) bp; bp += 4; GLsizei *count = (GLsizei *) bp; bp += 4; GLenum *type = (GLenum *) bp; bp += 4; GLvoid *indices = (GLvoid *) * (int *) bp; bp += 4; GLsizei *primcount = (GLsizei *) bp; bp += 4; weglDrawElementsInstanced(*mode,*count,*type,indices,*primcount); -}; break; -case 5579: { // glDrawElementsInstanced +}; break; +case 5579: { // glDrawElementsInstanced GLenum *mode = (GLenum *) bp; bp += 4; GLsizei *count = (GLsizei *) bp; bp += 4; GLenum *type = (GLenum *) bp; bp += 4; GLvoid *indices = (GLvoid *) bins[0]->base; GLsizei *primcount = (GLsizei *) bp; bp += 4; weglDrawElementsInstanced(*mode,*count,*type,indices,*primcount); -}; break; -case 5580: { // glTexBuffer +}; break; +case 5580: { // glTexBuffer GLenum *target = (GLenum *) bp; bp += 4; GLenum *internalformat = (GLenum *) bp; bp += 4; GLuint *buffer = (GLuint *) bp; bp += 4; weglTexBuffer(*target,*internalformat,*buffer); -}; break; -case 5581: { // glPrimitiveRestartIndex +}; break; +case 5581: { // glPrimitiveRestartIndex GLuint *index = (GLuint *) bp; bp += 4; weglPrimitiveRestartIndex(*index); -}; break; -case 5582: { // glLoadTransposeMatrixfARB +}; break; +case 5582: { // glLoadTransposeMatrixfARB GLfloat * m = (GLfloat *) bp; bp += 64; weglLoadTransposeMatrixfARB(m); -}; break; -case 5583: { // glLoadTransposeMatrixdARB +}; break; +case 5583: { // glLoadTransposeMatrixdARB GLdouble * m = (GLdouble *) bp; bp += 128; weglLoadTransposeMatrixdARB(m); -}; break; -case 5584: { // glMultTransposeMatrixfARB +}; break; +case 5584: { // glMultTransposeMatrixfARB GLfloat * m = (GLfloat *) bp; bp += 64; weglMultTransposeMatrixfARB(m); -}; break; -case 5585: { // glMultTransposeMatrixdARB +}; break; +case 5585: { // glMultTransposeMatrixdARB GLdouble * m = (GLdouble *) bp; bp += 128; weglMultTransposeMatrixdARB(m); -}; break; -case 5586: { // glWeightbvARB +}; break; +case 5586: { // glWeightbvARB int * weightsLen = (int *) bp; bp += 4; GLbyte * weights = (GLbyte *) bp; bp += (8-((*weightsLen*1+4)%8))%8; weglWeightbvARB(*weightsLen,weights); -}; break; -case 5587: { // glWeightsvARB +}; break; +case 5587: { // glWeightsvARB int * weightsLen = (int *) bp; bp += 4; GLshort * weights = (GLshort *) bp; bp += (8-((*weightsLen*2+4)%8))%8; weglWeightsvARB(*weightsLen,weights); -}; break; -case 5588: { // glWeightivARB +}; break; +case 5588: { // glWeightivARB int * weightsLen = (int *) bp; bp += 4; GLint * weights = (GLint *) bp; bp += (8-((*weightsLen*4+4)%8))%8; weglWeightivARB(*weightsLen,weights); -}; break; -case 5589: { // glWeightfvARB +}; break; +case 5589: { // glWeightfvARB int * weightsLen = (int *) bp; bp += 4; GLfloat * weights = (GLfloat *) bp; bp += (8-((*weightsLen*4+4)%8))%8; weglWeightfvARB(*weightsLen,weights); -}; break; -case 5590: { // glWeightdvARB +}; break; +case 5590: { // glWeightdvARB int * weightsLen = (int *) bp; bp += 8; GLdouble * weights = (GLdouble *) bp; bp += (8-((*weightsLen*8+0)%8))%8; weglWeightdvARB(*weightsLen,weights); -}; break; -case 5591: { // glWeightubvARB +}; break; +case 5591: { // glWeightubvARB int * weightsLen = (int *) bp; bp += 4; GLubyte * weights = (GLubyte *) bp; bp += (8-((*weightsLen*1+4)%8))%8; weglWeightubvARB(*weightsLen,weights); -}; break; -case 5592: { // glWeightusvARB +}; break; +case 5592: { // glWeightusvARB int * weightsLen = (int *) bp; bp += 4; GLushort * weights = (GLushort *) bp; bp += (8-((*weightsLen*2+4)%8))%8; weglWeightusvARB(*weightsLen,weights); -}; break; -case 5593: { // glWeightuivARB +}; break; +case 5593: { // glWeightuivARB int * weightsLen = (int *) bp; bp += 4; GLuint * weights = (GLuint *) bp; bp += (8-((*weightsLen*4+4)%8))%8; weglWeightuivARB(*weightsLen,weights); -}; break; -case 5594: { // glVertexBlendARB +}; break; +case 5594: { // glVertexBlendARB GLint *count = (GLint *) bp; bp += 4; weglVertexBlendARB(*count); -}; break; -case 5595: { // glCurrentPaletteMatrixARB +}; break; +case 5595: { // glCurrentPaletteMatrixARB GLint *index = (GLint *) bp; bp += 4; weglCurrentPaletteMatrixARB(*index); -}; break; -case 5596: { // glMatrixIndexubvARB +}; break; +case 5596: { // glMatrixIndexubvARB int * indicesLen = (int *) bp; bp += 4; GLubyte * indices = (GLubyte *) bp; bp += (8-((*indicesLen*1+4)%8))%8; weglMatrixIndexubvARB(*indicesLen,indices); -}; break; -case 5597: { // glMatrixIndexusvARB +}; break; +case 5597: { // glMatrixIndexusvARB int * indicesLen = (int *) bp; bp += 4; GLushort * indices = (GLushort *) bp; bp += (8-((*indicesLen*2+4)%8))%8; weglMatrixIndexusvARB(*indicesLen,indices); -}; break; -case 5598: { // glMatrixIndexuivARB +}; break; +case 5598: { // glMatrixIndexuivARB int * indicesLen = (int *) bp; bp += 4; GLuint * indices = (GLuint *) bp; bp += (8-((*indicesLen*4+4)%8))%8; weglMatrixIndexuivARB(*indicesLen,indices); -}; break; -case 5599: { // glProgramStringARB +}; break; +case 5599: { // glProgramStringARB GLenum *target = (GLenum *) bp; bp += 4; GLenum *format = (GLenum *) bp; bp += 4; GLvoid *string = (GLvoid *) bp; int stringLen = strlen((char *)string); bp += stringLen+1+((8-((1+stringLen+0)%8))%8); weglProgramStringARB(*target,*format,stringLen,string); -}; break; -case 5600: { // glBindProgramARB +}; break; +case 5600: { // glBindProgramARB GLenum *target = (GLenum *) bp; bp += 4; GLuint *program = (GLuint *) bp; bp += 4; weglBindProgramARB(*target,*program); -}; break; -case 5601: { // glDeleteProgramsARB +}; break; +case 5601: { // glDeleteProgramsARB int * programsLen = (int *) bp; bp += 4; GLuint * programs = (GLuint *) bp; bp += (8-((*programsLen*4+4)%8))%8; weglDeleteProgramsARB(*programsLen,programs); -}; break; -case 5602: { // glGenProgramsARB +}; break; +case 5602: { // glGenProgramsARB GLsizei *n = (GLsizei *) bp; bp += 4; GLuint *programs; programs = (GLuint *) driver_alloc(sizeof(GLuint) * *n); @@ -4587,10 +4587,10 @@ case 5602: { // glGenProgramsARB rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 7 + (*n)*2 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,7 + (*n)*2); driver_send_term(WXE_DRV_PORT,caller,rt,AP); - driver_free(rt); + driver_free(rt); driver_free(programs); -}; break; -case 5603: { // glProgramEnvParameter4dARB +}; break; +case 5603: { // glProgramEnvParameter4dARB GLenum *target = (GLenum *) bp; bp += 4; GLuint *index = (GLuint *) bp; bp += 4; GLdouble *x = (GLdouble *) bp; bp += 8; @@ -4598,14 +4598,14 @@ case 5603: { // glProgramEnvParameter4dARB GLdouble *z = (GLdouble *) bp; bp += 8; GLdouble *w = (GLdouble *) bp; bp += 8; weglProgramEnvParameter4dARB(*target,*index,*x,*y,*z,*w); -}; break; -case 5604: { // glProgramEnvParameter4dvARB +}; break; +case 5604: { // glProgramEnvParameter4dvARB GLenum *target = (GLenum *) bp; bp += 4; GLuint *index = (GLuint *) bp; bp += 4; GLdouble * params = (GLdouble *) bp; bp += 32; weglProgramEnvParameter4dvARB(*target,*index,params); -}; break; -case 5605: { // glProgramEnvParameter4fARB +}; break; +case 5605: { // glProgramEnvParameter4fARB GLenum *target = (GLenum *) bp; bp += 4; GLuint *index = (GLuint *) bp; bp += 4; GLfloat *x = (GLfloat *) bp; bp += 4; @@ -4613,14 +4613,14 @@ case 5605: { // glProgramEnvParameter4fARB GLfloat *z = (GLfloat *) bp; bp += 4; GLfloat *w = (GLfloat *) bp; bp += 4; weglProgramEnvParameter4fARB(*target,*index,*x,*y,*z,*w); -}; break; -case 5606: { // glProgramEnvParameter4fvARB +}; break; +case 5606: { // glProgramEnvParameter4fvARB GLenum *target = (GLenum *) bp; bp += 4; GLuint *index = (GLuint *) bp; bp += 4; GLfloat * params = (GLfloat *) bp; bp += 16; weglProgramEnvParameter4fvARB(*target,*index,params); -}; break; -case 5607: { // glProgramLocalParameter4dARB +}; break; +case 5607: { // glProgramLocalParameter4dARB GLenum *target = (GLenum *) bp; bp += 4; GLuint *index = (GLuint *) bp; bp += 4; GLdouble *x = (GLdouble *) bp; bp += 8; @@ -4628,14 +4628,14 @@ case 5607: { // glProgramLocalParameter4dARB GLdouble *z = (GLdouble *) bp; bp += 8; GLdouble *w = (GLdouble *) bp; bp += 8; weglProgramLocalParameter4dARB(*target,*index,*x,*y,*z,*w); -}; break; -case 5608: { // glProgramLocalParameter4dvARB +}; break; +case 5608: { // glProgramLocalParameter4dvARB GLenum *target = (GLenum *) bp; bp += 4; GLuint *index = (GLuint *) bp; bp += 4; GLdouble * params = (GLdouble *) bp; bp += 32; weglProgramLocalParameter4dvARB(*target,*index,params); -}; break; -case 5609: { // glProgramLocalParameter4fARB +}; break; +case 5609: { // glProgramLocalParameter4fARB GLenum *target = (GLenum *) bp; bp += 4; GLuint *index = (GLuint *) bp; bp += 4; GLfloat *x = (GLfloat *) bp; bp += 4; @@ -4643,14 +4643,14 @@ case 5609: { // glProgramLocalParameter4fARB GLfloat *z = (GLfloat *) bp; bp += 4; GLfloat *w = (GLfloat *) bp; bp += 4; weglProgramLocalParameter4fARB(*target,*index,*x,*y,*z,*w); -}; break; -case 5610: { // glProgramLocalParameter4fvARB +}; break; +case 5610: { // glProgramLocalParameter4fvARB GLenum *target = (GLenum *) bp; bp += 4; GLuint *index = (GLuint *) bp; bp += 4; GLfloat * params = (GLfloat *) bp; bp += 16; weglProgramLocalParameter4fvARB(*target,*index,params); -}; break; -case 5611: { // glGetProgramEnvParameterdvARB +}; break; +case 5611: { // glGetProgramEnvParameterdvARB GLenum *target = (GLenum *) bp; bp += 4; GLuint *index = (GLuint *) bp; bp += 4; GLdouble params[4] = {0.0,0.0,0.0,0.0}; @@ -4666,8 +4666,8 @@ case 5611: { // glGetProgramEnvParameterdvARB rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5612: { // glGetProgramEnvParameterfvARB +}; break; +case 5612: { // glGetProgramEnvParameterfvARB GLenum *target = (GLenum *) bp; bp += 4; GLuint *index = (GLuint *) bp; bp += 4; GLfloat params[4] = {0.0,0.0,0.0,0.0}; @@ -4684,8 +4684,8 @@ case 5612: { // glGetProgramEnvParameterfvARB rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5613: { // glGetProgramLocalParameterdvARB +}; break; +case 5613: { // glGetProgramLocalParameterdvARB GLenum *target = (GLenum *) bp; bp += 4; GLuint *index = (GLuint *) bp; bp += 4; GLdouble params[4] = {0.0,0.0,0.0,0.0}; @@ -4701,8 +4701,8 @@ case 5613: { // glGetProgramLocalParameterdvARB rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5614: { // glGetProgramLocalParameterfvARB +}; break; +case 5614: { // glGetProgramLocalParameterfvARB GLenum *target = (GLenum *) bp; bp += 4; GLuint *index = (GLuint *) bp; bp += 4; GLfloat params[4] = {0.0,0.0,0.0,0.0}; @@ -4719,8 +4719,8 @@ case 5614: { // glGetProgramLocalParameterfvARB rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 14 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,14); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5615: { // glGetProgramStringARB +}; break; +case 5615: { // glGetProgramStringARB GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLvoid *string = (GLvoid *) bins[0]->base; @@ -4730,12 +4730,12 @@ case 5615: { // glGetProgramStringARB rt[AP++]=ERL_DRV_ATOM; rt[AP++]=driver_mk_atom((char *) "ok"); rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5616: { // glDeleteObjectARB +}; break; +case 5616: { // glDeleteObjectARB GLhandleARB obj = (GLhandleARB) * (GLuint64EXT *) bp; bp += 8; weglDeleteObjectARB(obj); -}; break; -case 5617: { // glGetHandleARB +}; break; +case 5617: { // glGetHandleARB GLenum *pname = (GLenum *) bp; bp += 4; GLhandleARB result = weglGetHandleARB(*pname); int AP = 0; ErlDrvTermData rt[6]; @@ -4744,13 +4744,13 @@ case 5617: { // glGetHandleARB rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5618: { // glDetachObjectARB +}; break; +case 5618: { // glDetachObjectARB GLhandleARB containerObj = (GLhandleARB) * (GLuint64EXT *) bp; bp += 8; GLhandleARB attachedObj = (GLhandleARB) * (GLuint64EXT *) bp; bp += 8; weglDetachObjectARB(containerObj,attachedObj); -}; break; -case 5619: { // glCreateShaderObjectARB +}; break; +case 5619: { // glCreateShaderObjectARB GLenum *shaderType = (GLenum *) bp; bp += 4; GLhandleARB result = weglCreateShaderObjectARB(*shaderType); int AP = 0; ErlDrvTermData rt[6]; @@ -4759,24 +4759,24 @@ case 5619: { // glCreateShaderObjectARB rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5620: { // glShaderSourceARB +}; break; +case 5620: { // glShaderSourceARB GLhandleARB shaderObj = (GLhandleARB) * (GLuint64EXT *) bp; bp += 8; int * stringLen = (int *) bp; bp += 4; int * stringTotSize = (int *) bp; bp += 4; GLchar **string; - string = (GLchar **) driver_alloc(sizeof(GLchar *) * *stringLen); + string = (GLchar **) driver_alloc(sizeof(GLchar *) * *stringLen); for(int i=0;i<*stringLen;i++) { string[i] = (GLchar *) bp; bp += 1+strlen(bp);}; bp += (8 - ((4 + *stringTotSize) % 8)) % 8; weglShaderSourceARB(shaderObj,*stringLen,(const GLchar **) string,NULL); driver_free(string); -}; break; -case 5621: { // glCompileShaderARB +}; break; +case 5621: { // glCompileShaderARB GLhandleARB shaderObj = (GLhandleARB) * (GLuint64EXT *) bp; bp += 8; weglCompileShaderARB(shaderObj); -}; break; -case 5622: { // glCreateProgramObjectARB +}; break; +case 5622: { // glCreateProgramObjectARB GLhandleARB result = weglCreateProgramObjectARB(); int AP = 0; ErlDrvTermData rt[6]; rt[AP++]=ERL_DRV_ATOM; rt[AP++]=driver_mk_atom((char *) "_wxe_result_"); @@ -4784,25 +4784,25 @@ case 5622: { // glCreateProgramObjectARB rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5623: { // glAttachObjectARB +}; break; +case 5623: { // glAttachObjectARB GLhandleARB containerObj = (GLhandleARB) * (GLuint64EXT *) bp; bp += 8; GLhandleARB obj = (GLhandleARB) * (GLuint64EXT *) bp; bp += 8; weglAttachObjectARB(containerObj,obj); -}; break; -case 5624: { // glLinkProgramARB +}; break; +case 5624: { // glLinkProgramARB GLhandleARB programObj = (GLhandleARB) * (GLuint64EXT *) bp; bp += 8; weglLinkProgramARB(programObj); -}; break; -case 5625: { // glUseProgramObjectARB +}; break; +case 5625: { // glUseProgramObjectARB GLhandleARB programObj = (GLhandleARB) * (GLuint64EXT *) bp; bp += 8; weglUseProgramObjectARB(programObj); -}; break; -case 5626: { // glValidateProgramARB +}; break; +case 5626: { // glValidateProgramARB GLhandleARB programObj = (GLhandleARB) * (GLuint64EXT *) bp; bp += 8; weglValidateProgramARB(programObj); -}; break; -case 5627: { // glGetObjectParameterfvARB +}; break; +case 5627: { // glGetObjectParameterfvARB GLhandleARB obj = (GLhandleARB) * (GLuint64EXT *) bp; bp += 8; GLenum *pname = (GLenum *) bp; bp += 4; GLfloat params[1] = {0.0}; @@ -4814,8 +4814,8 @@ case 5627: { // glGetObjectParameterfvARB rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5628: { // glGetObjectParameterivARB +}; break; +case 5628: { // glGetObjectParameterivARB GLhandleARB obj = (GLhandleARB) * (GLuint64EXT *) bp; bp += 8; GLenum *pname = (GLenum *) bp; bp += 4; GLint params[1] = {0}; @@ -4826,8 +4826,8 @@ case 5628: { // glGetObjectParameterivARB rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5629: { // glGetInfoLogARB +}; break; +case 5629: { // glGetInfoLogARB GLhandleARB obj = (GLhandleARB) * (GLuint64EXT *) bp; bp += 8; GLsizei *maxLength = (GLsizei *) bp; bp += 4; GLsizei length[1] = {0}; @@ -4841,8 +4841,8 @@ case 5629: { // glGetInfoLogARB if (AP != 7 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,7); driver_send_term(WXE_DRV_PORT,caller,rt,AP); driver_free(infoLog); -}; break; -case 5630: { // glGetAttachedObjectsARB +}; break; +case 5630: { // glGetAttachedObjectsARB GLhandleARB containerObj = (GLhandleARB) * (GLuint64EXT *) bp; bp += 8; GLsizei *maxCount = (GLsizei *) bp; bp += 4; GLsizei count[1] = {0}; @@ -4858,10 +4858,10 @@ case 5630: { // glGetAttachedObjectsARB rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 7 + (*count)*2 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,7 + (*count)*2); driver_send_term(WXE_DRV_PORT,caller,rt,AP); - driver_free(rt); + driver_free(rt); driver_free(obj); -}; break; -case 5631: { // glGetUniformLocationARB +}; break; +case 5631: { // glGetUniformLocationARB GLhandleARB programObj = (GLhandleARB) * (GLuint64EXT *) bp; bp += 8; GLchar *name = (GLchar *) bp; int nameLen = strlen((char *)name); bp += nameLen+1+((8-((1+nameLen+0)%8))%8); @@ -4872,8 +4872,8 @@ case 5631: { // glGetUniformLocationARB rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5632: { // glGetActiveUniformARB +}; break; +case 5632: { // glGetActiveUniformARB GLhandleARB programObj = (GLhandleARB) * (GLuint64EXT *) bp; bp += 8; GLuint *index = (GLuint *) bp; bp += 4; GLsizei *maxLength = (GLsizei *) bp; bp += 4; @@ -4893,8 +4893,8 @@ case 5632: { // glGetActiveUniformARB if (AP != 13 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,13); driver_send_term(WXE_DRV_PORT,caller,rt,AP); driver_free(name); -}; break; -case 5633: { // glGetUniformfvARB +}; break; +case 5633: { // glGetUniformfvARB GLhandleARB programObj = (GLhandleARB) * (GLuint64EXT *) bp; bp += 8; GLint *location = (GLint *) bp; bp += 4; GLfloat params[16] = {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0}; @@ -4923,8 +4923,8 @@ case 5633: { // glGetUniformfvARB rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 38 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,38); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5634: { // glGetUniformivARB +}; break; +case 5634: { // glGetUniformivARB GLhandleARB programObj = (GLhandleARB) * (GLuint64EXT *) bp; bp += 8; GLint *location = (GLint *) bp; bp += 4; GLint params[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; @@ -4952,8 +4952,8 @@ case 5634: { // glGetUniformivARB rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 38 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,38); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5635: { // glGetShaderSourceARB +}; break; +case 5635: { // glGetShaderSourceARB GLhandleARB obj = (GLhandleARB) * (GLuint64EXT *) bp; bp += 8; GLsizei *maxLength = (GLsizei *) bp; bp += 4; GLsizei length[1] = {0}; @@ -4967,15 +4967,15 @@ case 5635: { // glGetShaderSourceARB if (AP != 7 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,7); driver_send_term(WXE_DRV_PORT,caller,rt,AP); driver_free(source); -}; break; -case 5636: { // glBindAttribLocationARB +}; break; +case 5636: { // glBindAttribLocationARB GLhandleARB programObj = (GLhandleARB) * (GLuint64EXT *) bp; bp += 8; GLuint *index = (GLuint *) bp; bp += 4; GLchar *name = (GLchar *) bp; int nameLen = strlen((char *)name); bp += nameLen+1+((8-((1+nameLen+4)%8))%8); weglBindAttribLocationARB(programObj,*index,name); -}; break; -case 5637: { // glGetActiveAttribARB +}; break; +case 5637: { // glGetActiveAttribARB GLhandleARB programObj = (GLhandleARB) * (GLuint64EXT *) bp; bp += 8; GLuint *index = (GLuint *) bp; bp += 4; GLsizei *maxLength = (GLsizei *) bp; bp += 4; @@ -4995,8 +4995,8 @@ case 5637: { // glGetActiveAttribARB if (AP != 13 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,13); driver_send_term(WXE_DRV_PORT,caller,rt,AP); driver_free(name); -}; break; -case 5638: { // glGetAttribLocationARB +}; break; +case 5638: { // glGetAttribLocationARB GLhandleARB programObj = (GLhandleARB) * (GLuint64EXT *) bp; bp += 8; GLchar *name = (GLchar *) bp; int nameLen = strlen((char *)name); bp += nameLen+1+((8-((1+nameLen+0)%8))%8); @@ -5007,8 +5007,8 @@ case 5638: { // glGetAttribLocationARB rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5639: { // glIsRenderbuffer +}; break; +case 5639: { // glIsRenderbuffer GLuint *renderbuffer = (GLuint *) bp; bp += 4; GLboolean result = weglIsRenderbuffer(*renderbuffer); int AP = 0; ErlDrvTermData rt[6]; @@ -5017,18 +5017,18 @@ case 5639: { // glIsRenderbuffer rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5640: { // glBindRenderbuffer +}; break; +case 5640: { // glBindRenderbuffer GLenum *target = (GLenum *) bp; bp += 4; GLuint *renderbuffer = (GLuint *) bp; bp += 4; weglBindRenderbuffer(*target,*renderbuffer); -}; break; -case 5641: { // glDeleteRenderbuffers +}; break; +case 5641: { // glDeleteRenderbuffers int * renderbuffersLen = (int *) bp; bp += 4; GLuint * renderbuffers = (GLuint *) bp; bp += (8-((*renderbuffersLen*4+4)%8))%8; weglDeleteRenderbuffers(*renderbuffersLen,renderbuffers); -}; break; -case 5642: { // glGenRenderbuffers +}; break; +case 5642: { // glGenRenderbuffers GLsizei *n = (GLsizei *) bp; bp += 4; GLuint *renderbuffers; renderbuffers = (GLuint *) driver_alloc(sizeof(GLuint) * *n); @@ -5042,17 +5042,17 @@ case 5642: { // glGenRenderbuffers rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 7 + (*n)*2 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,7 + (*n)*2); driver_send_term(WXE_DRV_PORT,caller,rt,AP); - driver_free(rt); + driver_free(rt); driver_free(renderbuffers); -}; break; -case 5643: { // glRenderbufferStorage +}; break; +case 5643: { // glRenderbufferStorage GLenum *target = (GLenum *) bp; bp += 4; GLenum *internalformat = (GLenum *) bp; bp += 4; GLsizei *width = (GLsizei *) bp; bp += 4; GLsizei *height = (GLsizei *) bp; bp += 4; weglRenderbufferStorage(*target,*internalformat,*width,*height); -}; break; -case 5644: { // glGetRenderbufferParameteriv +}; break; +case 5644: { // glGetRenderbufferParameteriv GLenum *target = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLint params[1] = {0}; @@ -5063,8 +5063,8 @@ case 5644: { // glGetRenderbufferParameteriv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5645: { // glIsFramebuffer +}; break; +case 5645: { // glIsFramebuffer GLuint *framebuffer = (GLuint *) bp; bp += 4; GLboolean result = weglIsFramebuffer(*framebuffer); int AP = 0; ErlDrvTermData rt[6]; @@ -5073,18 +5073,18 @@ case 5645: { // glIsFramebuffer rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5646: { // glBindFramebuffer +}; break; +case 5646: { // glBindFramebuffer GLenum *target = (GLenum *) bp; bp += 4; GLuint *framebuffer = (GLuint *) bp; bp += 4; weglBindFramebuffer(*target,*framebuffer); -}; break; -case 5647: { // glDeleteFramebuffers +}; break; +case 5647: { // glDeleteFramebuffers int * framebuffersLen = (int *) bp; bp += 4; GLuint * framebuffers = (GLuint *) bp; bp += (8-((*framebuffersLen*4+4)%8))%8; weglDeleteFramebuffers(*framebuffersLen,framebuffers); -}; break; -case 5648: { // glGenFramebuffers +}; break; +case 5648: { // glGenFramebuffers GLsizei *n = (GLsizei *) bp; bp += 4; GLuint *framebuffers; framebuffers = (GLuint *) driver_alloc(sizeof(GLuint) * *n); @@ -5098,10 +5098,10 @@ case 5648: { // glGenFramebuffers rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 7 + (*n)*2 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,7 + (*n)*2); driver_send_term(WXE_DRV_PORT,caller,rt,AP); - driver_free(rt); + driver_free(rt); driver_free(framebuffers); -}; break; -case 5649: { // glCheckFramebufferStatus +}; break; +case 5649: { // glCheckFramebufferStatus GLenum *target = (GLenum *) bp; bp += 4; GLenum result = weglCheckFramebufferStatus(*target); int AP = 0; ErlDrvTermData rt[6]; @@ -5110,24 +5110,24 @@ case 5649: { // glCheckFramebufferStatus rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5650: { // glFramebufferTexture1D +}; break; +case 5650: { // glFramebufferTexture1D GLenum *target = (GLenum *) bp; bp += 4; GLenum *attachment = (GLenum *) bp; bp += 4; GLenum *textarget = (GLenum *) bp; bp += 4; GLuint *texture = (GLuint *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; weglFramebufferTexture1D(*target,*attachment,*textarget,*texture,*level); -}; break; -case 5651: { // glFramebufferTexture2D +}; break; +case 5651: { // glFramebufferTexture2D GLenum *target = (GLenum *) bp; bp += 4; GLenum *attachment = (GLenum *) bp; bp += 4; GLenum *textarget = (GLenum *) bp; bp += 4; GLuint *texture = (GLuint *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; weglFramebufferTexture2D(*target,*attachment,*textarget,*texture,*level); -}; break; -case 5652: { // glFramebufferTexture3D +}; break; +case 5652: { // glFramebufferTexture3D GLenum *target = (GLenum *) bp; bp += 4; GLenum *attachment = (GLenum *) bp; bp += 4; GLenum *textarget = (GLenum *) bp; bp += 4; @@ -5135,15 +5135,15 @@ case 5652: { // glFramebufferTexture3D GLint *level = (GLint *) bp; bp += 4; GLint *zoffset = (GLint *) bp; bp += 4; weglFramebufferTexture3D(*target,*attachment,*textarget,*texture,*level,*zoffset); -}; break; -case 5653: { // glFramebufferRenderbuffer +}; break; +case 5653: { // glFramebufferRenderbuffer GLenum *target = (GLenum *) bp; bp += 4; GLenum *attachment = (GLenum *) bp; bp += 4; GLenum *renderbuffertarget = (GLenum *) bp; bp += 4; GLuint *renderbuffer = (GLuint *) bp; bp += 4; weglFramebufferRenderbuffer(*target,*attachment,*renderbuffertarget,*renderbuffer); -}; break; -case 5654: { // glGetFramebufferAttachmentParameteriv +}; break; +case 5654: { // glGetFramebufferAttachmentParameteriv GLenum *target = (GLenum *) bp; bp += 4; GLenum *attachment = (GLenum *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; @@ -5155,12 +5155,12 @@ case 5654: { // glGetFramebufferAttachmentParameteriv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5655: { // glGenerateMipmap +}; break; +case 5655: { // glGenerateMipmap GLenum *target = (GLenum *) bp; bp += 4; weglGenerateMipmap(*target); -}; break; -case 5656: { // glBlitFramebuffer +}; break; +case 5656: { // glBlitFramebuffer GLint *srcX0 = (GLint *) bp; bp += 4; GLint *srcY0 = (GLint *) bp; bp += 4; GLint *srcX1 = (GLint *) bp; bp += 4; @@ -5172,66 +5172,66 @@ case 5656: { // glBlitFramebuffer GLbitfield *mask = (GLbitfield *) bp; bp += 4; GLenum *filter = (GLenum *) bp; bp += 4; weglBlitFramebuffer(*srcX0,*srcY0,*srcX1,*srcY1,*dstX0,*dstY0,*dstX1,*dstY1,*mask,*filter); -}; break; -case 5657: { // glRenderbufferStorageMultisample +}; break; +case 5657: { // glRenderbufferStorageMultisample GLenum *target = (GLenum *) bp; bp += 4; GLsizei *samples = (GLsizei *) bp; bp += 4; GLenum *internalformat = (GLenum *) bp; bp += 4; GLsizei *width = (GLsizei *) bp; bp += 4; GLsizei *height = (GLsizei *) bp; bp += 4; weglRenderbufferStorageMultisample(*target,*samples,*internalformat,*width,*height); -}; break; -case 5658: { // glFramebufferTextureLayer +}; break; +case 5658: { // glFramebufferTextureLayer GLenum *target = (GLenum *) bp; bp += 4; GLenum *attachment = (GLenum *) bp; bp += 4; GLuint *texture = (GLuint *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLint *layer = (GLint *) bp; bp += 4; weglFramebufferTextureLayer(*target,*attachment,*texture,*level,*layer); -}; break; -case 5659: { // glProgramParameteriARB +}; break; +case 5659: { // glProgramParameteriARB GLuint *program = (GLuint *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; GLint *value = (GLint *) bp; bp += 4; weglProgramParameteriARB(*program,*pname,*value); -}; break; -case 5660: { // glFramebufferTextureARB +}; break; +case 5660: { // glFramebufferTextureARB GLenum *target = (GLenum *) bp; bp += 4; GLenum *attachment = (GLenum *) bp; bp += 4; GLuint *texture = (GLuint *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; weglFramebufferTextureARB(*target,*attachment,*texture,*level); -}; break; -case 5661: { // glFramebufferTextureFaceARB +}; break; +case 5661: { // glFramebufferTextureFaceARB GLenum *target = (GLenum *) bp; bp += 4; GLenum *attachment = (GLenum *) bp; bp += 4; GLuint *texture = (GLuint *) bp; bp += 4; GLint *level = (GLint *) bp; bp += 4; GLenum *face = (GLenum *) bp; bp += 4; weglFramebufferTextureFaceARB(*target,*attachment,*texture,*level,*face); -}; break; -case 5662: { // glVertexAttribDivisorARB +}; break; +case 5662: { // glVertexAttribDivisorARB GLuint *index = (GLuint *) bp; bp += 4; GLuint *divisor = (GLuint *) bp; bp += 4; weglVertexAttribDivisorARB(*index,*divisor); -}; break; -case 5663: { // glFlushMappedBufferRange +}; break; +case 5663: { // glFlushMappedBufferRange GLenum *target = (GLenum *) bp; bp += 4; bp += 4; GLintptr offset = (GLintptr) * (GLuint64EXT *) bp; bp += 8; GLsizeiptr length = (GLsizeiptr) * (GLuint64EXT *) bp; bp += 8; weglFlushMappedBufferRange(*target,offset,length); -}; break; -case 5664: { // glBindVertexArray +}; break; +case 5664: { // glBindVertexArray GLuint *array = (GLuint *) bp; bp += 4; weglBindVertexArray(*array); -}; break; -case 5665: { // glDeleteVertexArrays +}; break; +case 5665: { // glDeleteVertexArrays int * arraysLen = (int *) bp; bp += 4; GLuint * arrays = (GLuint *) bp; bp += (8-((*arraysLen*4+4)%8))%8; weglDeleteVertexArrays(*arraysLen,arrays); -}; break; -case 5666: { // glGenVertexArrays +}; break; +case 5666: { // glGenVertexArrays GLsizei *n = (GLsizei *) bp; bp += 4; GLuint *arrays; arrays = (GLuint *) driver_alloc(sizeof(GLuint) * *n); @@ -5245,10 +5245,10 @@ case 5666: { // glGenVertexArrays rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 7 + (*n)*2 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,7 + (*n)*2); driver_send_term(WXE_DRV_PORT,caller,rt,AP); - driver_free(rt); + driver_free(rt); driver_free(arrays); -}; break; -case 5667: { // glIsVertexArray +}; break; +case 5667: { // glIsVertexArray GLuint *array = (GLuint *) bp; bp += 4; GLboolean result = weglIsVertexArray(*array); int AP = 0; ErlDrvTermData rt[6]; @@ -5257,13 +5257,13 @@ case 5667: { // glIsVertexArray rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5668: { // glGetUniformIndices +}; break; +case 5668: { // glGetUniformIndices GLuint *program = (GLuint *) bp; bp += 4; int * uniformNamesLen = (int *) bp; bp += 4; int * uniformNamesTotSize = (int *) bp; bp += 4; GLchar **uniformNames; - uniformNames = (GLchar **) driver_alloc(sizeof(GLchar *) * *uniformNamesLen); + uniformNames = (GLchar **) driver_alloc(sizeof(GLchar *) * *uniformNamesLen); for(int i=0;i<*uniformNamesLen;i++) { uniformNames[i] = (GLchar *) bp; bp += 1+strlen(bp);}; bp += (8 - ((0 + *uniformNamesTotSize) % 8)) % 8; @@ -5279,11 +5279,11 @@ case 5668: { // glGetUniformIndices rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 7 + (*uniformNamesLen)*2 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,7 + (*uniformNamesLen)*2); driver_send_term(WXE_DRV_PORT,caller,rt,AP); - driver_free(rt); + driver_free(rt); driver_free(uniformIndices); driver_free(uniformNames); -}; break; -case 5669: { // glGetActiveUniformsiv +}; break; +case 5669: { // glGetActiveUniformsiv GLuint *program = (GLuint *) bp; bp += 4; int * uniformIndicesLen = (int *) bp; bp += 4; GLuint * uniformIndices = (GLuint *) bp; bp += (8-((*uniformIndicesLen*4+0)%8))%8; @@ -5300,10 +5300,10 @@ case 5669: { // glGetActiveUniformsiv rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 7 + (*uniformIndicesLen)*2 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,7 + (*uniformIndicesLen)*2); driver_send_term(WXE_DRV_PORT,caller,rt,AP); - driver_free(rt); + driver_free(rt); driver_free(params); -}; break; -case 5670: { // glGetActiveUniformName +}; break; +case 5670: { // glGetActiveUniformName GLuint *program = (GLuint *) bp; bp += 4; GLuint *uniformIndex = (GLuint *) bp; bp += 4; GLsizei *bufSize = (GLsizei *) bp; bp += 4; @@ -5318,8 +5318,8 @@ case 5670: { // glGetActiveUniformName if (AP != 7 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,7); driver_send_term(WXE_DRV_PORT,caller,rt,AP); driver_free(uniformName); -}; break; -case 5671: { // glGetUniformBlockIndex +}; break; +case 5671: { // glGetUniformBlockIndex GLuint *program = (GLuint *) bp; bp += 4; GLchar *uniformBlockName = (GLchar *) bp; int uniformBlockNameLen = strlen((char *)uniformBlockName); bp += uniformBlockNameLen+1+((8-((1+uniformBlockNameLen+4)%8))%8); @@ -5330,8 +5330,8 @@ case 5671: { // glGetUniformBlockIndex rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; if (AP != 6 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,6); driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5672: { // glGetActiveUniformBlockiv +}; break; +case 5672: { // glGetActiveUniformBlockiv GLuint *program = (GLuint *) bp; bp += 4; GLuint *uniformBlockIndex = (GLuint *) bp; bp += 4; GLenum *pname = (GLenum *) bp; bp += 4; @@ -5342,8 +5342,8 @@ case 5672: { // glGetActiveUniformBlockiv rt[AP++]=ERL_DRV_ATOM; rt[AP++]=driver_mk_atom((char *) "ok"); rt[AP++] = ERL_DRV_TUPLE; rt[AP++] = 2; driver_send_term(WXE_DRV_PORT,caller,rt,AP); -}; break; -case 5673: { // glGetActiveUniformBlockName +}; break; +case 5673: { // glGetActiveUniformBlockName GLuint *program = (GLuint *) bp; bp += 4; GLuint *uniformBlockIndex = (GLuint *) bp; bp += 4; GLsizei *bufSize = (GLsizei *) bp; bp += 4; @@ -5358,49 +5358,49 @@ case 5673: { // glGetActiveUniformBlockName if (AP != 7 ) fprintf(stderr, "%d: ERROR AP mismatch %d %d\r\n",__LINE__,AP,7); driver_send_term(WXE_DRV_PORT,caller,rt,AP); driver_free(uniformBlockName); -}; break; -case 5674: { // glUniformBlockBinding +}; break; +case 5674: { // glUniformBlockBinding GLuint *program = (GLuint *) bp; bp += 4; GLuint *uniformBlockIndex = (GLuint *) bp; bp += 4; GLuint *uniformBlockBinding = (GLuint *) bp; bp += 4; weglUniformBlockBinding(*program,*uniformBlockIndex,*uniformBlockBinding); -}; break; -case 5675: { // glCopyBufferSubData +}; break; +case 5675: { // glCopyBufferSubData GLenum *readTarget = (GLenum *) bp; bp += 4; GLenum *writeTarget = (GLenum *) bp; bp += 4; GLintptr readOffset = (GLintptr) * (GLuint64EXT *) bp; bp += 8; GLintptr writeOffset = (GLintptr) * (GLuint64EXT *) bp; bp += 8; GLsizeiptr size = (GLsizeiptr) * (GLuint64EXT *) bp; bp += 8; weglCopyBufferSubData(*readTarget,*writeTarget,readOffset,writeOffset,size); -}; break; -case 5676: { // glResizeBuffersMESA +}; break; +case 5676: { // glResizeBuffersMESA weglResizeBuffersMESA(); -}; break; -case 5677: { // glWindowPos4dvMESA +}; break; +case 5677: { // glWindowPos4dvMESA GLdouble *v = (GLdouble *) bp; bp += 8; weglWindowPos4dvMESA(v); -}; break; -case 5678: { // glWindowPos4fvMESA +}; break; +case 5678: { // glWindowPos4fvMESA GLfloat *v = (GLfloat *) bp; bp += 4; weglWindowPos4fvMESA(v); -}; break; -case 5679: { // glWindowPos4ivMESA +}; break; +case 5679: { // glWindowPos4ivMESA GLint *v = (GLint *) bp; bp += 4; weglWindowPos4ivMESA(v); -}; break; -case 5680: { // glWindowPos4svMESA +}; break; +case 5680: { // glWindowPos4svMESA GLshort *v = (GLshort *) bp; bp += 2; weglWindowPos4svMESA(v); -}; break; -case 5681: { // glDepthBoundsEXT +}; break; +case 5681: { // glDepthBoundsEXT GLclampd *zmin = (GLclampd *) bp; bp += 8; GLclampd *zmax = (GLclampd *) bp; bp += 8; weglDepthBoundsEXT(*zmin,*zmax); -}; break; -case 5682: { // glStencilClearTagEXT +}; break; +case 5682: { // glStencilClearTagEXT GLsizei *stencilTagBits = (GLsizei *) bp; bp += 4; GLuint *stencilClearTag = (GLuint *) bp; bp += 4; weglStencilClearTagEXT(*stencilTagBits,*stencilClearTag); -}; break; +}; break; }} /* The End */ diff --git a/lib/wx/c_src/gen/glu_finit.h b/lib/wx/c_src/gen/glu_finit.h index 2f0e2d15e4..63e9c2fc78 100644 --- a/lib/wx/c_src/gen/glu_finit.h +++ b/lib/wx/c_src/gen/glu_finit.h @@ -16,7 +16,7 @@ * * %CopyrightEnd% */ -/***** This file is generated do not edit ****/ +/***** This file is generated do not edit ****/ static struct { const char * name; diff --git a/lib/wx/c_src/gen/wxe_funcs.cpp b/lib/wx/c_src/gen/wxe_funcs.cpp index c8549d0716..fd496c2ccc 100644 --- a/lib/wx/c_src/gen/wxe_funcs.cpp +++ b/lib/wx/c_src/gen/wxe_funcs.cpp @@ -2209,7 +2209,7 @@ case wxScrolledWindow_new_2: { // wxScrolledWindow::wxScrolledWindow wxWindowID winid=wxID_ANY; wxPoint pos= wxDefaultPosition; wxSize size= wxDefaultSize; - long style=(wxHSCROLL|wxVSCROLL); + long style=wxScrolledWindowStyle; wxWindow *parent = (wxWindow *) getPtr(bp,memenv); bp += 4; bp += 4; /* Align */ while( * (int*) bp) { switch (* (int*) bp) { @@ -2385,7 +2385,7 @@ case wxSashWindow_new_2: { // wxSashWindow::wxSashWindow wxWindowID id=wxID_ANY; wxPoint pos= wxDefaultPosition; wxSize size= wxDefaultSize; - long style=(0x0040|0x0080)|wxCLIP_CHILDREN; + long style=wxSW_3D|wxCLIP_CHILDREN; wxWindow *parent = (wxWindow *) getPtr(bp,memenv); bp += 4; bp += 4; /* Align */ while( * (int*) bp) { switch (* (int*) bp) { @@ -5930,7 +5930,7 @@ case wxBufferedDC_new_0: { // wxBufferedDC::wxBufferedDC } case wxBufferedDC_new_2: { // wxBufferedDC::wxBufferedDC wxBitmap * buffer= &wxNullBitmap; - int style=0x02; + int style=wxBUFFER_CLIENT_AREA; wxDC *dc = (wxDC *) getPtr(bp,memenv); bp += 4; bp += 4; /* Align */ while( * (int*) bp) { switch (* (int*) bp) { @@ -5947,7 +5947,7 @@ buffer = (wxBitmap *) getPtr(bp,memenv); bp += 4; break; } case wxBufferedDC_new_3: { // wxBufferedDC::wxBufferedDC - int style=0x02; + int style=wxBUFFER_CLIENT_AREA; wxDC *dc = (wxDC *) getPtr(bp,memenv); bp += 4; int * areaW = (int *) bp; bp += 4; int * areaH = (int *) bp; bp += 4; @@ -5965,7 +5965,7 @@ case wxBufferedDC_new_3: { // wxBufferedDC::wxBufferedDC } case wxBufferedDC_Init_2: { // wxBufferedDC::Init wxBitmap * buffer= &wxNullBitmap; - int style=0x02; + int style=wxBUFFER_CLIENT_AREA; wxBufferedDC *This = (wxBufferedDC *) getPtr(bp,memenv); bp += 4; wxDC *dc = (wxDC *) getPtr(bp,memenv); bp += 4; while( * (int*) bp) { switch (* (int*) bp) { @@ -5981,7 +5981,7 @@ buffer = (wxBitmap *) getPtr(bp,memenv); bp += 4; break; } case wxBufferedDC_Init_3: { // wxBufferedDC::Init - int style=0x02; + int style=wxBUFFER_CLIENT_AREA; wxBufferedDC *This = (wxBufferedDC *) getPtr(bp,memenv); bp += 4; wxDC *dc = (wxDC *) getPtr(bp,memenv); bp += 4; int * areaW = (int *) bp; bp += 4; @@ -5997,7 +5997,7 @@ case wxBufferedDC_Init_3: { // wxBufferedDC::Init break; } case wxBufferedPaintDC_new_3: { // wxBufferedPaintDC::wxBufferedPaintDC - int style=0x02; + int style=wxBUFFER_CLIENT_AREA; wxWindow *window = (wxWindow *) getPtr(bp,memenv); bp += 4; wxBitmap *buffer = (wxBitmap *) getPtr(bp,memenv); bp += 4; while( * (int*) bp) { switch (* (int*) bp) { @@ -6011,7 +6011,7 @@ case wxBufferedPaintDC_new_3: { // wxBufferedPaintDC::wxBufferedPaintDC break; } case wxBufferedPaintDC_new_2: { // wxBufferedPaintDC::wxBufferedPaintDC - int style=0x02; + int style=wxBUFFER_CLIENT_AREA; wxWindow *window = (wxWindow *) getPtr(bp,memenv); bp += 4; bp += 4; /* Align */ while( * (int*) bp) { switch (* (int*) bp) { @@ -9163,7 +9163,7 @@ case wxIcon_new_0: { // wxIcon::wxIcon break; } case wxIcon_new_2: { // wxIcon::wxIcon - wxBitmapType type=wxBITMAP_TYPE_XPM; + wxBitmapType type=wxICON_DEFAULT_BITMAP_TYPE; int desiredWidth=-1; int desiredHeight=-1; int * filenameLen = (int *) bp; bp += 4; @@ -16404,7 +16404,7 @@ case wxTextAttr_SetFlags: { // wxTextAttr::SetFlags break; } case wxTextAttr_SetFont: { // wxTextAttr::SetFont - long flags=(0x0004|0x0008|0x0010|0x0020|0x0040); + long flags=wxTEXT_ATTR_FONT; wxTextAttr *This = (wxTextAttr *) getPtr(bp,memenv); bp += 4; wxFont *font = (wxFont *) getPtr(bp,memenv); bp += 4; while( * (int*) bp) { switch (* (int*) bp) { @@ -16739,7 +16739,7 @@ case wxTextCtrl_IsSingleLine: { // wxTextCtrl::IsSingleLine break; } case wxTextCtrl_LoadFile: { // wxTextCtrl::LoadFile - int fileType=0; + int fileType=wxTEXT_TYPE_ANY; wxTextCtrl *This = (wxTextCtrl *) getPtr(bp,memenv); bp += 4; int * fileLen = (int *) bp; bp += 4; wxString file = wxString(bp, wxConvUTF8); @@ -16806,7 +16806,7 @@ case wxTextCtrl_Replace: { // wxTextCtrl::Replace } case wxTextCtrl_SaveFile: { // wxTextCtrl::SaveFile wxString file= wxEmptyString; - int fileType=0; + int fileType=wxTEXT_TYPE_ANY; wxTextCtrl *This = (wxTextCtrl *) getPtr(bp,memenv); bp += 4; bp += 4; /* Align */ while( * (int*) bp) { switch (* (int*) bp) { @@ -20467,7 +20467,7 @@ case wxPalette_IsOk: { // wxPalette::IsOk case wxDirDialog_new: { // wxDirDialog::wxDirDialog wxString title= wxDirSelectorPromptStr; wxString defaultPath= wxEmptyString; - long style=(wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER); + long style=wxDD_DEFAULT_STYLE; wxPoint pos= wxDefaultPosition; wxSize sz= wxDefaultSize; wxWindow *parent = (wxWindow *) getPtr(bp,memenv); bp += 4; @@ -20541,7 +20541,7 @@ case wxFileDialog_new: { // wxFileDialog::wxFileDialog wxString defaultDir= wxEmptyString; wxString defaultFile= wxEmptyString; wxString wildCard= wxFileSelectorDefaultWildcardStr; - long style=wxFD_OPEN; + long style=wxFD_DEFAULT_STYLE; wxPoint pos= wxDefaultPosition; wxSize sz= wxDefaultSize; wxWindow *parent = (wxWindow *) getPtr(bp,memenv); bp += 4; @@ -20806,7 +20806,7 @@ case wxFilePickerCtrl_new_3: { // wxFilePickerCtrl::wxFilePickerCtrl wxString wildcard= wxFileSelectorDefaultWildcardStr; wxPoint pos= wxDefaultPosition; wxSize size= wxDefaultSize; - long style=(0x0400|0x2000); + long style=wxFLP_DEFAULT_STYLE; const wxValidator * validator= &wxDefaultValidator; wxWindow *parent = (wxWindow *) getPtr(bp,memenv); bp += 4; int * id = (int *) bp; bp += 4; @@ -20856,7 +20856,7 @@ case wxFilePickerCtrl_Create: { // wxFilePickerCtrl::Create wxString wildcard= wxFileSelectorDefaultWildcardStr; wxPoint pos= wxDefaultPosition; wxSize size= wxDefaultSize; - long style=(0x0400|0x2000); + long style=wxFLP_DEFAULT_STYLE; const wxValidator * validator= &wxDefaultValidator; wxFilePickerCtrl *This = (wxFilePickerCtrl *) getPtr(bp,memenv); bp += 4; wxWindow *parent = (wxWindow *) getPtr(bp,memenv); bp += 4; @@ -20929,7 +20929,7 @@ case wxDirPickerCtrl_new_3: { // wxDirPickerCtrl::wxDirPickerCtrl wxString message= wxDirSelectorPromptStr; wxPoint pos= wxDefaultPosition; wxSize size= wxDefaultSize; - long style=(0x0008); + long style=wxDIRP_DEFAULT_STYLE; const wxValidator * validator= &wxDefaultValidator; wxWindow *parent = (wxWindow *) getPtr(bp,memenv); bp += 4; int * id = (int *) bp; bp += 4; @@ -20973,7 +20973,7 @@ case wxDirPickerCtrl_Create: { // wxDirPickerCtrl::Create wxString message= wxDirSelectorPromptStr; wxPoint pos= wxDefaultPosition; wxSize size= wxDefaultSize; - long style=(0x0008); + long style=wxDIRP_DEFAULT_STYLE; const wxValidator * validator= &wxDefaultValidator; wxDirPickerCtrl *This = (wxDirPickerCtrl *) getPtr(bp,memenv); bp += 4; wxWindow *parent = (wxWindow *) getPtr(bp,memenv); bp += 4; @@ -21040,7 +21040,7 @@ case wxColourPickerCtrl_new_3: { // wxColourPickerCtrl::wxColourPickerCtrl wxColour col= *wxBLACK; wxPoint pos= wxDefaultPosition; wxSize size= wxDefaultSize; - long style=0; + long style=wxCLRP_DEFAULT_STYLE; const wxValidator * validator= &wxDefaultValidator; wxWindow *parent = (wxWindow *) getPtr(bp,memenv); bp += 4; int * id = (int *) bp; bp += 4; @@ -21081,7 +21081,7 @@ case wxColourPickerCtrl_Create: { // wxColourPickerCtrl::Create wxColour col= *wxBLACK; wxPoint pos= wxDefaultPosition; wxSize size= wxDefaultSize; - long style=0; + long style=wxCLRP_DEFAULT_STYLE; const wxValidator * validator= &wxDefaultValidator; wxColourPickerCtrl *This = (wxColourPickerCtrl *) getPtr(bp,memenv); bp += 4; wxWindow *parent = (wxWindow *) getPtr(bp,memenv); bp += 4; @@ -21268,7 +21268,7 @@ case wxFontPickerCtrl_new_3: { // wxFontPickerCtrl::wxFontPickerCtrl const wxFont * initial= &wxNullFont; wxPoint pos= wxDefaultPosition; wxSize size= wxDefaultSize; - long style=(0x0008|0x0010); + long style=wxFNTP_DEFAULT_STYLE; const wxValidator * validator= &wxDefaultValidator; wxWindow *parent = (wxWindow *) getPtr(bp,memenv); bp += 4; int * id = (int *) bp; bp += 4; @@ -21304,7 +21304,7 @@ case wxFontPickerCtrl_Create: { // wxFontPickerCtrl::Create const wxFont * initial= &wxNullFont; wxPoint pos= wxDefaultPosition; wxSize size= wxDefaultSize; - long style=(0x0008|0x0010); + long style=wxFNTP_DEFAULT_STYLE; const wxValidator * validator= &wxDefaultValidator; wxFontPickerCtrl *This = (wxFontPickerCtrl *) getPtr(bp,memenv); bp += 4; wxWindow *parent = (wxWindow *) getPtr(bp,memenv); bp += 4; @@ -21480,7 +21480,7 @@ case wxMultiChoiceDialog_new_0: { // wxMultiChoiceDialog::wxMultiChoiceDialog break; } case wxMultiChoiceDialog_new_5: { // wxMultiChoiceDialog::wxMultiChoiceDialog - long style=(wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER|wxOK|wxCANCEL|wxCENTRE); + long style=wxCHOICEDLG_STYLE; wxPoint pos= wxDefaultPosition; wxWindow *parent = (wxWindow *) getPtr(bp,memenv); bp += 4; int * messageLen = (int *) bp; bp += 4; @@ -21540,7 +21540,7 @@ case wxSingleChoiceDialog_new_0: { // wxSingleChoiceDialog::wxSingleChoiceDialog } case wxSingleChoiceDialog_new_5: { // wxSingleChoiceDialog::wxSingleChoiceDialog char ** clientData = (char **) NULL; - long style=(wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER|wxOK|wxCANCEL|wxCENTRE); + long style=wxCHOICEDLG_STYLE; wxPoint pos= wxDefaultPosition; wxWindow *parent = (wxWindow *) getPtr(bp,memenv); bp += 4; int * messageLen = (int *) bp; bp += 4; @@ -21599,7 +21599,7 @@ case wxSingleChoiceDialog_SetSelection: { // wxSingleChoiceDialog::SetSelection case wxTextEntryDialog_new: { // wxTextEntryDialog::wxTextEntryDialog wxString caption= wxGetTextFromUserPromptStr; wxString value= wxEmptyString; - long style=(wxOK|wxCANCEL|wxCENTRE|wxWS_EX_VALIDATE_RECURSIVELY); + long style=wxTextEntryDialogStyle; wxPoint pos= wxDefaultPosition; wxWindow *parent = (wxWindow *) getPtr(bp,memenv); bp += 4; int * messageLen = (int *) bp; bp += 4; @@ -21650,7 +21650,7 @@ case wxTextEntryDialog_SetValue: { // wxTextEntryDialog::SetValue case wxPasswordEntryDialog_new: { // wxPasswordEntryDialog::wxPasswordEntryDialog wxString caption= wxGetPasswordFromUserPromptStr; wxString value= wxEmptyString; - long style=(wxOK|wxCANCEL|wxCENTRE|wxWS_EX_VALIDATE_RECURSIVELY); + long style=wxTextEntryDialogStyle; wxPoint pos= wxDefaultPosition; wxWindow *parent = (wxWindow *) getPtr(bp,memenv); bp += 4; int * messageLen = (int *) bp; bp += 4; @@ -30758,7 +30758,7 @@ case wxHtmlWindow_new_2: { // wxHtmlWindow::wxHtmlWindow wxWindowID id=wxID_ANY; wxPoint pos= wxDefaultPosition; wxSize size= wxDefaultSize; - long style=0x0004; + long style=wxHW_DEFAULT_STYLE; wxWindow *parent = (wxWindow *) getPtr(bp,memenv); bp += 4; bp += 4; /* Align */ while( * (int*) bp) { switch (* (int*) bp) { diff --git a/lib/wx/c_src/gen/wxe_init.cpp b/lib/wx/c_src/gen/wxe_init.cpp index 96c775c4c0..bab3261be4 100644 --- a/lib/wx/c_src/gen/wxe_init.cpp +++ b/lib/wx/c_src/gen/wxe_init.cpp @@ -24,6 +24,8 @@ void WxeApp::init_nonconsts(wxeMemEnv *memenv, ErlDrvTermData caller) { wxeReturn rt = wxeReturn(WXE_DRV_PORT, caller); rt.addAtom((char*)"wx_consts"); + rt.addAtom("wxALWAYS_NATIVE_DOUBLE_BUFFER"); rt.addInt(wxALWAYS_NATIVE_DOUBLE_BUFFER); + rt.addTupleCount(2); rt.addAtom("wxBYTE_ORDER"); rt.addInt(wxBYTE_ORDER); rt.addTupleCount(2); rt.addAtom("wxDEFAULT_CONTROL_BORDER"); rt.addInt(wxDEFAULT_CONTROL_BORDER); @@ -32,6 +34,10 @@ void WxeApp::init_nonconsts(wxeMemEnv *memenv, ErlDrvTermData caller) { rt.addTupleCount(2); rt.addAtom("wxRETAINED"); rt.addInt(wxRETAINED); rt.addTupleCount(2); + rt.addAtom("wxGAUGE_EMULATE_INDETERMINATE_MODE"); rt.addInt(wxGAUGE_EMULATE_INDETERMINATE_MODE); + rt.addTupleCount(2); + rt.addAtom("wxTR_DEFAULT_STYLE"); rt.addInt(wxTR_DEFAULT_STYLE); + rt.addTupleCount(2); rt.addAtom("wxBETA_NUMBER"); rt.addInt(wxBETA_NUMBER); rt.addTupleCount(2); rt.addAtom("wxMAJOR_VERSION"); rt.addInt(wxMAJOR_VERSION); @@ -130,7 +136,7 @@ void WxeApp::init_nonconsts(wxeMemEnv *memenv, ErlDrvTermData caller) { rt.addTupleCount(2); rt.addAtom("wxWHITE_PEN"); rt.addRef(getRef((void *)wxWHITE_PEN,memenv),"wxPen"); rt.addTupleCount(2); - rt.endList(53); + rt.endList(56); rt.addTupleCount(2); rt.send(); } diff --git a/lib/wx/c_src/gen/wxe_macros.h b/lib/wx/c_src/gen/wxe_macros.h index cb5a4f3c41..415b7f0b29 100644 --- a/lib/wx/c_src/gen/wxe_macros.h +++ b/lib/wx/c_src/gen/wxe_macros.h @@ -62,6 +62,11 @@ #include <wx/filename.h> +#ifndef wxICON_DEFAULT_BITMAP_TYPE + #define wxICON_DEFAULT_BITMAP_TYPE wxBITMAP_TYPE_ICO_RESOURCE +#endif + + #define wxEvtHandler_Connect 100 #define wxEvtHandler_Disconnect_2 101 #define wxEvtHandler_Disconnect_1 102 @@ -810,2511 +815,2511 @@ #define wxControlWithItems_Clear 882 #define wxControlWithItems_Delete 883 #define wxControlWithItems_FindString 884 -#define wxControlWithItems_getClientData 886 -#define wxControlWithItems_setClientData 888 -#define wxControlWithItems_GetCount 889 -#define wxControlWithItems_GetSelection 890 -#define wxControlWithItems_GetString 891 -#define wxControlWithItems_GetStringSelection 892 -#define wxControlWithItems_Insert_2 893 -#define wxControlWithItems_Insert_3 894 -#define wxControlWithItems_IsEmpty 895 -#define wxControlWithItems_Select 896 -#define wxControlWithItems_SetSelection 897 -#define wxControlWithItems_SetString 898 -#define wxControlWithItems_SetStringSelection 899 -#define wxMenu_new_2 902 -#define wxMenu_new_1 903 -#define wxMenu_destruct 905 -#define wxMenu_Append_3 906 -#define wxMenu_Append_1 907 -#define wxMenu_Append_4_0 908 -#define wxMenu_Append_4_1 909 -#define wxMenu_AppendCheckItem 910 -#define wxMenu_AppendRadioItem 911 -#define wxMenu_AppendSeparator 912 -#define wxMenu_Break 913 -#define wxMenu_Check 914 -#define wxMenu_Delete_1_0 915 -#define wxMenu_Delete_1_1 916 -#define wxMenu_Destroy_1_0 917 -#define wxMenu_Destroy_1_1 918 -#define wxMenu_Enable 919 -#define wxMenu_FindItem_1 920 -#define wxMenu_FindItem_2 921 -#define wxMenu_FindItemByPosition 922 -#define wxMenu_GetHelpString 923 -#define wxMenu_GetLabel 924 -#define wxMenu_GetMenuItemCount 925 -#define wxMenu_GetMenuItems 926 -#define wxMenu_GetTitle 928 -#define wxMenu_Insert_2 929 -#define wxMenu_Insert_3 930 -#define wxMenu_Insert_5_1 931 -#define wxMenu_Insert_5_0 932 -#define wxMenu_InsertCheckItem 933 -#define wxMenu_InsertRadioItem 934 -#define wxMenu_InsertSeparator 935 -#define wxMenu_IsChecked 936 -#define wxMenu_IsEnabled 937 -#define wxMenu_Prepend_1 938 -#define wxMenu_Prepend_2 939 -#define wxMenu_Prepend_4_1 940 -#define wxMenu_Prepend_4_0 941 -#define wxMenu_PrependCheckItem 942 -#define wxMenu_PrependRadioItem 943 -#define wxMenu_PrependSeparator 944 -#define wxMenu_Remove_1_0 945 -#define wxMenu_Remove_1_1 946 -#define wxMenu_SetHelpString 947 -#define wxMenu_SetLabel 948 -#define wxMenu_SetTitle 949 -#define wxMenuItem_new 950 -#define wxMenuItem_destruct 952 -#define wxMenuItem_Check 953 -#define wxMenuItem_Enable 954 -#define wxMenuItem_GetBitmap 955 -#define wxMenuItem_GetHelp 956 -#define wxMenuItem_GetId 957 -#define wxMenuItem_GetKind 958 -#define wxMenuItem_GetLabel 959 -#define wxMenuItem_GetLabelFromText 960 -#define wxMenuItem_GetMenu 961 -#define wxMenuItem_GetText 962 -#define wxMenuItem_GetSubMenu 963 -#define wxMenuItem_IsCheckable 964 -#define wxMenuItem_IsChecked 965 -#define wxMenuItem_IsEnabled 966 -#define wxMenuItem_IsSeparator 967 -#define wxMenuItem_IsSubMenu 968 -#define wxMenuItem_SetBitmap 969 -#define wxMenuItem_SetHelp 970 -#define wxMenuItem_SetMenu 971 -#define wxMenuItem_SetSubMenu 972 -#define wxMenuItem_SetText 973 -#define wxToolBar_AddControl 974 -#define wxToolBar_AddSeparator 975 -#define wxToolBar_AddTool_5 976 -#define wxToolBar_AddTool_4_0 977 -#define wxToolBar_AddTool_1 978 -#define wxToolBar_AddTool_4_1 979 -#define wxToolBar_AddTool_3 980 -#define wxToolBar_AddTool_6 981 -#define wxToolBar_AddCheckTool 982 -#define wxToolBar_AddRadioTool 983 -#define wxToolBar_DeleteTool 984 -#define wxToolBar_DeleteToolByPos 985 -#define wxToolBar_EnableTool 986 -#define wxToolBar_FindById 987 -#define wxToolBar_FindControl 988 -#define wxToolBar_FindToolForPosition 989 -#define wxToolBar_GetToolSize 990 -#define wxToolBar_GetToolBitmapSize 991 -#define wxToolBar_GetMargins 992 -#define wxToolBar_GetToolEnabled 993 -#define wxToolBar_GetToolLongHelp 994 -#define wxToolBar_GetToolPacking 995 -#define wxToolBar_GetToolPos 996 -#define wxToolBar_GetToolSeparation 997 -#define wxToolBar_GetToolShortHelp 998 -#define wxToolBar_GetToolState 999 -#define wxToolBar_InsertControl 1000 -#define wxToolBar_InsertSeparator 1001 -#define wxToolBar_InsertTool_5 1002 -#define wxToolBar_InsertTool_2 1003 -#define wxToolBar_InsertTool_4 1004 -#define wxToolBar_Realize 1005 -#define wxToolBar_RemoveTool 1006 -#define wxToolBar_SetMargins 1007 -#define wxToolBar_SetToolBitmapSize 1008 -#define wxToolBar_SetToolLongHelp 1009 -#define wxToolBar_SetToolPacking 1010 -#define wxToolBar_SetToolShortHelp 1011 -#define wxToolBar_SetToolSeparation 1012 -#define wxToolBar_ToggleTool 1013 -#define wxStatusBar_new_0 1015 -#define wxStatusBar_new_2 1016 -#define wxStatusBar_destruct 1018 -#define wxStatusBar_Create 1019 -#define wxStatusBar_GetFieldRect 1020 -#define wxStatusBar_GetFieldsCount 1021 -#define wxStatusBar_GetStatusText 1022 -#define wxStatusBar_PopStatusText 1023 -#define wxStatusBar_PushStatusText 1024 -#define wxStatusBar_SetFieldsCount 1025 -#define wxStatusBar_SetMinHeight 1026 -#define wxStatusBar_SetStatusText 1027 -#define wxStatusBar_SetStatusWidths 1028 -#define wxStatusBar_SetStatusStyles 1029 -#define wxBitmap_new_0 1030 -#define wxBitmap_new_3 1031 -#define wxBitmap_new_4 1032 -#define wxBitmap_new_2_0 1033 -#define wxBitmap_new_2_1 1034 -#define wxBitmap_destruct 1035 -#define wxBitmap_ConvertToImage 1036 -#define wxBitmap_CopyFromIcon 1037 -#define wxBitmap_Create 1038 -#define wxBitmap_GetDepth 1039 -#define wxBitmap_GetHeight 1040 -#define wxBitmap_GetPalette 1041 -#define wxBitmap_GetMask 1042 -#define wxBitmap_GetWidth 1043 -#define wxBitmap_GetSubBitmap 1044 -#define wxBitmap_LoadFile 1045 -#define wxBitmap_Ok 1046 -#define wxBitmap_SaveFile 1047 -#define wxBitmap_SetDepth 1048 -#define wxBitmap_SetHeight 1049 -#define wxBitmap_SetMask 1050 -#define wxBitmap_SetPalette 1051 -#define wxBitmap_SetWidth 1052 -#define wxIcon_new_0 1053 -#define wxIcon_new_2 1054 -#define wxIcon_new_1 1055 -#define wxIcon_CopyFromBitmap 1056 -#define wxIcon_destroy 1057 -#define wxIconBundle_new_0 1058 -#define wxIconBundle_new_2 1059 -#define wxIconBundle_new_1_0 1060 -#define wxIconBundle_new_1_1 1061 -#define wxIconBundle_destruct 1062 -#define wxIconBundle_AddIcon_2 1063 -#define wxIconBundle_AddIcon_1 1064 -#define wxIconBundle_GetIcon_1_1 1065 -#define wxIconBundle_GetIcon_1_0 1066 -#define wxCursor_new_0 1067 -#define wxCursor_new_1_0 1068 -#define wxCursor_new_1_1 1069 -#define wxCursor_new_4 1070 -#define wxCursor_destruct 1071 -#define wxCursor_Ok 1072 -#define wxMask_new_0 1073 -#define wxMask_new_2_1 1074 -#define wxMask_new_2_0 1075 -#define wxMask_new_1 1076 -#define wxMask_destruct 1077 -#define wxMask_Create_2_1 1078 -#define wxMask_Create_2_0 1079 -#define wxMask_Create_1 1080 -#define wxImage_new_0 1081 -#define wxImage_new_3_0 1082 -#define wxImage_new_4 1083 -#define wxImage_new_5 1084 -#define wxImage_new_2 1085 -#define wxImage_new_3_1 1086 -#define wxImage_Blur 1087 -#define wxImage_BlurHorizontal 1088 -#define wxImage_BlurVertical 1089 -#define wxImage_ConvertAlphaToMask 1090 -#define wxImage_ConvertToGreyscale 1091 -#define wxImage_ConvertToMono 1092 -#define wxImage_Copy 1093 -#define wxImage_Create_3 1094 -#define wxImage_Create_4 1095 -#define wxImage_Create_5 1096 -#define wxImage_Destroy 1097 -#define wxImage_FindFirstUnusedColour 1098 -#define wxImage_GetImageExtWildcard 1099 -#define wxImage_GetAlpha_2 1100 -#define wxImage_GetAlpha_0 1101 -#define wxImage_GetBlue 1102 -#define wxImage_GetData 1103 -#define wxImage_GetGreen 1104 -#define wxImage_GetImageCount 1105 -#define wxImage_GetHeight 1106 -#define wxImage_GetMaskBlue 1107 -#define wxImage_GetMaskGreen 1108 -#define wxImage_GetMaskRed 1109 -#define wxImage_GetOrFindMaskColour 1110 -#define wxImage_GetPalette 1111 -#define wxImage_GetRed 1112 -#define wxImage_GetSubImage 1113 -#define wxImage_GetWidth 1114 -#define wxImage_HasAlpha 1115 -#define wxImage_HasMask 1116 -#define wxImage_GetOption 1117 -#define wxImage_GetOptionInt 1118 -#define wxImage_HasOption 1119 -#define wxImage_InitAlpha 1120 -#define wxImage_InitStandardHandlers 1121 -#define wxImage_IsTransparent 1122 -#define wxImage_LoadFile_2 1123 -#define wxImage_LoadFile_3 1124 -#define wxImage_Ok 1125 -#define wxImage_RemoveHandler 1126 -#define wxImage_Mirror 1127 -#define wxImage_Replace 1128 -#define wxImage_Rescale 1129 -#define wxImage_Resize 1130 -#define wxImage_Rotate 1131 -#define wxImage_RotateHue 1132 -#define wxImage_Rotate90 1133 -#define wxImage_SaveFile_1 1134 -#define wxImage_SaveFile_2_0 1135 -#define wxImage_SaveFile_2_1 1136 -#define wxImage_Scale 1137 -#define wxImage_Size 1138 -#define wxImage_SetAlpha_3 1139 -#define wxImage_SetAlpha_2 1140 -#define wxImage_SetData_2 1141 -#define wxImage_SetData_4 1142 -#define wxImage_SetMask 1143 -#define wxImage_SetMaskColour 1144 -#define wxImage_SetMaskFromImage 1145 -#define wxImage_SetOption_2_1 1146 -#define wxImage_SetOption_2_0 1147 -#define wxImage_SetPalette 1148 -#define wxImage_SetRGB_5 1149 -#define wxImage_SetRGB_4 1150 -#define wxImage_destroy 1151 -#define wxBrush_new_0 1152 -#define wxBrush_new_2 1153 -#define wxBrush_new_1 1154 -#define wxBrush_destruct 1156 -#define wxBrush_GetColour 1157 -#define wxBrush_GetStipple 1158 -#define wxBrush_GetStyle 1159 -#define wxBrush_IsHatch 1160 -#define wxBrush_IsOk 1161 -#define wxBrush_SetColour_1 1162 -#define wxBrush_SetColour_3 1163 -#define wxBrush_SetStipple 1164 -#define wxBrush_SetStyle 1165 -#define wxPen_new_0 1166 -#define wxPen_new_2 1167 -#define wxPen_destruct 1168 -#define wxPen_GetCap 1169 -#define wxPen_GetColour 1170 -#define wxPen_GetJoin 1171 -#define wxPen_GetStyle 1172 -#define wxPen_GetWidth 1173 -#define wxPen_IsOk 1174 -#define wxPen_SetCap 1175 -#define wxPen_SetColour_1 1176 -#define wxPen_SetColour_3 1177 -#define wxPen_SetJoin 1178 -#define wxPen_SetStyle 1179 -#define wxPen_SetWidth 1180 -#define wxRegion_new_0 1181 -#define wxRegion_new_4 1182 -#define wxRegion_new_2 1183 -#define wxRegion_new_1_1 1184 -#define wxRegion_new_1_0 1186 -#define wxRegion_destruct 1188 -#define wxRegion_Clear 1189 -#define wxRegion_Contains_2 1190 -#define wxRegion_Contains_1_0 1191 -#define wxRegion_Contains_4 1192 -#define wxRegion_Contains_1_1 1193 -#define wxRegion_ConvertToBitmap 1194 -#define wxRegion_GetBox 1195 -#define wxRegion_Intersect_4 1196 -#define wxRegion_Intersect_1_1 1197 -#define wxRegion_Intersect_1_0 1198 -#define wxRegion_IsEmpty 1199 -#define wxRegion_Subtract_4 1200 -#define wxRegion_Subtract_1_1 1201 -#define wxRegion_Subtract_1_0 1202 -#define wxRegion_Offset_2 1203 -#define wxRegion_Offset_1 1204 -#define wxRegion_Union_4 1205 -#define wxRegion_Union_1_2 1206 -#define wxRegion_Union_1_1 1207 -#define wxRegion_Union_1_0 1208 -#define wxRegion_Union_3 1209 -#define wxRegion_Xor_4 1210 -#define wxRegion_Xor_1_1 1211 -#define wxRegion_Xor_1_0 1212 -#define wxAcceleratorTable_new_0 1213 -#define wxAcceleratorTable_new_2 1214 -#define wxAcceleratorTable_destruct 1215 -#define wxAcceleratorTable_Ok 1216 -#define wxAcceleratorEntry_new_1_0 1217 -#define wxAcceleratorEntry_new_1_1 1218 -#define wxAcceleratorEntry_GetCommand 1219 -#define wxAcceleratorEntry_GetFlags 1220 -#define wxAcceleratorEntry_GetKeyCode 1221 -#define wxAcceleratorEntry_Set 1222 -#define wxAcceleratorEntry_destroy 1223 -#define wxCaret_new_3 1228 -#define wxCaret_new_2 1229 -#define wxCaret_destruct 1231 -#define wxCaret_Create_3 1232 -#define wxCaret_Create_2 1233 -#define wxCaret_GetBlinkTime 1234 -#define wxCaret_GetPosition 1236 -#define wxCaret_GetSize 1238 -#define wxCaret_GetWindow 1239 -#define wxCaret_Hide 1240 -#define wxCaret_IsOk 1241 -#define wxCaret_IsVisible 1242 -#define wxCaret_Move_2 1243 -#define wxCaret_Move_1 1244 -#define wxCaret_SetBlinkTime 1245 -#define wxCaret_SetSize_2 1246 -#define wxCaret_SetSize_1 1247 -#define wxCaret_Show 1248 -#define wxSizer_Add_2_1 1249 -#define wxSizer_Add_2_0 1250 -#define wxSizer_Add_3 1251 -#define wxSizer_Add_2_3 1252 -#define wxSizer_Add_2_2 1253 -#define wxSizer_AddSpacer 1254 -#define wxSizer_AddStretchSpacer 1255 -#define wxSizer_CalcMin 1256 -#define wxSizer_Clear 1257 -#define wxSizer_Detach_1_2 1258 -#define wxSizer_Detach_1_1 1259 -#define wxSizer_Detach_1_0 1260 -#define wxSizer_Fit 1261 -#define wxSizer_FitInside 1262 -#define wxSizer_GetChildren 1263 -#define wxSizer_GetItem_2_1 1264 -#define wxSizer_GetItem_2_0 1265 -#define wxSizer_GetItem_1 1266 -#define wxSizer_GetSize 1267 -#define wxSizer_GetPosition 1268 -#define wxSizer_GetMinSize 1269 -#define wxSizer_Hide_2_0 1270 -#define wxSizer_Hide_2_1 1271 -#define wxSizer_Hide_1 1272 -#define wxSizer_Insert_3_1 1273 -#define wxSizer_Insert_3_0 1274 -#define wxSizer_Insert_4 1275 -#define wxSizer_Insert_3_3 1276 -#define wxSizer_Insert_3_2 1277 -#define wxSizer_Insert_2 1278 -#define wxSizer_InsertSpacer 1279 -#define wxSizer_InsertStretchSpacer 1280 -#define wxSizer_IsShown_1_2 1281 -#define wxSizer_IsShown_1_1 1282 -#define wxSizer_IsShown_1_0 1283 -#define wxSizer_Layout 1284 -#define wxSizer_Prepend_2_1 1285 -#define wxSizer_Prepend_2_0 1286 -#define wxSizer_Prepend_3 1287 -#define wxSizer_Prepend_2_3 1288 -#define wxSizer_Prepend_2_2 1289 -#define wxSizer_Prepend_1 1290 -#define wxSizer_PrependSpacer 1291 -#define wxSizer_PrependStretchSpacer 1292 -#define wxSizer_RecalcSizes 1293 -#define wxSizer_Remove_1_1 1294 -#define wxSizer_Remove_1_0 1295 -#define wxSizer_Replace_3_1 1296 -#define wxSizer_Replace_3_0 1297 -#define wxSizer_Replace_2 1298 -#define wxSizer_SetDimension 1299 -#define wxSizer_SetMinSize_2 1300 -#define wxSizer_SetMinSize_1 1301 -#define wxSizer_SetItemMinSize_3_2 1302 -#define wxSizer_SetItemMinSize_2_2 1303 -#define wxSizer_SetItemMinSize_3_1 1304 -#define wxSizer_SetItemMinSize_2_1 1305 -#define wxSizer_SetItemMinSize_3_0 1306 -#define wxSizer_SetItemMinSize_2_0 1307 -#define wxSizer_SetSizeHints 1308 -#define wxSizer_SetVirtualSizeHints 1309 -#define wxSizer_Show_2_2 1310 -#define wxSizer_Show_2_1 1311 -#define wxSizer_Show_2_0 1312 -#define wxSizer_Show_1 1313 -#define wxSizerFlags_new 1314 -#define wxSizerFlags_Align 1315 -#define wxSizerFlags_Border_2 1316 -#define wxSizerFlags_Border_1 1317 -#define wxSizerFlags_Center 1318 -#define wxSizerFlags_Centre 1319 -#define wxSizerFlags_Expand 1320 -#define wxSizerFlags_Left 1321 -#define wxSizerFlags_Proportion 1322 -#define wxSizerFlags_Right 1323 -#define wxSizerFlags_destroy 1324 -#define wxSizerItem_new_5_1 1325 -#define wxSizerItem_new_2_1 1326 -#define wxSizerItem_new_5_0 1327 -#define wxSizerItem_new_2_0 1328 -#define wxSizerItem_new_6 1329 -#define wxSizerItem_new_3 1330 -#define wxSizerItem_new_0 1331 -#define wxSizerItem_destruct 1332 -#define wxSizerItem_CalcMin 1333 -#define wxSizerItem_DeleteWindows 1334 -#define wxSizerItem_DetachSizer 1335 -#define wxSizerItem_GetBorder 1336 -#define wxSizerItem_GetFlag 1337 -#define wxSizerItem_GetMinSize 1338 -#define wxSizerItem_GetPosition 1339 -#define wxSizerItem_GetProportion 1340 -#define wxSizerItem_GetRatio 1341 -#define wxSizerItem_GetRect 1342 -#define wxSizerItem_GetSize 1343 -#define wxSizerItem_GetSizer 1344 -#define wxSizerItem_GetSpacer 1345 -#define wxSizerItem_GetUserData 1346 -#define wxSizerItem_GetWindow 1347 -#define wxSizerItem_IsSizer 1348 -#define wxSizerItem_IsShown 1349 -#define wxSizerItem_IsSpacer 1350 -#define wxSizerItem_IsWindow 1351 -#define wxSizerItem_SetBorder 1352 -#define wxSizerItem_SetDimension 1353 -#define wxSizerItem_SetFlag 1354 -#define wxSizerItem_SetInitSize 1355 -#define wxSizerItem_SetMinSize_1 1356 -#define wxSizerItem_SetMinSize_2 1357 -#define wxSizerItem_SetProportion 1358 -#define wxSizerItem_SetRatio_2 1359 -#define wxSizerItem_SetRatio_1_1 1360 -#define wxSizerItem_SetRatio_1_0 1361 -#define wxSizerItem_SetSizer 1362 -#define wxSizerItem_SetSpacer_1 1363 -#define wxSizerItem_SetSpacer_2 1364 -#define wxSizerItem_SetWindow 1365 -#define wxSizerItem_Show 1366 -#define wxBoxSizer_new 1367 -#define wxBoxSizer_GetOrientation 1368 -#define wxBoxSizer_destroy 1369 -#define wxStaticBoxSizer_new_2 1370 -#define wxStaticBoxSizer_new_3 1371 -#define wxStaticBoxSizer_GetStaticBox 1372 -#define wxStaticBoxSizer_destroy 1373 -#define wxGridSizer_new_4 1374 -#define wxGridSizer_new_2 1375 -#define wxGridSizer_GetCols 1376 -#define wxGridSizer_GetHGap 1377 -#define wxGridSizer_GetRows 1378 -#define wxGridSizer_GetVGap 1379 -#define wxGridSizer_SetCols 1380 -#define wxGridSizer_SetHGap 1381 -#define wxGridSizer_SetRows 1382 -#define wxGridSizer_SetVGap 1383 -#define wxGridSizer_destroy 1384 -#define wxFlexGridSizer_new_4 1385 -#define wxFlexGridSizer_new_2 1386 -#define wxFlexGridSizer_AddGrowableCol 1387 -#define wxFlexGridSizer_AddGrowableRow 1388 -#define wxFlexGridSizer_GetFlexibleDirection 1389 -#define wxFlexGridSizer_GetNonFlexibleGrowMode 1390 -#define wxFlexGridSizer_RemoveGrowableCol 1391 -#define wxFlexGridSizer_RemoveGrowableRow 1392 -#define wxFlexGridSizer_SetFlexibleDirection 1393 -#define wxFlexGridSizer_SetNonFlexibleGrowMode 1394 -#define wxFlexGridSizer_destroy 1395 -#define wxGridBagSizer_new 1396 -#define wxGridBagSizer_Add_3_2 1397 -#define wxGridBagSizer_Add_3_1 1398 -#define wxGridBagSizer_Add_4 1399 -#define wxGridBagSizer_Add_1_0 1400 -#define wxGridBagSizer_Add_2_1 1401 -#define wxGridBagSizer_Add_2_0 1402 -#define wxGridBagSizer_Add_3_0 1403 -#define wxGridBagSizer_Add_1_1 1404 -#define wxGridBagSizer_CalcMin 1405 -#define wxGridBagSizer_CheckForIntersection_2 1406 -#define wxGridBagSizer_CheckForIntersection_3 1407 -#define wxGridBagSizer_FindItem_1_1 1408 -#define wxGridBagSizer_FindItem_1_0 1409 -#define wxGridBagSizer_FindItemAtPoint 1410 -#define wxGridBagSizer_FindItemAtPosition 1411 -#define wxGridBagSizer_FindItemWithData 1412 -#define wxGridBagSizer_GetCellSize 1413 -#define wxGridBagSizer_GetEmptyCellSize 1414 -#define wxGridBagSizer_GetItemPosition_1_2 1415 -#define wxGridBagSizer_GetItemPosition_1_1 1416 -#define wxGridBagSizer_GetItemPosition_1_0 1417 -#define wxGridBagSizer_GetItemSpan_1_2 1418 -#define wxGridBagSizer_GetItemSpan_1_1 1419 -#define wxGridBagSizer_GetItemSpan_1_0 1420 -#define wxGridBagSizer_SetEmptyCellSize 1421 -#define wxGridBagSizer_SetItemPosition_2_2 1422 -#define wxGridBagSizer_SetItemPosition_2_1 1423 -#define wxGridBagSizer_SetItemPosition_2_0 1424 -#define wxGridBagSizer_SetItemSpan_2_2 1425 -#define wxGridBagSizer_SetItemSpan_2_1 1426 -#define wxGridBagSizer_SetItemSpan_2_0 1427 -#define wxGridBagSizer_destroy 1428 -#define wxStdDialogButtonSizer_new 1429 -#define wxStdDialogButtonSizer_AddButton 1430 -#define wxStdDialogButtonSizer_Realize 1431 -#define wxStdDialogButtonSizer_SetAffirmativeButton 1432 -#define wxStdDialogButtonSizer_SetCancelButton 1433 -#define wxStdDialogButtonSizer_SetNegativeButton 1434 -#define wxStdDialogButtonSizer_destroy 1435 -#define wxFont_new_0 1436 -#define wxFont_new_1 1437 -#define wxFont_new_5 1438 -#define wxFont_destruct 1440 -#define wxFont_IsFixedWidth 1441 -#define wxFont_GetDefaultEncoding 1442 -#define wxFont_GetFaceName 1443 -#define wxFont_GetFamily 1444 -#define wxFont_GetNativeFontInfoDesc 1445 -#define wxFont_GetNativeFontInfoUserDesc 1446 -#define wxFont_GetPointSize 1447 -#define wxFont_GetStyle 1448 -#define wxFont_GetUnderlined 1449 -#define wxFont_GetWeight 1450 -#define wxFont_Ok 1451 -#define wxFont_SetDefaultEncoding 1452 -#define wxFont_SetFaceName 1453 -#define wxFont_SetFamily 1454 -#define wxFont_SetPointSize 1455 -#define wxFont_SetStyle 1456 -#define wxFont_SetUnderlined 1457 -#define wxFont_SetWeight 1458 -#define wxToolTip_Enable 1459 -#define wxToolTip_SetDelay 1460 -#define wxToolTip_new 1461 -#define wxToolTip_SetTip 1462 -#define wxToolTip_GetTip 1463 -#define wxToolTip_GetWindow 1464 -#define wxToolTip_destroy 1465 -#define wxButton_new_3 1467 -#define wxButton_new_0 1468 -#define wxButton_destruct 1469 -#define wxButton_Create 1470 -#define wxButton_GetDefaultSize 1471 -#define wxButton_SetDefault 1472 -#define wxButton_SetLabel 1473 -#define wxBitmapButton_new_4 1475 -#define wxBitmapButton_new_0 1476 -#define wxBitmapButton_Create 1477 -#define wxBitmapButton_GetBitmapDisabled 1478 -#define wxBitmapButton_GetBitmapFocus 1480 -#define wxBitmapButton_GetBitmapLabel 1482 -#define wxBitmapButton_GetBitmapSelected 1484 -#define wxBitmapButton_SetBitmapDisabled 1486 -#define wxBitmapButton_SetBitmapFocus 1487 -#define wxBitmapButton_SetBitmapLabel 1488 -#define wxBitmapButton_SetBitmapSelected 1489 -#define wxBitmapButton_destroy 1490 -#define wxToggleButton_new_0 1491 -#define wxToggleButton_new_4 1492 -#define wxToggleButton_Create 1493 -#define wxToggleButton_GetValue 1494 -#define wxToggleButton_SetValue 1495 -#define wxToggleButton_destroy 1496 -#define wxCalendarCtrl_new_0 1497 -#define wxCalendarCtrl_new_3 1498 -#define wxCalendarCtrl_Create 1499 -#define wxCalendarCtrl_destruct 1500 -#define wxCalendarCtrl_SetDate 1501 -#define wxCalendarCtrl_GetDate 1502 -#define wxCalendarCtrl_EnableYearChange 1503 -#define wxCalendarCtrl_EnableMonthChange 1504 -#define wxCalendarCtrl_EnableHolidayDisplay 1505 -#define wxCalendarCtrl_SetHeaderColours 1506 -#define wxCalendarCtrl_GetHeaderColourFg 1507 -#define wxCalendarCtrl_GetHeaderColourBg 1508 -#define wxCalendarCtrl_SetHighlightColours 1509 -#define wxCalendarCtrl_GetHighlightColourFg 1510 -#define wxCalendarCtrl_GetHighlightColourBg 1511 -#define wxCalendarCtrl_SetHolidayColours 1512 -#define wxCalendarCtrl_GetHolidayColourFg 1513 -#define wxCalendarCtrl_GetHolidayColourBg 1514 -#define wxCalendarCtrl_GetAttr 1515 -#define wxCalendarCtrl_SetAttr 1516 -#define wxCalendarCtrl_SetHoliday 1517 -#define wxCalendarCtrl_ResetAttr 1518 -#define wxCalendarCtrl_HitTest 1519 -#define wxCalendarDateAttr_new_0 1520 -#define wxCalendarDateAttr_new_2_1 1521 -#define wxCalendarDateAttr_new_2_0 1522 -#define wxCalendarDateAttr_SetTextColour 1523 -#define wxCalendarDateAttr_SetBackgroundColour 1524 -#define wxCalendarDateAttr_SetBorderColour 1525 -#define wxCalendarDateAttr_SetFont 1526 -#define wxCalendarDateAttr_SetBorder 1527 -#define wxCalendarDateAttr_SetHoliday 1528 -#define wxCalendarDateAttr_HasTextColour 1529 -#define wxCalendarDateAttr_HasBackgroundColour 1530 -#define wxCalendarDateAttr_HasBorderColour 1531 -#define wxCalendarDateAttr_HasFont 1532 -#define wxCalendarDateAttr_HasBorder 1533 -#define wxCalendarDateAttr_IsHoliday 1534 -#define wxCalendarDateAttr_GetTextColour 1535 -#define wxCalendarDateAttr_GetBackgroundColour 1536 -#define wxCalendarDateAttr_GetBorderColour 1537 -#define wxCalendarDateAttr_GetFont 1538 -#define wxCalendarDateAttr_GetBorder 1539 -#define wxCalendarDateAttr_destroy 1540 -#define wxCheckBox_new_4 1542 -#define wxCheckBox_new_0 1543 -#define wxCheckBox_Create 1544 -#define wxCheckBox_GetValue 1545 -#define wxCheckBox_Get3StateValue 1546 -#define wxCheckBox_Is3rdStateAllowedForUser 1547 -#define wxCheckBox_Is3State 1548 -#define wxCheckBox_IsChecked 1549 -#define wxCheckBox_SetValue 1550 -#define wxCheckBox_Set3StateValue 1551 -#define wxCheckBox_destroy 1552 -#define wxCheckListBox_new_0 1553 -#define wxCheckListBox_new_3 1555 -#define wxCheckListBox_Check 1556 -#define wxCheckListBox_IsChecked 1557 -#define wxCheckListBox_destroy 1558 -#define wxChoice_new_3 1561 -#define wxChoice_new_0 1562 -#define wxChoice_destruct 1564 -#define wxChoice_Create 1566 -#define wxChoice_Delete 1567 -#define wxChoice_GetColumns 1568 -#define wxChoice_SetColumns 1569 -#define wxComboBox_new_0 1570 -#define wxComboBox_new_3 1572 -#define wxComboBox_destruct 1573 -#define wxComboBox_Create 1575 -#define wxComboBox_CanCopy 1576 -#define wxComboBox_CanCut 1577 -#define wxComboBox_CanPaste 1578 -#define wxComboBox_CanRedo 1579 -#define wxComboBox_CanUndo 1580 -#define wxComboBox_Copy 1581 -#define wxComboBox_Cut 1582 -#define wxComboBox_GetInsertionPoint 1583 -#define wxComboBox_GetLastPosition 1584 -#define wxComboBox_GetValue 1585 -#define wxComboBox_Paste 1586 -#define wxComboBox_Redo 1587 -#define wxComboBox_Replace 1588 -#define wxComboBox_Remove 1589 -#define wxComboBox_SetInsertionPoint 1590 -#define wxComboBox_SetInsertionPointEnd 1591 -#define wxComboBox_SetSelection_1 1592 -#define wxComboBox_SetSelection_2 1593 -#define wxComboBox_SetValue 1594 -#define wxComboBox_Undo 1595 -#define wxGauge_new_0 1596 -#define wxGauge_new_4 1597 -#define wxGauge_Create 1598 -#define wxGauge_GetBezelFace 1599 -#define wxGauge_GetRange 1600 -#define wxGauge_GetShadowWidth 1601 -#define wxGauge_GetValue 1602 -#define wxGauge_IsVertical 1603 -#define wxGauge_SetBezelFace 1604 -#define wxGauge_SetRange 1605 -#define wxGauge_SetShadowWidth 1606 -#define wxGauge_SetValue 1607 -#define wxGauge_Pulse 1608 -#define wxGauge_destroy 1609 -#define wxGenericDirCtrl_new_0 1610 -#define wxGenericDirCtrl_new_2 1611 -#define wxGenericDirCtrl_destruct 1612 -#define wxGenericDirCtrl_Create 1613 -#define wxGenericDirCtrl_Init 1614 -#define wxGenericDirCtrl_CollapseTree 1615 -#define wxGenericDirCtrl_ExpandPath 1616 -#define wxGenericDirCtrl_GetDefaultPath 1617 -#define wxGenericDirCtrl_GetPath 1618 -#define wxGenericDirCtrl_GetFilePath 1619 -#define wxGenericDirCtrl_GetFilter 1620 -#define wxGenericDirCtrl_GetFilterIndex 1621 -#define wxGenericDirCtrl_GetRootId 1622 -#define wxGenericDirCtrl_GetTreeCtrl 1623 -#define wxGenericDirCtrl_ReCreateTree 1624 -#define wxGenericDirCtrl_SetDefaultPath 1625 -#define wxGenericDirCtrl_SetFilter 1626 -#define wxGenericDirCtrl_SetFilterIndex 1627 -#define wxGenericDirCtrl_SetPath 1628 -#define wxStaticBox_new_4 1630 -#define wxStaticBox_new_0 1631 -#define wxStaticBox_Create 1632 -#define wxStaticBox_destroy 1633 -#define wxStaticLine_new_2 1635 -#define wxStaticLine_new_0 1636 -#define wxStaticLine_Create 1637 -#define wxStaticLine_IsVertical 1638 -#define wxStaticLine_GetDefaultSize 1639 -#define wxStaticLine_destroy 1640 -#define wxListBox_new_3 1643 -#define wxListBox_new_0 1644 -#define wxListBox_destruct 1646 -#define wxListBox_Create 1648 -#define wxListBox_Deselect 1649 -#define wxListBox_GetSelections 1650 -#define wxListBox_InsertItems 1651 -#define wxListBox_IsSelected 1652 -#define wxListBox_Set 1654 -#define wxListBox_HitTest 1655 -#define wxListBox_SetFirstItem_1_0 1656 -#define wxListBox_SetFirstItem_1_1 1657 -#define wxListCtrl_new_0 1658 -#define wxListCtrl_new_2 1659 -#define wxListCtrl_Arrange 1660 -#define wxListCtrl_AssignImageList 1661 -#define wxListCtrl_ClearAll 1662 -#define wxListCtrl_Create 1663 -#define wxListCtrl_DeleteAllItems 1664 -#define wxListCtrl_DeleteColumn 1665 -#define wxListCtrl_DeleteItem 1666 -#define wxListCtrl_EditLabel 1667 -#define wxListCtrl_EnsureVisible 1668 -#define wxListCtrl_FindItem_3_0 1669 -#define wxListCtrl_FindItem_3_1 1670 -#define wxListCtrl_GetColumn 1671 -#define wxListCtrl_GetColumnCount 1672 -#define wxListCtrl_GetColumnWidth 1673 -#define wxListCtrl_GetCountPerPage 1674 -#define wxListCtrl_GetEditControl 1675 -#define wxListCtrl_GetImageList 1676 -#define wxListCtrl_GetItem 1677 -#define wxListCtrl_GetItemBackgroundColour 1678 -#define wxListCtrl_GetItemCount 1679 -#define wxListCtrl_GetItemData 1680 -#define wxListCtrl_GetItemFont 1681 -#define wxListCtrl_GetItemPosition 1682 -#define wxListCtrl_GetItemRect 1683 -#define wxListCtrl_GetItemSpacing 1684 -#define wxListCtrl_GetItemState 1685 -#define wxListCtrl_GetItemText 1686 -#define wxListCtrl_GetItemTextColour 1687 -#define wxListCtrl_GetNextItem 1688 -#define wxListCtrl_GetSelectedItemCount 1689 -#define wxListCtrl_GetTextColour 1690 -#define wxListCtrl_GetTopItem 1691 -#define wxListCtrl_GetViewRect 1692 -#define wxListCtrl_HitTest 1693 -#define wxListCtrl_InsertColumn_2 1694 -#define wxListCtrl_InsertColumn_3 1695 -#define wxListCtrl_InsertItem_1 1696 -#define wxListCtrl_InsertItem_2_1 1697 -#define wxListCtrl_InsertItem_2_0 1698 -#define wxListCtrl_InsertItem_3 1699 -#define wxListCtrl_RefreshItem 1700 -#define wxListCtrl_RefreshItems 1701 -#define wxListCtrl_ScrollList 1702 -#define wxListCtrl_SetBackgroundColour 1703 -#define wxListCtrl_SetColumn 1704 -#define wxListCtrl_SetColumnWidth 1705 -#define wxListCtrl_SetImageList 1706 -#define wxListCtrl_SetItem_1 1707 -#define wxListCtrl_SetItem_4 1708 -#define wxListCtrl_SetItemBackgroundColour 1709 -#define wxListCtrl_SetItemCount 1710 -#define wxListCtrl_SetItemData 1711 -#define wxListCtrl_SetItemFont 1712 -#define wxListCtrl_SetItemImage 1713 -#define wxListCtrl_SetItemColumnImage 1714 -#define wxListCtrl_SetItemPosition 1715 -#define wxListCtrl_SetItemState 1716 -#define wxListCtrl_SetItemText 1717 -#define wxListCtrl_SetItemTextColour 1718 -#define wxListCtrl_SetSingleStyle 1719 -#define wxListCtrl_SetTextColour 1720 -#define wxListCtrl_SetWindowStyleFlag 1721 -#define wxListCtrl_SortItems 1722 -#define wxListCtrl_destroy 1723 -#define wxListView_ClearColumnImage 1724 -#define wxListView_Focus 1725 -#define wxListView_GetFirstSelected 1726 -#define wxListView_GetFocusedItem 1727 -#define wxListView_GetNextSelected 1728 -#define wxListView_IsSelected 1729 -#define wxListView_Select 1730 -#define wxListView_SetColumnImage 1731 -#define wxListItem_new_0 1732 -#define wxListItem_new_1 1733 -#define wxListItem_destruct 1734 -#define wxListItem_Clear 1735 -#define wxListItem_GetAlign 1736 -#define wxListItem_GetBackgroundColour 1737 -#define wxListItem_GetColumn 1738 -#define wxListItem_GetFont 1739 -#define wxListItem_GetId 1740 -#define wxListItem_GetImage 1741 -#define wxListItem_GetMask 1742 -#define wxListItem_GetState 1743 -#define wxListItem_GetText 1744 -#define wxListItem_GetTextColour 1745 -#define wxListItem_GetWidth 1746 -#define wxListItem_SetAlign 1747 -#define wxListItem_SetBackgroundColour 1748 -#define wxListItem_SetColumn 1749 -#define wxListItem_SetFont 1750 -#define wxListItem_SetId 1751 -#define wxListItem_SetImage 1752 -#define wxListItem_SetMask 1753 -#define wxListItem_SetState 1754 -#define wxListItem_SetStateMask 1755 -#define wxListItem_SetText 1756 -#define wxListItem_SetTextColour 1757 -#define wxListItem_SetWidth 1758 -#define wxImageList_new_0 1759 -#define wxImageList_new_3 1760 -#define wxImageList_Add_1 1761 -#define wxImageList_Add_2_0 1762 -#define wxImageList_Add_2_1 1763 -#define wxImageList_Create 1764 -#define wxImageList_Draw 1766 -#define wxImageList_GetBitmap 1767 -#define wxImageList_GetIcon 1768 -#define wxImageList_GetImageCount 1769 -#define wxImageList_GetSize 1770 -#define wxImageList_Remove 1771 -#define wxImageList_RemoveAll 1772 -#define wxImageList_Replace_2 1773 -#define wxImageList_Replace_3 1774 -#define wxImageList_destroy 1775 -#define wxTextAttr_new_0 1776 -#define wxTextAttr_new_2 1777 -#define wxTextAttr_GetAlignment 1778 -#define wxTextAttr_GetBackgroundColour 1779 -#define wxTextAttr_GetFont 1780 -#define wxTextAttr_GetLeftIndent 1781 -#define wxTextAttr_GetLeftSubIndent 1782 -#define wxTextAttr_GetRightIndent 1783 -#define wxTextAttr_GetTabs 1784 -#define wxTextAttr_GetTextColour 1785 -#define wxTextAttr_HasBackgroundColour 1786 -#define wxTextAttr_HasFont 1787 -#define wxTextAttr_HasTextColour 1788 -#define wxTextAttr_GetFlags 1789 -#define wxTextAttr_IsDefault 1790 -#define wxTextAttr_SetAlignment 1791 -#define wxTextAttr_SetBackgroundColour 1792 -#define wxTextAttr_SetFlags 1793 -#define wxTextAttr_SetFont 1794 -#define wxTextAttr_SetLeftIndent 1795 -#define wxTextAttr_SetRightIndent 1796 -#define wxTextAttr_SetTabs 1797 -#define wxTextAttr_SetTextColour 1798 -#define wxTextAttr_destroy 1799 -#define wxTextCtrl_new_3 1801 -#define wxTextCtrl_new_0 1802 -#define wxTextCtrl_destruct 1804 -#define wxTextCtrl_AppendText 1805 -#define wxTextCtrl_CanCopy 1806 -#define wxTextCtrl_CanCut 1807 -#define wxTextCtrl_CanPaste 1808 -#define wxTextCtrl_CanRedo 1809 -#define wxTextCtrl_CanUndo 1810 -#define wxTextCtrl_Clear 1811 -#define wxTextCtrl_Copy 1812 -#define wxTextCtrl_Create 1813 -#define wxTextCtrl_Cut 1814 -#define wxTextCtrl_DiscardEdits 1815 -#define wxTextCtrl_EmulateKeyPress 1816 -#define wxTextCtrl_GetDefaultStyle 1817 -#define wxTextCtrl_GetInsertionPoint 1818 -#define wxTextCtrl_GetLastPosition 1819 -#define wxTextCtrl_GetLineLength 1820 -#define wxTextCtrl_GetLineText 1821 -#define wxTextCtrl_GetNumberOfLines 1822 -#define wxTextCtrl_GetRange 1823 -#define wxTextCtrl_GetSelection 1824 -#define wxTextCtrl_GetStringSelection 1825 -#define wxTextCtrl_GetStyle 1826 -#define wxTextCtrl_GetValue 1827 -#define wxTextCtrl_IsEditable 1828 -#define wxTextCtrl_IsModified 1829 -#define wxTextCtrl_IsMultiLine 1830 -#define wxTextCtrl_IsSingleLine 1831 -#define wxTextCtrl_LoadFile 1832 -#define wxTextCtrl_MarkDirty 1833 -#define wxTextCtrl_Paste 1834 -#define wxTextCtrl_PositionToXY 1835 -#define wxTextCtrl_Redo 1836 -#define wxTextCtrl_Remove 1837 -#define wxTextCtrl_Replace 1838 -#define wxTextCtrl_SaveFile 1839 -#define wxTextCtrl_SetDefaultStyle 1840 -#define wxTextCtrl_SetEditable 1841 -#define wxTextCtrl_SetInsertionPoint 1842 -#define wxTextCtrl_SetInsertionPointEnd 1843 -#define wxTextCtrl_SetMaxLength 1845 -#define wxTextCtrl_SetSelection 1846 -#define wxTextCtrl_SetStyle 1847 -#define wxTextCtrl_SetValue 1848 -#define wxTextCtrl_ShowPosition 1849 -#define wxTextCtrl_Undo 1850 -#define wxTextCtrl_WriteText 1851 -#define wxTextCtrl_XYToPosition 1852 -#define wxNotebook_new_0 1855 -#define wxNotebook_new_3 1856 -#define wxNotebook_destruct 1857 -#define wxNotebook_AddPage 1858 -#define wxNotebook_AdvanceSelection 1859 -#define wxNotebook_AssignImageList 1860 -#define wxNotebook_Create 1861 -#define wxNotebook_DeleteAllPages 1862 -#define wxNotebook_DeletePage 1863 -#define wxNotebook_RemovePage 1864 -#define wxNotebook_GetCurrentPage 1865 -#define wxNotebook_GetImageList 1866 -#define wxNotebook_GetPage 1868 -#define wxNotebook_GetPageCount 1869 -#define wxNotebook_GetPageImage 1870 -#define wxNotebook_GetPageText 1871 -#define wxNotebook_GetRowCount 1872 -#define wxNotebook_GetSelection 1873 -#define wxNotebook_GetThemeBackgroundColour 1874 -#define wxNotebook_HitTest 1876 -#define wxNotebook_InsertPage 1878 -#define wxNotebook_SetImageList 1879 -#define wxNotebook_SetPadding 1880 -#define wxNotebook_SetPageSize 1881 -#define wxNotebook_SetPageImage 1882 -#define wxNotebook_SetPageText 1883 -#define wxNotebook_SetSelection 1884 -#define wxNotebook_ChangeSelection 1885 -#define wxChoicebook_new_0 1886 -#define wxChoicebook_new_3 1887 -#define wxChoicebook_AddPage 1888 -#define wxChoicebook_AdvanceSelection 1889 -#define wxChoicebook_AssignImageList 1890 -#define wxChoicebook_Create 1891 -#define wxChoicebook_DeleteAllPages 1892 -#define wxChoicebook_DeletePage 1893 -#define wxChoicebook_RemovePage 1894 -#define wxChoicebook_GetCurrentPage 1895 -#define wxChoicebook_GetImageList 1896 -#define wxChoicebook_GetPage 1898 -#define wxChoicebook_GetPageCount 1899 -#define wxChoicebook_GetPageImage 1900 -#define wxChoicebook_GetPageText 1901 -#define wxChoicebook_GetSelection 1902 -#define wxChoicebook_HitTest 1903 -#define wxChoicebook_InsertPage 1904 -#define wxChoicebook_SetImageList 1905 -#define wxChoicebook_SetPageSize 1906 -#define wxChoicebook_SetPageImage 1907 -#define wxChoicebook_SetPageText 1908 -#define wxChoicebook_SetSelection 1909 -#define wxChoicebook_ChangeSelection 1910 -#define wxChoicebook_destroy 1911 -#define wxToolbook_new_0 1912 -#define wxToolbook_new_3 1913 -#define wxToolbook_AddPage 1914 -#define wxToolbook_AdvanceSelection 1915 -#define wxToolbook_AssignImageList 1916 -#define wxToolbook_Create 1917 -#define wxToolbook_DeleteAllPages 1918 -#define wxToolbook_DeletePage 1919 -#define wxToolbook_RemovePage 1920 -#define wxToolbook_GetCurrentPage 1921 -#define wxToolbook_GetImageList 1922 -#define wxToolbook_GetPage 1924 -#define wxToolbook_GetPageCount 1925 -#define wxToolbook_GetPageImage 1926 -#define wxToolbook_GetPageText 1927 -#define wxToolbook_GetSelection 1928 -#define wxToolbook_HitTest 1930 -#define wxToolbook_InsertPage 1931 -#define wxToolbook_SetImageList 1932 -#define wxToolbook_SetPageSize 1933 -#define wxToolbook_SetPageImage 1934 -#define wxToolbook_SetPageText 1935 -#define wxToolbook_SetSelection 1936 -#define wxToolbook_ChangeSelection 1937 -#define wxToolbook_destroy 1938 -#define wxListbook_new_0 1939 -#define wxListbook_new_3 1940 -#define wxListbook_AddPage 1941 -#define wxListbook_AdvanceSelection 1942 -#define wxListbook_AssignImageList 1943 -#define wxListbook_Create 1944 -#define wxListbook_DeleteAllPages 1945 -#define wxListbook_DeletePage 1946 -#define wxListbook_RemovePage 1947 -#define wxListbook_GetCurrentPage 1948 -#define wxListbook_GetImageList 1949 -#define wxListbook_GetPage 1951 -#define wxListbook_GetPageCount 1952 -#define wxListbook_GetPageImage 1953 -#define wxListbook_GetPageText 1954 -#define wxListbook_GetSelection 1955 -#define wxListbook_HitTest 1957 -#define wxListbook_InsertPage 1958 -#define wxListbook_SetImageList 1959 -#define wxListbook_SetPageSize 1960 -#define wxListbook_SetPageImage 1961 -#define wxListbook_SetPageText 1962 -#define wxListbook_SetSelection 1963 -#define wxListbook_ChangeSelection 1964 -#define wxListbook_destroy 1965 -#define wxTreebook_new_0 1966 -#define wxTreebook_new_3 1967 -#define wxTreebook_AddPage 1968 -#define wxTreebook_AdvanceSelection 1969 -#define wxTreebook_AssignImageList 1970 -#define wxTreebook_Create 1971 -#define wxTreebook_DeleteAllPages 1972 -#define wxTreebook_DeletePage 1973 -#define wxTreebook_RemovePage 1974 -#define wxTreebook_GetCurrentPage 1975 -#define wxTreebook_GetImageList 1976 -#define wxTreebook_GetPage 1978 -#define wxTreebook_GetPageCount 1979 -#define wxTreebook_GetPageImage 1980 -#define wxTreebook_GetPageText 1981 -#define wxTreebook_GetSelection 1982 -#define wxTreebook_ExpandNode 1983 -#define wxTreebook_IsNodeExpanded 1984 -#define wxTreebook_HitTest 1986 -#define wxTreebook_InsertPage 1987 -#define wxTreebook_InsertSubPage 1988 -#define wxTreebook_SetImageList 1989 -#define wxTreebook_SetPageSize 1990 -#define wxTreebook_SetPageImage 1991 -#define wxTreebook_SetPageText 1992 -#define wxTreebook_SetSelection 1993 -#define wxTreebook_ChangeSelection 1994 -#define wxTreebook_destroy 1995 -#define wxTreeCtrl_new_2 1998 -#define wxTreeCtrl_new_0 1999 -#define wxTreeCtrl_destruct 2001 -#define wxTreeCtrl_AddRoot 2002 -#define wxTreeCtrl_AppendItem 2003 -#define wxTreeCtrl_AssignImageList 2004 -#define wxTreeCtrl_AssignStateImageList 2005 -#define wxTreeCtrl_Collapse 2006 -#define wxTreeCtrl_CollapseAndReset 2007 -#define wxTreeCtrl_Create 2008 -#define wxTreeCtrl_Delete 2009 -#define wxTreeCtrl_DeleteAllItems 2010 -#define wxTreeCtrl_DeleteChildren 2011 -#define wxTreeCtrl_EnsureVisible 2012 -#define wxTreeCtrl_Expand 2013 -#define wxTreeCtrl_GetBoundingRect 2014 -#define wxTreeCtrl_GetChildrenCount 2016 -#define wxTreeCtrl_GetCount 2017 -#define wxTreeCtrl_GetEditControl 2018 -#define wxTreeCtrl_GetFirstChild 2019 -#define wxTreeCtrl_GetNextChild 2020 -#define wxTreeCtrl_GetFirstVisibleItem 2021 -#define wxTreeCtrl_GetImageList 2022 -#define wxTreeCtrl_GetIndent 2023 -#define wxTreeCtrl_GetItemBackgroundColour 2024 -#define wxTreeCtrl_GetItemData 2025 -#define wxTreeCtrl_GetItemFont 2026 -#define wxTreeCtrl_GetItemImage_1 2027 -#define wxTreeCtrl_GetItemImage_2 2028 -#define wxTreeCtrl_GetItemText 2029 -#define wxTreeCtrl_GetItemTextColour 2030 -#define wxTreeCtrl_GetLastChild 2031 -#define wxTreeCtrl_GetNextSibling 2032 -#define wxTreeCtrl_GetNextVisible 2033 -#define wxTreeCtrl_GetItemParent 2034 -#define wxTreeCtrl_GetPrevSibling 2035 -#define wxTreeCtrl_GetPrevVisible 2036 -#define wxTreeCtrl_GetRootItem 2037 -#define wxTreeCtrl_GetSelection 2038 -#define wxTreeCtrl_GetSelections 2039 -#define wxTreeCtrl_GetStateImageList 2040 -#define wxTreeCtrl_HitTest 2041 -#define wxTreeCtrl_InsertItem 2043 -#define wxTreeCtrl_IsBold 2044 -#define wxTreeCtrl_IsExpanded 2045 -#define wxTreeCtrl_IsSelected 2046 -#define wxTreeCtrl_IsVisible 2047 -#define wxTreeCtrl_ItemHasChildren 2048 -#define wxTreeCtrl_PrependItem 2049 -#define wxTreeCtrl_ScrollTo 2050 -#define wxTreeCtrl_SelectItem_1 2051 -#define wxTreeCtrl_SelectItem_2 2052 -#define wxTreeCtrl_SetIndent 2053 -#define wxTreeCtrl_SetImageList 2054 -#define wxTreeCtrl_SetItemBackgroundColour 2055 -#define wxTreeCtrl_SetItemBold 2056 -#define wxTreeCtrl_SetItemData 2057 -#define wxTreeCtrl_SetItemDropHighlight 2058 -#define wxTreeCtrl_SetItemFont 2059 -#define wxTreeCtrl_SetItemHasChildren 2060 -#define wxTreeCtrl_SetItemImage_2 2061 -#define wxTreeCtrl_SetItemImage_3 2062 -#define wxTreeCtrl_SetItemText 2063 -#define wxTreeCtrl_SetItemTextColour 2064 -#define wxTreeCtrl_SetStateImageList 2065 -#define wxTreeCtrl_SetWindowStyle 2066 -#define wxTreeCtrl_SortChildren 2067 -#define wxTreeCtrl_Toggle 2068 -#define wxTreeCtrl_ToggleItemSelection 2069 -#define wxTreeCtrl_Unselect 2070 -#define wxTreeCtrl_UnselectAll 2071 -#define wxTreeCtrl_UnselectItem 2072 -#define wxScrollBar_new_0 2073 -#define wxScrollBar_new_3 2074 -#define wxScrollBar_destruct 2075 -#define wxScrollBar_Create 2076 -#define wxScrollBar_GetRange 2077 -#define wxScrollBar_GetPageSize 2078 -#define wxScrollBar_GetThumbPosition 2079 -#define wxScrollBar_GetThumbSize 2080 -#define wxScrollBar_SetThumbPosition 2081 -#define wxScrollBar_SetScrollbar 2082 -#define wxSpinButton_new_2 2084 -#define wxSpinButton_new_0 2085 -#define wxSpinButton_Create 2086 -#define wxSpinButton_GetMax 2087 -#define wxSpinButton_GetMin 2088 -#define wxSpinButton_GetValue 2089 -#define wxSpinButton_SetRange 2090 -#define wxSpinButton_SetValue 2091 -#define wxSpinButton_destroy 2092 -#define wxSpinCtrl_new_0 2093 -#define wxSpinCtrl_new_2 2094 -#define wxSpinCtrl_Create 2096 -#define wxSpinCtrl_SetValue_1_1 2099 -#define wxSpinCtrl_SetValue_1_0 2100 -#define wxSpinCtrl_GetValue 2102 -#define wxSpinCtrl_SetRange 2104 -#define wxSpinCtrl_SetSelection 2105 -#define wxSpinCtrl_GetMin 2107 -#define wxSpinCtrl_GetMax 2109 -#define wxSpinCtrl_destroy 2110 -#define wxStaticText_new_0 2111 -#define wxStaticText_new_4 2112 -#define wxStaticText_Create 2113 -#define wxStaticText_GetLabel 2114 -#define wxStaticText_SetLabel 2115 -#define wxStaticText_Wrap 2116 -#define wxStaticText_destroy 2117 -#define wxStaticBitmap_new_0 2118 -#define wxStaticBitmap_new_4 2119 -#define wxStaticBitmap_Create 2120 -#define wxStaticBitmap_GetBitmap 2121 -#define wxStaticBitmap_SetBitmap 2122 -#define wxStaticBitmap_destroy 2123 -#define wxRadioBox_new 2124 -#define wxRadioBox_destruct 2126 -#define wxRadioBox_Create 2127 -#define wxRadioBox_Enable_2 2128 -#define wxRadioBox_Enable_1 2129 -#define wxRadioBox_GetSelection 2130 -#define wxRadioBox_GetString 2131 -#define wxRadioBox_SetSelection 2132 -#define wxRadioBox_Show_2 2133 -#define wxRadioBox_Show_1 2134 -#define wxRadioBox_GetColumnCount 2135 -#define wxRadioBox_GetItemHelpText 2136 -#define wxRadioBox_GetItemToolTip 2137 -#define wxRadioBox_GetItemFromPoint 2139 -#define wxRadioBox_GetRowCount 2140 -#define wxRadioBox_IsItemEnabled 2141 -#define wxRadioBox_IsItemShown 2142 -#define wxRadioBox_SetItemHelpText 2143 -#define wxRadioBox_SetItemToolTip 2144 -#define wxRadioButton_new_0 2145 -#define wxRadioButton_new_4 2146 -#define wxRadioButton_Create 2147 -#define wxRadioButton_GetValue 2148 -#define wxRadioButton_SetValue 2149 -#define wxRadioButton_destroy 2150 -#define wxSlider_new_6 2152 -#define wxSlider_new_0 2153 -#define wxSlider_Create 2154 -#define wxSlider_GetLineSize 2155 -#define wxSlider_GetMax 2156 -#define wxSlider_GetMin 2157 -#define wxSlider_GetPageSize 2158 -#define wxSlider_GetThumbLength 2159 -#define wxSlider_GetValue 2160 -#define wxSlider_SetLineSize 2161 -#define wxSlider_SetPageSize 2162 -#define wxSlider_SetRange 2163 -#define wxSlider_SetThumbLength 2164 -#define wxSlider_SetValue 2165 -#define wxSlider_destroy 2166 -#define wxDialog_new_4 2168 -#define wxDialog_new_0 2169 -#define wxDialog_destruct 2171 -#define wxDialog_Create 2172 -#define wxDialog_CreateButtonSizer 2173 -#define wxDialog_CreateStdDialogButtonSizer 2174 -#define wxDialog_EndModal 2175 -#define wxDialog_GetAffirmativeId 2176 -#define wxDialog_GetReturnCode 2177 -#define wxDialog_IsModal 2178 -#define wxDialog_SetAffirmativeId 2179 -#define wxDialog_SetReturnCode 2180 -#define wxDialog_Show 2181 -#define wxDialog_ShowModal 2182 -#define wxColourDialog_new_0 2183 -#define wxColourDialog_new_2 2184 -#define wxColourDialog_destruct 2185 -#define wxColourDialog_Create 2186 -#define wxColourDialog_GetColourData 2187 -#define wxColourData_new_0 2188 -#define wxColourData_new_1 2189 -#define wxColourData_destruct 2190 -#define wxColourData_GetChooseFull 2191 -#define wxColourData_GetColour 2192 -#define wxColourData_GetCustomColour 2194 -#define wxColourData_SetChooseFull 2195 -#define wxColourData_SetColour 2196 -#define wxColourData_SetCustomColour 2197 -#define wxPalette_new_0 2198 -#define wxPalette_new_4 2199 -#define wxPalette_destruct 2201 -#define wxPalette_Create 2202 -#define wxPalette_GetColoursCount 2203 -#define wxPalette_GetPixel 2204 -#define wxPalette_GetRGB 2205 -#define wxPalette_IsOk 2206 -#define wxDirDialog_new 2210 -#define wxDirDialog_destruct 2211 -#define wxDirDialog_GetPath 2212 -#define wxDirDialog_GetMessage 2213 -#define wxDirDialog_SetMessage 2214 -#define wxDirDialog_SetPath 2215 -#define wxFileDialog_new 2219 -#define wxFileDialog_destruct 2220 -#define wxFileDialog_GetDirectory 2221 -#define wxFileDialog_GetFilename 2222 -#define wxFileDialog_GetFilenames 2223 -#define wxFileDialog_GetFilterIndex 2224 -#define wxFileDialog_GetMessage 2225 -#define wxFileDialog_GetPath 2226 -#define wxFileDialog_GetPaths 2227 -#define wxFileDialog_GetWildcard 2228 -#define wxFileDialog_SetDirectory 2229 -#define wxFileDialog_SetFilename 2230 -#define wxFileDialog_SetFilterIndex 2231 -#define wxFileDialog_SetMessage 2232 -#define wxFileDialog_SetPath 2233 -#define wxFileDialog_SetWildcard 2234 -#define wxPickerBase_SetInternalMargin 2235 -#define wxPickerBase_GetInternalMargin 2236 -#define wxPickerBase_SetTextCtrlProportion 2237 -#define wxPickerBase_SetPickerCtrlProportion 2238 -#define wxPickerBase_GetTextCtrlProportion 2239 -#define wxPickerBase_GetPickerCtrlProportion 2240 -#define wxPickerBase_HasTextCtrl 2241 -#define wxPickerBase_GetTextCtrl 2242 -#define wxPickerBase_IsTextCtrlGrowable 2243 -#define wxPickerBase_SetPickerCtrlGrowable 2244 -#define wxPickerBase_SetTextCtrlGrowable 2245 -#define wxPickerBase_IsPickerCtrlGrowable 2246 -#define wxFilePickerCtrl_new_0 2247 -#define wxFilePickerCtrl_new_3 2248 -#define wxFilePickerCtrl_Create 2249 -#define wxFilePickerCtrl_GetPath 2250 -#define wxFilePickerCtrl_SetPath 2251 -#define wxFilePickerCtrl_destroy 2252 -#define wxDirPickerCtrl_new_0 2253 -#define wxDirPickerCtrl_new_3 2254 -#define wxDirPickerCtrl_Create 2255 -#define wxDirPickerCtrl_GetPath 2256 -#define wxDirPickerCtrl_SetPath 2257 -#define wxDirPickerCtrl_destroy 2258 -#define wxColourPickerCtrl_new_0 2259 -#define wxColourPickerCtrl_new_3 2260 -#define wxColourPickerCtrl_Create 2261 -#define wxColourPickerCtrl_GetColour 2262 -#define wxColourPickerCtrl_SetColour_1_1 2263 -#define wxColourPickerCtrl_SetColour_1_0 2264 -#define wxColourPickerCtrl_destroy 2265 -#define wxDatePickerCtrl_new_0 2266 -#define wxDatePickerCtrl_new_3 2267 -#define wxDatePickerCtrl_GetRange 2268 -#define wxDatePickerCtrl_GetValue 2269 -#define wxDatePickerCtrl_SetRange 2270 -#define wxDatePickerCtrl_SetValue 2271 -#define wxDatePickerCtrl_destroy 2272 -#define wxFontPickerCtrl_new_0 2273 -#define wxFontPickerCtrl_new_3 2274 -#define wxFontPickerCtrl_Create 2275 -#define wxFontPickerCtrl_GetSelectedFont 2276 -#define wxFontPickerCtrl_SetSelectedFont 2277 -#define wxFontPickerCtrl_GetMaxPointSize 2278 -#define wxFontPickerCtrl_SetMaxPointSize 2279 -#define wxFontPickerCtrl_destroy 2280 -#define wxFindReplaceDialog_new_0 2283 -#define wxFindReplaceDialog_new_4 2284 -#define wxFindReplaceDialog_destruct 2285 -#define wxFindReplaceDialog_Create 2286 -#define wxFindReplaceDialog_GetData 2287 -#define wxFindReplaceData_new_0 2288 -#define wxFindReplaceData_new_1 2289 -#define wxFindReplaceData_GetFindString 2290 -#define wxFindReplaceData_GetReplaceString 2291 -#define wxFindReplaceData_GetFlags 2292 -#define wxFindReplaceData_SetFlags 2293 -#define wxFindReplaceData_SetFindString 2294 -#define wxFindReplaceData_SetReplaceString 2295 -#define wxFindReplaceData_destroy 2296 -#define wxMultiChoiceDialog_new_0 2297 -#define wxMultiChoiceDialog_new_5 2299 -#define wxMultiChoiceDialog_GetSelections 2300 -#define wxMultiChoiceDialog_SetSelections 2301 -#define wxMultiChoiceDialog_destroy 2302 -#define wxSingleChoiceDialog_new_0 2303 -#define wxSingleChoiceDialog_new_5 2305 -#define wxSingleChoiceDialog_GetSelection 2306 -#define wxSingleChoiceDialog_GetStringSelection 2307 -#define wxSingleChoiceDialog_SetSelection 2308 -#define wxSingleChoiceDialog_destroy 2309 -#define wxTextEntryDialog_new 2310 -#define wxTextEntryDialog_GetValue 2311 -#define wxTextEntryDialog_SetValue 2312 -#define wxTextEntryDialog_destroy 2313 -#define wxPasswordEntryDialog_new 2314 -#define wxPasswordEntryDialog_destroy 2315 -#define wxFontData_new_0 2316 -#define wxFontData_new_1 2317 -#define wxFontData_destruct 2318 -#define wxFontData_EnableEffects 2319 -#define wxFontData_GetAllowSymbols 2320 -#define wxFontData_GetColour 2321 -#define wxFontData_GetChosenFont 2322 -#define wxFontData_GetEnableEffects 2323 -#define wxFontData_GetInitialFont 2324 -#define wxFontData_GetShowHelp 2325 -#define wxFontData_SetAllowSymbols 2326 -#define wxFontData_SetChosenFont 2327 -#define wxFontData_SetColour 2328 -#define wxFontData_SetInitialFont 2329 -#define wxFontData_SetRange 2330 -#define wxFontData_SetShowHelp 2331 -#define wxFontDialog_new_0 2335 -#define wxFontDialog_new_2 2337 -#define wxFontDialog_Create 2339 -#define wxFontDialog_GetFontData 2340 -#define wxFontDialog_destroy 2342 -#define wxProgressDialog_new 2343 -#define wxProgressDialog_destruct 2344 -#define wxProgressDialog_Resume 2345 -#define wxProgressDialog_Update_2 2346 -#define wxProgressDialog_Update_0 2347 -#define wxMessageDialog_new 2348 -#define wxMessageDialog_destruct 2349 -#define wxPageSetupDialog_new 2350 -#define wxPageSetupDialog_destruct 2351 -#define wxPageSetupDialog_GetPageSetupData 2352 -#define wxPageSetupDialog_ShowModal 2353 -#define wxPageSetupDialogData_new_0 2354 -#define wxPageSetupDialogData_new_1_0 2355 -#define wxPageSetupDialogData_new_1_1 2356 -#define wxPageSetupDialogData_destruct 2357 -#define wxPageSetupDialogData_EnableHelp 2358 -#define wxPageSetupDialogData_EnableMargins 2359 -#define wxPageSetupDialogData_EnableOrientation 2360 -#define wxPageSetupDialogData_EnablePaper 2361 -#define wxPageSetupDialogData_EnablePrinter 2362 -#define wxPageSetupDialogData_GetDefaultMinMargins 2363 -#define wxPageSetupDialogData_GetEnableMargins 2364 -#define wxPageSetupDialogData_GetEnableOrientation 2365 -#define wxPageSetupDialogData_GetEnablePaper 2366 -#define wxPageSetupDialogData_GetEnablePrinter 2367 -#define wxPageSetupDialogData_GetEnableHelp 2368 -#define wxPageSetupDialogData_GetDefaultInfo 2369 -#define wxPageSetupDialogData_GetMarginTopLeft 2370 -#define wxPageSetupDialogData_GetMarginBottomRight 2371 -#define wxPageSetupDialogData_GetMinMarginTopLeft 2372 -#define wxPageSetupDialogData_GetMinMarginBottomRight 2373 -#define wxPageSetupDialogData_GetPaperId 2374 -#define wxPageSetupDialogData_GetPaperSize 2375 -#define wxPageSetupDialogData_GetPrintData 2377 -#define wxPageSetupDialogData_IsOk 2378 -#define wxPageSetupDialogData_SetDefaultInfo 2379 -#define wxPageSetupDialogData_SetDefaultMinMargins 2380 -#define wxPageSetupDialogData_SetMarginTopLeft 2381 -#define wxPageSetupDialogData_SetMarginBottomRight 2382 -#define wxPageSetupDialogData_SetMinMarginTopLeft 2383 -#define wxPageSetupDialogData_SetMinMarginBottomRight 2384 -#define wxPageSetupDialogData_SetPaperId 2385 -#define wxPageSetupDialogData_SetPaperSize_1_1 2386 -#define wxPageSetupDialogData_SetPaperSize_1_0 2387 -#define wxPageSetupDialogData_SetPrintData 2388 -#define wxPrintDialog_new_2_0 2389 -#define wxPrintDialog_new_2_1 2390 -#define wxPrintDialog_destruct 2391 -#define wxPrintDialog_GetPrintDialogData 2392 -#define wxPrintDialog_GetPrintDC 2393 -#define wxPrintDialogData_new_0 2394 -#define wxPrintDialogData_new_1_1 2395 -#define wxPrintDialogData_new_1_0 2396 -#define wxPrintDialogData_destruct 2397 -#define wxPrintDialogData_EnableHelp 2398 -#define wxPrintDialogData_EnablePageNumbers 2399 -#define wxPrintDialogData_EnablePrintToFile 2400 -#define wxPrintDialogData_EnableSelection 2401 -#define wxPrintDialogData_GetAllPages 2402 -#define wxPrintDialogData_GetCollate 2403 -#define wxPrintDialogData_GetFromPage 2404 -#define wxPrintDialogData_GetMaxPage 2405 -#define wxPrintDialogData_GetMinPage 2406 -#define wxPrintDialogData_GetNoCopies 2407 -#define wxPrintDialogData_GetPrintData 2408 -#define wxPrintDialogData_GetPrintToFile 2409 -#define wxPrintDialogData_GetSelection 2410 -#define wxPrintDialogData_GetToPage 2411 -#define wxPrintDialogData_IsOk 2412 -#define wxPrintDialogData_SetCollate 2413 -#define wxPrintDialogData_SetFromPage 2414 -#define wxPrintDialogData_SetMaxPage 2415 -#define wxPrintDialogData_SetMinPage 2416 -#define wxPrintDialogData_SetNoCopies 2417 -#define wxPrintDialogData_SetPrintData 2418 -#define wxPrintDialogData_SetPrintToFile 2419 -#define wxPrintDialogData_SetSelection 2420 -#define wxPrintDialogData_SetToPage 2421 -#define wxPrintData_new_0 2422 -#define wxPrintData_new_1 2423 -#define wxPrintData_destruct 2424 -#define wxPrintData_GetCollate 2425 -#define wxPrintData_GetBin 2426 -#define wxPrintData_GetColour 2427 -#define wxPrintData_GetDuplex 2428 -#define wxPrintData_GetNoCopies 2429 -#define wxPrintData_GetOrientation 2430 -#define wxPrintData_GetPaperId 2431 -#define wxPrintData_GetPrinterName 2432 -#define wxPrintData_GetQuality 2433 -#define wxPrintData_IsOk 2434 -#define wxPrintData_SetBin 2435 -#define wxPrintData_SetCollate 2436 -#define wxPrintData_SetColour 2437 -#define wxPrintData_SetDuplex 2438 -#define wxPrintData_SetNoCopies 2439 -#define wxPrintData_SetOrientation 2440 -#define wxPrintData_SetPaperId 2441 -#define wxPrintData_SetPrinterName 2442 -#define wxPrintData_SetQuality 2443 -#define wxPrintPreview_new_2 2446 -#define wxPrintPreview_new_3 2447 -#define wxPrintPreview_destruct 2449 -#define wxPrintPreview_GetCanvas 2450 -#define wxPrintPreview_GetCurrentPage 2451 -#define wxPrintPreview_GetFrame 2452 -#define wxPrintPreview_GetMaxPage 2453 -#define wxPrintPreview_GetMinPage 2454 -#define wxPrintPreview_GetPrintout 2455 -#define wxPrintPreview_GetPrintoutForPrinting 2456 -#define wxPrintPreview_IsOk 2457 -#define wxPrintPreview_PaintPage 2458 -#define wxPrintPreview_Print 2459 -#define wxPrintPreview_RenderPage 2460 -#define wxPrintPreview_SetCanvas 2461 -#define wxPrintPreview_SetCurrentPage 2462 -#define wxPrintPreview_SetFrame 2463 -#define wxPrintPreview_SetPrintout 2464 -#define wxPrintPreview_SetZoom 2465 -#define wxPreviewFrame_new 2466 -#define wxPreviewFrame_destruct 2467 -#define wxPreviewFrame_CreateControlBar 2468 -#define wxPreviewFrame_CreateCanvas 2469 -#define wxPreviewFrame_Initialize 2470 -#define wxPreviewFrame_OnCloseWindow 2471 -#define wxPreviewControlBar_new 2472 -#define wxPreviewControlBar_destruct 2473 -#define wxPreviewControlBar_CreateButtons 2474 -#define wxPreviewControlBar_GetPrintPreview 2475 -#define wxPreviewControlBar_GetZoomControl 2476 -#define wxPreviewControlBar_SetZoomControl 2477 -#define wxPrinter_new 2479 -#define wxPrinter_CreateAbortWindow 2480 -#define wxPrinter_GetAbort 2481 -#define wxPrinter_GetLastError 2482 -#define wxPrinter_GetPrintDialogData 2483 -#define wxPrinter_Print 2484 -#define wxPrinter_PrintDialog 2485 -#define wxPrinter_ReportError 2486 -#define wxPrinter_Setup 2487 -#define wxPrinter_destroy 2488 -#define wxXmlResource_new_1 2489 -#define wxXmlResource_new_2 2490 -#define wxXmlResource_destruct 2491 -#define wxXmlResource_AttachUnknownControl 2492 -#define wxXmlResource_ClearHandlers 2493 -#define wxXmlResource_CompareVersion 2494 -#define wxXmlResource_Get 2495 -#define wxXmlResource_GetFlags 2496 -#define wxXmlResource_GetVersion 2497 -#define wxXmlResource_GetXRCID 2498 -#define wxXmlResource_InitAllHandlers 2499 -#define wxXmlResource_Load 2500 -#define wxXmlResource_LoadBitmap 2501 -#define wxXmlResource_LoadDialog_2 2502 -#define wxXmlResource_LoadDialog_3 2503 -#define wxXmlResource_LoadFrame_2 2504 -#define wxXmlResource_LoadFrame_3 2505 -#define wxXmlResource_LoadIcon 2506 -#define wxXmlResource_LoadMenu 2507 -#define wxXmlResource_LoadMenuBar_2 2508 -#define wxXmlResource_LoadMenuBar_1 2509 -#define wxXmlResource_LoadPanel_2 2510 -#define wxXmlResource_LoadPanel_3 2511 -#define wxXmlResource_LoadToolBar 2512 -#define wxXmlResource_Set 2513 -#define wxXmlResource_SetFlags 2514 -#define wxXmlResource_Unload 2515 -#define wxXmlResource_xrcctrl 2516 -#define wxHtmlEasyPrinting_new 2517 -#define wxHtmlEasyPrinting_destruct 2518 -#define wxHtmlEasyPrinting_GetPrintData 2519 -#define wxHtmlEasyPrinting_GetPageSetupData 2520 -#define wxHtmlEasyPrinting_PreviewFile 2521 -#define wxHtmlEasyPrinting_PreviewText 2522 -#define wxHtmlEasyPrinting_PrintFile 2523 -#define wxHtmlEasyPrinting_PrintText 2524 -#define wxHtmlEasyPrinting_PageSetup 2525 -#define wxHtmlEasyPrinting_SetFonts 2526 -#define wxHtmlEasyPrinting_SetHeader 2527 -#define wxHtmlEasyPrinting_SetFooter 2528 -#define wxGLCanvas_new_2 2530 -#define wxGLCanvas_new_3_1 2531 -#define wxGLCanvas_new_3_0 2532 -#define wxGLCanvas_GetContext 2533 -#define wxGLCanvas_SetCurrent 2535 -#define wxGLCanvas_SwapBuffers 2536 -#define wxGLCanvas_destroy 2537 -#define wxAuiManager_new 2538 -#define wxAuiManager_destruct 2539 -#define wxAuiManager_AddPane_2_1 2540 -#define wxAuiManager_AddPane_3 2541 -#define wxAuiManager_AddPane_2_0 2542 -#define wxAuiManager_DetachPane 2543 -#define wxAuiManager_GetAllPanes 2544 -#define wxAuiManager_GetArtProvider 2545 -#define wxAuiManager_GetDockSizeConstraint 2546 -#define wxAuiManager_GetFlags 2547 -#define wxAuiManager_GetManagedWindow 2548 -#define wxAuiManager_GetManager 2549 -#define wxAuiManager_GetPane_1_1 2550 -#define wxAuiManager_GetPane_1_0 2551 -#define wxAuiManager_HideHint 2552 -#define wxAuiManager_InsertPane 2553 -#define wxAuiManager_LoadPaneInfo 2554 -#define wxAuiManager_LoadPerspective 2555 -#define wxAuiManager_SavePaneInfo 2556 -#define wxAuiManager_SavePerspective 2557 -#define wxAuiManager_SetArtProvider 2558 -#define wxAuiManager_SetDockSizeConstraint 2559 -#define wxAuiManager_SetFlags 2560 -#define wxAuiManager_SetManagedWindow 2561 -#define wxAuiManager_ShowHint 2562 -#define wxAuiManager_UnInit 2563 -#define wxAuiManager_Update 2564 -#define wxAuiPaneInfo_new_0 2565 -#define wxAuiPaneInfo_new_1 2566 -#define wxAuiPaneInfo_destruct 2567 -#define wxAuiPaneInfo_BestSize_1 2568 -#define wxAuiPaneInfo_BestSize_2 2569 -#define wxAuiPaneInfo_Bottom 2570 -#define wxAuiPaneInfo_BottomDockable 2571 -#define wxAuiPaneInfo_Caption 2572 -#define wxAuiPaneInfo_CaptionVisible 2573 -#define wxAuiPaneInfo_Centre 2574 -#define wxAuiPaneInfo_CentrePane 2575 -#define wxAuiPaneInfo_CloseButton 2576 -#define wxAuiPaneInfo_DefaultPane 2577 -#define wxAuiPaneInfo_DestroyOnClose 2578 -#define wxAuiPaneInfo_Direction 2579 -#define wxAuiPaneInfo_Dock 2580 -#define wxAuiPaneInfo_Dockable 2581 -#define wxAuiPaneInfo_Fixed 2582 -#define wxAuiPaneInfo_Float 2583 -#define wxAuiPaneInfo_Floatable 2584 -#define wxAuiPaneInfo_FloatingPosition_1 2585 -#define wxAuiPaneInfo_FloatingPosition_2 2586 -#define wxAuiPaneInfo_FloatingSize_1 2587 -#define wxAuiPaneInfo_FloatingSize_2 2588 -#define wxAuiPaneInfo_Gripper 2589 -#define wxAuiPaneInfo_GripperTop 2590 -#define wxAuiPaneInfo_HasBorder 2591 -#define wxAuiPaneInfo_HasCaption 2592 -#define wxAuiPaneInfo_HasCloseButton 2593 -#define wxAuiPaneInfo_HasFlag 2594 -#define wxAuiPaneInfo_HasGripper 2595 -#define wxAuiPaneInfo_HasGripperTop 2596 -#define wxAuiPaneInfo_HasMaximizeButton 2597 -#define wxAuiPaneInfo_HasMinimizeButton 2598 -#define wxAuiPaneInfo_HasPinButton 2599 -#define wxAuiPaneInfo_Hide 2600 -#define wxAuiPaneInfo_IsBottomDockable 2601 -#define wxAuiPaneInfo_IsDocked 2602 -#define wxAuiPaneInfo_IsFixed 2603 -#define wxAuiPaneInfo_IsFloatable 2604 -#define wxAuiPaneInfo_IsFloating 2605 -#define wxAuiPaneInfo_IsLeftDockable 2606 -#define wxAuiPaneInfo_IsMovable 2607 -#define wxAuiPaneInfo_IsOk 2608 -#define wxAuiPaneInfo_IsResizable 2609 -#define wxAuiPaneInfo_IsRightDockable 2610 -#define wxAuiPaneInfo_IsShown 2611 -#define wxAuiPaneInfo_IsToolbar 2612 -#define wxAuiPaneInfo_IsTopDockable 2613 -#define wxAuiPaneInfo_Layer 2614 -#define wxAuiPaneInfo_Left 2615 -#define wxAuiPaneInfo_LeftDockable 2616 -#define wxAuiPaneInfo_MaxSize_1 2617 -#define wxAuiPaneInfo_MaxSize_2 2618 -#define wxAuiPaneInfo_MaximizeButton 2619 -#define wxAuiPaneInfo_MinSize_1 2620 -#define wxAuiPaneInfo_MinSize_2 2621 -#define wxAuiPaneInfo_MinimizeButton 2622 -#define wxAuiPaneInfo_Movable 2623 -#define wxAuiPaneInfo_Name 2624 -#define wxAuiPaneInfo_PaneBorder 2625 -#define wxAuiPaneInfo_PinButton 2626 -#define wxAuiPaneInfo_Position 2627 -#define wxAuiPaneInfo_Resizable 2628 -#define wxAuiPaneInfo_Right 2629 -#define wxAuiPaneInfo_RightDockable 2630 -#define wxAuiPaneInfo_Row 2631 -#define wxAuiPaneInfo_SafeSet 2632 -#define wxAuiPaneInfo_SetFlag 2633 -#define wxAuiPaneInfo_Show 2634 -#define wxAuiPaneInfo_ToolbarPane 2635 -#define wxAuiPaneInfo_Top 2636 -#define wxAuiPaneInfo_TopDockable 2637 -#define wxAuiPaneInfo_Window 2638 -#define wxAuiNotebook_new_0 2639 -#define wxAuiNotebook_new_2 2640 -#define wxAuiNotebook_AddPage 2641 -#define wxAuiNotebook_Create 2642 -#define wxAuiNotebook_DeletePage 2643 -#define wxAuiNotebook_GetArtProvider 2644 -#define wxAuiNotebook_GetPage 2645 -#define wxAuiNotebook_GetPageBitmap 2646 -#define wxAuiNotebook_GetPageCount 2647 -#define wxAuiNotebook_GetPageIndex 2648 -#define wxAuiNotebook_GetPageText 2649 -#define wxAuiNotebook_GetSelection 2650 -#define wxAuiNotebook_InsertPage 2651 -#define wxAuiNotebook_RemovePage 2652 -#define wxAuiNotebook_SetArtProvider 2653 -#define wxAuiNotebook_SetFont 2654 -#define wxAuiNotebook_SetPageBitmap 2655 -#define wxAuiNotebook_SetPageText 2656 -#define wxAuiNotebook_SetSelection 2657 -#define wxAuiNotebook_SetTabCtrlHeight 2658 -#define wxAuiNotebook_SetUniformBitmapSize 2659 -#define wxAuiNotebook_destroy 2660 -#define wxMDIParentFrame_new_0 2661 -#define wxMDIParentFrame_new_4 2662 -#define wxMDIParentFrame_destruct 2663 -#define wxMDIParentFrame_ActivateNext 2664 -#define wxMDIParentFrame_ActivatePrevious 2665 -#define wxMDIParentFrame_ArrangeIcons 2666 -#define wxMDIParentFrame_Cascade 2667 -#define wxMDIParentFrame_Create 2668 -#define wxMDIParentFrame_GetActiveChild 2669 -#define wxMDIParentFrame_GetClientWindow 2670 -#define wxMDIParentFrame_Tile 2671 -#define wxMDIChildFrame_new_0 2672 -#define wxMDIChildFrame_new_4 2673 -#define wxMDIChildFrame_destruct 2674 -#define wxMDIChildFrame_Activate 2675 -#define wxMDIChildFrame_Create 2676 -#define wxMDIChildFrame_Maximize 2677 -#define wxMDIChildFrame_Restore 2678 -#define wxMDIClientWindow_new_0 2679 -#define wxMDIClientWindow_new_2 2680 -#define wxMDIClientWindow_destruct 2681 -#define wxMDIClientWindow_CreateClient 2682 -#define wxLayoutAlgorithm_new 2683 -#define wxLayoutAlgorithm_LayoutFrame 2684 -#define wxLayoutAlgorithm_LayoutMDIFrame 2685 -#define wxLayoutAlgorithm_LayoutWindow 2686 -#define wxLayoutAlgorithm_destroy 2687 -#define wxEvent_GetId 2688 -#define wxEvent_GetSkipped 2689 -#define wxEvent_GetTimestamp 2690 -#define wxEvent_IsCommandEvent 2691 -#define wxEvent_ResumePropagation 2692 -#define wxEvent_ShouldPropagate 2693 -#define wxEvent_Skip 2694 -#define wxEvent_StopPropagation 2695 -#define wxCommandEvent_getClientData 2696 -#define wxCommandEvent_GetExtraLong 2697 -#define wxCommandEvent_GetInt 2698 -#define wxCommandEvent_GetSelection 2699 -#define wxCommandEvent_GetString 2700 -#define wxCommandEvent_IsChecked 2701 -#define wxCommandEvent_IsSelection 2702 -#define wxCommandEvent_SetInt 2703 -#define wxCommandEvent_SetString 2704 -#define wxScrollEvent_GetOrientation 2705 -#define wxScrollEvent_GetPosition 2706 -#define wxScrollWinEvent_GetOrientation 2707 -#define wxScrollWinEvent_GetPosition 2708 -#define wxMouseEvent_AltDown 2709 -#define wxMouseEvent_Button 2710 -#define wxMouseEvent_ButtonDClick 2711 -#define wxMouseEvent_ButtonDown 2712 -#define wxMouseEvent_ButtonUp 2713 -#define wxMouseEvent_CmdDown 2714 -#define wxMouseEvent_ControlDown 2715 -#define wxMouseEvent_Dragging 2716 -#define wxMouseEvent_Entering 2717 -#define wxMouseEvent_GetButton 2718 -#define wxMouseEvent_GetPosition 2721 -#define wxMouseEvent_GetLogicalPosition 2722 -#define wxMouseEvent_GetLinesPerAction 2723 -#define wxMouseEvent_GetWheelRotation 2724 -#define wxMouseEvent_GetWheelDelta 2725 -#define wxMouseEvent_GetX 2726 -#define wxMouseEvent_GetY 2727 -#define wxMouseEvent_IsButton 2728 -#define wxMouseEvent_IsPageScroll 2729 -#define wxMouseEvent_Leaving 2730 -#define wxMouseEvent_LeftDClick 2731 -#define wxMouseEvent_LeftDown 2732 -#define wxMouseEvent_LeftIsDown 2733 -#define wxMouseEvent_LeftUp 2734 -#define wxMouseEvent_MetaDown 2735 -#define wxMouseEvent_MiddleDClick 2736 -#define wxMouseEvent_MiddleDown 2737 -#define wxMouseEvent_MiddleIsDown 2738 -#define wxMouseEvent_MiddleUp 2739 -#define wxMouseEvent_Moving 2740 -#define wxMouseEvent_RightDClick 2741 -#define wxMouseEvent_RightDown 2742 -#define wxMouseEvent_RightIsDown 2743 -#define wxMouseEvent_RightUp 2744 -#define wxMouseEvent_ShiftDown 2745 -#define wxSetCursorEvent_GetCursor 2746 -#define wxSetCursorEvent_GetX 2747 -#define wxSetCursorEvent_GetY 2748 -#define wxSetCursorEvent_HasCursor 2749 -#define wxSetCursorEvent_SetCursor 2750 -#define wxKeyEvent_AltDown 2751 -#define wxKeyEvent_CmdDown 2752 -#define wxKeyEvent_ControlDown 2753 -#define wxKeyEvent_GetKeyCode 2754 -#define wxKeyEvent_GetModifiers 2755 -#define wxKeyEvent_GetPosition 2758 -#define wxKeyEvent_GetRawKeyCode 2759 -#define wxKeyEvent_GetRawKeyFlags 2760 -#define wxKeyEvent_GetUnicodeKey 2761 -#define wxKeyEvent_GetX 2762 -#define wxKeyEvent_GetY 2763 -#define wxKeyEvent_HasModifiers 2764 -#define wxKeyEvent_MetaDown 2765 -#define wxKeyEvent_ShiftDown 2766 -#define wxSizeEvent_GetSize 2767 -#define wxMoveEvent_GetPosition 2768 -#define wxEraseEvent_GetDC 2769 -#define wxFocusEvent_GetWindow 2770 -#define wxChildFocusEvent_GetWindow 2771 -#define wxMenuEvent_GetMenu 2772 -#define wxMenuEvent_GetMenuId 2773 -#define wxMenuEvent_IsPopup 2774 -#define wxCloseEvent_CanVeto 2775 -#define wxCloseEvent_GetLoggingOff 2776 -#define wxCloseEvent_SetCanVeto 2777 -#define wxCloseEvent_SetLoggingOff 2778 -#define wxCloseEvent_Veto 2779 -#define wxShowEvent_SetShow 2780 -#define wxShowEvent_GetShow 2781 -#define wxIconizeEvent_Iconized 2782 -#define wxJoystickEvent_ButtonDown 2783 -#define wxJoystickEvent_ButtonIsDown 2784 -#define wxJoystickEvent_ButtonUp 2785 -#define wxJoystickEvent_GetButtonChange 2786 -#define wxJoystickEvent_GetButtonState 2787 -#define wxJoystickEvent_GetJoystick 2788 -#define wxJoystickEvent_GetPosition 2789 -#define wxJoystickEvent_GetZPosition 2790 -#define wxJoystickEvent_IsButton 2791 -#define wxJoystickEvent_IsMove 2792 -#define wxJoystickEvent_IsZMove 2793 -#define wxUpdateUIEvent_CanUpdate 2794 -#define wxUpdateUIEvent_Check 2795 -#define wxUpdateUIEvent_Enable 2796 -#define wxUpdateUIEvent_Show 2797 -#define wxUpdateUIEvent_GetChecked 2798 -#define wxUpdateUIEvent_GetEnabled 2799 -#define wxUpdateUIEvent_GetShown 2800 -#define wxUpdateUIEvent_GetSetChecked 2801 -#define wxUpdateUIEvent_GetSetEnabled 2802 -#define wxUpdateUIEvent_GetSetShown 2803 -#define wxUpdateUIEvent_GetSetText 2804 -#define wxUpdateUIEvent_GetText 2805 -#define wxUpdateUIEvent_GetMode 2806 -#define wxUpdateUIEvent_GetUpdateInterval 2807 -#define wxUpdateUIEvent_ResetUpdateTime 2808 -#define wxUpdateUIEvent_SetMode 2809 -#define wxUpdateUIEvent_SetText 2810 -#define wxUpdateUIEvent_SetUpdateInterval 2811 -#define wxMouseCaptureChangedEvent_GetCapturedWindow 2812 -#define wxPaletteChangedEvent_SetChangedWindow 2813 -#define wxPaletteChangedEvent_GetChangedWindow 2814 -#define wxQueryNewPaletteEvent_SetPaletteRealized 2815 -#define wxQueryNewPaletteEvent_GetPaletteRealized 2816 -#define wxNavigationKeyEvent_GetDirection 2817 -#define wxNavigationKeyEvent_SetDirection 2818 -#define wxNavigationKeyEvent_IsWindowChange 2819 -#define wxNavigationKeyEvent_SetWindowChange 2820 -#define wxNavigationKeyEvent_IsFromTab 2821 -#define wxNavigationKeyEvent_SetFromTab 2822 -#define wxNavigationKeyEvent_GetCurrentFocus 2823 -#define wxNavigationKeyEvent_SetCurrentFocus 2824 -#define wxHelpEvent_GetOrigin 2825 -#define wxHelpEvent_GetPosition 2826 -#define wxHelpEvent_SetOrigin 2827 -#define wxHelpEvent_SetPosition 2828 -#define wxContextMenuEvent_GetPosition 2829 -#define wxContextMenuEvent_SetPosition 2830 -#define wxIdleEvent_CanSend 2831 -#define wxIdleEvent_GetMode 2832 -#define wxIdleEvent_RequestMore 2833 -#define wxIdleEvent_MoreRequested 2834 -#define wxIdleEvent_SetMode 2835 -#define wxGridEvent_AltDown 2836 -#define wxGridEvent_ControlDown 2837 -#define wxGridEvent_GetCol 2838 -#define wxGridEvent_GetPosition 2839 -#define wxGridEvent_GetRow 2840 -#define wxGridEvent_MetaDown 2841 -#define wxGridEvent_Selecting 2842 -#define wxGridEvent_ShiftDown 2843 -#define wxNotifyEvent_Allow 2844 -#define wxNotifyEvent_IsAllowed 2845 -#define wxNotifyEvent_Veto 2846 -#define wxSashEvent_GetEdge 2847 -#define wxSashEvent_GetDragRect 2848 -#define wxSashEvent_GetDragStatus 2849 -#define wxListEvent_GetCacheFrom 2850 -#define wxListEvent_GetCacheTo 2851 -#define wxListEvent_GetKeyCode 2852 -#define wxListEvent_GetIndex 2853 -#define wxListEvent_GetColumn 2854 -#define wxListEvent_GetPoint 2855 -#define wxListEvent_GetLabel 2856 -#define wxListEvent_GetText 2857 -#define wxListEvent_GetImage 2858 -#define wxListEvent_GetData 2859 -#define wxListEvent_GetMask 2860 -#define wxListEvent_GetItem 2861 -#define wxListEvent_IsEditCancelled 2862 -#define wxDateEvent_GetDate 2863 -#define wxCalendarEvent_GetWeekDay 2864 -#define wxFileDirPickerEvent_GetPath 2865 -#define wxColourPickerEvent_GetColour 2866 -#define wxFontPickerEvent_GetFont 2867 -#define wxStyledTextEvent_GetPosition 2868 -#define wxStyledTextEvent_GetKey 2869 -#define wxStyledTextEvent_GetModifiers 2870 -#define wxStyledTextEvent_GetModificationType 2871 -#define wxStyledTextEvent_GetText 2872 -#define wxStyledTextEvent_GetLength 2873 -#define wxStyledTextEvent_GetLinesAdded 2874 -#define wxStyledTextEvent_GetLine 2875 -#define wxStyledTextEvent_GetFoldLevelNow 2876 -#define wxStyledTextEvent_GetFoldLevelPrev 2877 -#define wxStyledTextEvent_GetMargin 2878 -#define wxStyledTextEvent_GetMessage 2879 -#define wxStyledTextEvent_GetWParam 2880 -#define wxStyledTextEvent_GetLParam 2881 -#define wxStyledTextEvent_GetListType 2882 -#define wxStyledTextEvent_GetX 2883 -#define wxStyledTextEvent_GetY 2884 -#define wxStyledTextEvent_GetDragText 2885 -#define wxStyledTextEvent_GetDragAllowMove 2886 -#define wxStyledTextEvent_GetDragResult 2887 -#define wxStyledTextEvent_GetShift 2888 -#define wxStyledTextEvent_GetControl 2889 -#define wxStyledTextEvent_GetAlt 2890 -#define utils_wxGetKeyState 2891 -#define utils_wxGetMousePosition 2892 -#define utils_wxGetMouseState 2893 -#define utils_wxSetDetectableAutoRepeat 2894 -#define utils_wxBell 2895 -#define utils_wxFindMenuItemId 2896 -#define utils_wxGenericFindWindowAtPoint 2897 -#define utils_wxFindWindowAtPoint 2898 -#define utils_wxBeginBusyCursor 2899 -#define utils_wxEndBusyCursor 2900 -#define utils_wxIsBusy 2901 -#define utils_wxShutdown 2902 -#define utils_wxShell 2903 -#define utils_wxLaunchDefaultBrowser 2904 -#define utils_wxGetEmailAddress 2905 -#define utils_wxGetUserId 2906 -#define utils_wxGetHomeDir 2907 -#define utils_wxNewId 2908 -#define utils_wxRegisterId 2909 -#define utils_wxGetCurrentId 2910 -#define utils_wxGetOsDescription 2911 -#define utils_wxIsPlatformLittleEndian 2912 -#define utils_wxIsPlatform64Bit 2913 -#define wxPrintout_new 2914 -#define wxPrintout_destruct 2915 -#define wxPrintout_GetDC 2916 -#define wxPrintout_GetPageSizeMM 2917 -#define wxPrintout_GetPageSizePixels 2918 -#define wxPrintout_GetPaperRectPixels 2919 -#define wxPrintout_GetPPIPrinter 2920 -#define wxPrintout_GetPPIScreen 2921 -#define wxPrintout_GetTitle 2922 -#define wxPrintout_IsPreview 2923 -#define wxPrintout_FitThisSizeToPaper 2924 -#define wxPrintout_FitThisSizeToPage 2925 -#define wxPrintout_FitThisSizeToPageMargins 2926 -#define wxPrintout_MapScreenSizeToPaper 2927 -#define wxPrintout_MapScreenSizeToPage 2928 -#define wxPrintout_MapScreenSizeToPageMargins 2929 -#define wxPrintout_MapScreenSizeToDevice 2930 -#define wxPrintout_GetLogicalPaperRect 2931 -#define wxPrintout_GetLogicalPageRect 2932 -#define wxPrintout_GetLogicalPageMarginsRect 2933 -#define wxPrintout_SetLogicalOrigin 2934 -#define wxPrintout_OffsetLogicalOrigin 2935 -#define wxStyledTextCtrl_new_2 2936 -#define wxStyledTextCtrl_new_0 2937 -#define wxStyledTextCtrl_destruct 2938 -#define wxStyledTextCtrl_Create 2939 -#define wxStyledTextCtrl_AddText 2940 -#define wxStyledTextCtrl_AddStyledText 2941 -#define wxStyledTextCtrl_InsertText 2942 -#define wxStyledTextCtrl_ClearAll 2943 -#define wxStyledTextCtrl_ClearDocumentStyle 2944 -#define wxStyledTextCtrl_GetLength 2945 -#define wxStyledTextCtrl_GetCharAt 2946 -#define wxStyledTextCtrl_GetCurrentPos 2947 -#define wxStyledTextCtrl_GetAnchor 2948 -#define wxStyledTextCtrl_GetStyleAt 2949 -#define wxStyledTextCtrl_Redo 2950 -#define wxStyledTextCtrl_SetUndoCollection 2951 -#define wxStyledTextCtrl_SelectAll 2952 -#define wxStyledTextCtrl_SetSavePoint 2953 -#define wxStyledTextCtrl_GetStyledText 2954 -#define wxStyledTextCtrl_CanRedo 2955 -#define wxStyledTextCtrl_MarkerLineFromHandle 2956 -#define wxStyledTextCtrl_MarkerDeleteHandle 2957 -#define wxStyledTextCtrl_GetUndoCollection 2958 -#define wxStyledTextCtrl_GetViewWhiteSpace 2959 -#define wxStyledTextCtrl_SetViewWhiteSpace 2960 -#define wxStyledTextCtrl_PositionFromPoint 2961 -#define wxStyledTextCtrl_PositionFromPointClose 2962 -#define wxStyledTextCtrl_GotoLine 2963 -#define wxStyledTextCtrl_GotoPos 2964 -#define wxStyledTextCtrl_SetAnchor 2965 -#define wxStyledTextCtrl_GetCurLine 2966 -#define wxStyledTextCtrl_GetEndStyled 2967 -#define wxStyledTextCtrl_ConvertEOLs 2968 -#define wxStyledTextCtrl_GetEOLMode 2969 -#define wxStyledTextCtrl_SetEOLMode 2970 -#define wxStyledTextCtrl_StartStyling 2971 -#define wxStyledTextCtrl_SetStyling 2972 -#define wxStyledTextCtrl_GetBufferedDraw 2973 -#define wxStyledTextCtrl_SetBufferedDraw 2974 -#define wxStyledTextCtrl_SetTabWidth 2975 -#define wxStyledTextCtrl_GetTabWidth 2976 -#define wxStyledTextCtrl_SetCodePage 2977 -#define wxStyledTextCtrl_MarkerDefine 2978 -#define wxStyledTextCtrl_MarkerSetForeground 2979 -#define wxStyledTextCtrl_MarkerSetBackground 2980 -#define wxStyledTextCtrl_MarkerAdd 2981 -#define wxStyledTextCtrl_MarkerDelete 2982 -#define wxStyledTextCtrl_MarkerDeleteAll 2983 -#define wxStyledTextCtrl_MarkerGet 2984 -#define wxStyledTextCtrl_MarkerNext 2985 -#define wxStyledTextCtrl_MarkerPrevious 2986 -#define wxStyledTextCtrl_MarkerDefineBitmap 2987 -#define wxStyledTextCtrl_MarkerAddSet 2988 -#define wxStyledTextCtrl_MarkerSetAlpha 2989 -#define wxStyledTextCtrl_SetMarginType 2990 -#define wxStyledTextCtrl_GetMarginType 2991 -#define wxStyledTextCtrl_SetMarginWidth 2992 -#define wxStyledTextCtrl_GetMarginWidth 2993 -#define wxStyledTextCtrl_SetMarginMask 2994 -#define wxStyledTextCtrl_GetMarginMask 2995 -#define wxStyledTextCtrl_SetMarginSensitive 2996 -#define wxStyledTextCtrl_GetMarginSensitive 2997 -#define wxStyledTextCtrl_StyleClearAll 2998 -#define wxStyledTextCtrl_StyleSetForeground 2999 -#define wxStyledTextCtrl_StyleSetBackground 3000 -#define wxStyledTextCtrl_StyleSetBold 3001 -#define wxStyledTextCtrl_StyleSetItalic 3002 -#define wxStyledTextCtrl_StyleSetSize 3003 -#define wxStyledTextCtrl_StyleSetFaceName 3004 -#define wxStyledTextCtrl_StyleSetEOLFilled 3005 -#define wxStyledTextCtrl_StyleResetDefault 3006 -#define wxStyledTextCtrl_StyleSetUnderline 3007 -#define wxStyledTextCtrl_StyleSetCase 3008 -#define wxStyledTextCtrl_StyleSetHotSpot 3009 -#define wxStyledTextCtrl_SetSelForeground 3010 -#define wxStyledTextCtrl_SetSelBackground 3011 -#define wxStyledTextCtrl_GetSelAlpha 3012 -#define wxStyledTextCtrl_SetSelAlpha 3013 -#define wxStyledTextCtrl_SetCaretForeground 3014 -#define wxStyledTextCtrl_CmdKeyAssign 3015 -#define wxStyledTextCtrl_CmdKeyClear 3016 -#define wxStyledTextCtrl_CmdKeyClearAll 3017 -#define wxStyledTextCtrl_SetStyleBytes 3018 -#define wxStyledTextCtrl_StyleSetVisible 3019 -#define wxStyledTextCtrl_GetCaretPeriod 3020 -#define wxStyledTextCtrl_SetCaretPeriod 3021 -#define wxStyledTextCtrl_SetWordChars 3022 -#define wxStyledTextCtrl_BeginUndoAction 3023 -#define wxStyledTextCtrl_EndUndoAction 3024 -#define wxStyledTextCtrl_IndicatorSetStyle 3025 -#define wxStyledTextCtrl_IndicatorGetStyle 3026 -#define wxStyledTextCtrl_IndicatorSetForeground 3027 -#define wxStyledTextCtrl_IndicatorGetForeground 3028 -#define wxStyledTextCtrl_SetWhitespaceForeground 3029 -#define wxStyledTextCtrl_SetWhitespaceBackground 3030 -#define wxStyledTextCtrl_GetStyleBits 3031 -#define wxStyledTextCtrl_SetLineState 3032 -#define wxStyledTextCtrl_GetLineState 3033 -#define wxStyledTextCtrl_GetMaxLineState 3034 -#define wxStyledTextCtrl_GetCaretLineVisible 3035 -#define wxStyledTextCtrl_SetCaretLineVisible 3036 -#define wxStyledTextCtrl_GetCaretLineBackground 3037 -#define wxStyledTextCtrl_SetCaretLineBackground 3038 -#define wxStyledTextCtrl_AutoCompShow 3039 -#define wxStyledTextCtrl_AutoCompCancel 3040 -#define wxStyledTextCtrl_AutoCompActive 3041 -#define wxStyledTextCtrl_AutoCompPosStart 3042 -#define wxStyledTextCtrl_AutoCompComplete 3043 -#define wxStyledTextCtrl_AutoCompStops 3044 -#define wxStyledTextCtrl_AutoCompSetSeparator 3045 -#define wxStyledTextCtrl_AutoCompGetSeparator 3046 -#define wxStyledTextCtrl_AutoCompSelect 3047 -#define wxStyledTextCtrl_AutoCompSetCancelAtStart 3048 -#define wxStyledTextCtrl_AutoCompGetCancelAtStart 3049 -#define wxStyledTextCtrl_AutoCompSetFillUps 3050 -#define wxStyledTextCtrl_AutoCompSetChooseSingle 3051 -#define wxStyledTextCtrl_AutoCompGetChooseSingle 3052 -#define wxStyledTextCtrl_AutoCompSetIgnoreCase 3053 -#define wxStyledTextCtrl_AutoCompGetIgnoreCase 3054 -#define wxStyledTextCtrl_UserListShow 3055 -#define wxStyledTextCtrl_AutoCompSetAutoHide 3056 -#define wxStyledTextCtrl_AutoCompGetAutoHide 3057 -#define wxStyledTextCtrl_AutoCompSetDropRestOfWord 3058 -#define wxStyledTextCtrl_AutoCompGetDropRestOfWord 3059 -#define wxStyledTextCtrl_RegisterImage 3060 -#define wxStyledTextCtrl_ClearRegisteredImages 3061 -#define wxStyledTextCtrl_AutoCompGetTypeSeparator 3062 -#define wxStyledTextCtrl_AutoCompSetTypeSeparator 3063 -#define wxStyledTextCtrl_AutoCompSetMaxWidth 3064 -#define wxStyledTextCtrl_AutoCompGetMaxWidth 3065 -#define wxStyledTextCtrl_AutoCompSetMaxHeight 3066 -#define wxStyledTextCtrl_AutoCompGetMaxHeight 3067 -#define wxStyledTextCtrl_SetIndent 3068 -#define wxStyledTextCtrl_GetIndent 3069 -#define wxStyledTextCtrl_SetUseTabs 3070 -#define wxStyledTextCtrl_GetUseTabs 3071 -#define wxStyledTextCtrl_SetLineIndentation 3072 -#define wxStyledTextCtrl_GetLineIndentation 3073 -#define wxStyledTextCtrl_GetLineIndentPosition 3074 -#define wxStyledTextCtrl_GetColumn 3075 -#define wxStyledTextCtrl_SetUseHorizontalScrollBar 3076 -#define wxStyledTextCtrl_GetUseHorizontalScrollBar 3077 -#define wxStyledTextCtrl_SetIndentationGuides 3078 -#define wxStyledTextCtrl_GetIndentationGuides 3079 -#define wxStyledTextCtrl_SetHighlightGuide 3080 -#define wxStyledTextCtrl_GetHighlightGuide 3081 -#define wxStyledTextCtrl_GetLineEndPosition 3082 -#define wxStyledTextCtrl_GetCodePage 3083 -#define wxStyledTextCtrl_GetCaretForeground 3084 -#define wxStyledTextCtrl_GetReadOnly 3085 -#define wxStyledTextCtrl_SetCurrentPos 3086 -#define wxStyledTextCtrl_SetSelectionStart 3087 -#define wxStyledTextCtrl_GetSelectionStart 3088 -#define wxStyledTextCtrl_SetSelectionEnd 3089 -#define wxStyledTextCtrl_GetSelectionEnd 3090 -#define wxStyledTextCtrl_SetPrintMagnification 3091 -#define wxStyledTextCtrl_GetPrintMagnification 3092 -#define wxStyledTextCtrl_SetPrintColourMode 3093 -#define wxStyledTextCtrl_GetPrintColourMode 3094 -#define wxStyledTextCtrl_FindText 3095 -#define wxStyledTextCtrl_FormatRange 3096 -#define wxStyledTextCtrl_GetFirstVisibleLine 3097 -#define wxStyledTextCtrl_GetLine 3098 -#define wxStyledTextCtrl_GetLineCount 3099 -#define wxStyledTextCtrl_SetMarginLeft 3100 -#define wxStyledTextCtrl_GetMarginLeft 3101 -#define wxStyledTextCtrl_SetMarginRight 3102 -#define wxStyledTextCtrl_GetMarginRight 3103 -#define wxStyledTextCtrl_GetModify 3104 -#define wxStyledTextCtrl_SetSelection 3105 -#define wxStyledTextCtrl_GetSelectedText 3106 -#define wxStyledTextCtrl_GetTextRange 3107 -#define wxStyledTextCtrl_HideSelection 3108 -#define wxStyledTextCtrl_LineFromPosition 3109 -#define wxStyledTextCtrl_PositionFromLine 3110 -#define wxStyledTextCtrl_LineScroll 3111 -#define wxStyledTextCtrl_EnsureCaretVisible 3112 -#define wxStyledTextCtrl_ReplaceSelection 3113 -#define wxStyledTextCtrl_SetReadOnly 3114 -#define wxStyledTextCtrl_CanPaste 3115 -#define wxStyledTextCtrl_CanUndo 3116 -#define wxStyledTextCtrl_EmptyUndoBuffer 3117 -#define wxStyledTextCtrl_Undo 3118 -#define wxStyledTextCtrl_Cut 3119 -#define wxStyledTextCtrl_Copy 3120 -#define wxStyledTextCtrl_Paste 3121 -#define wxStyledTextCtrl_Clear 3122 -#define wxStyledTextCtrl_SetText 3123 -#define wxStyledTextCtrl_GetText 3124 -#define wxStyledTextCtrl_GetTextLength 3125 -#define wxStyledTextCtrl_GetOvertype 3126 -#define wxStyledTextCtrl_SetCaretWidth 3127 -#define wxStyledTextCtrl_GetCaretWidth 3128 -#define wxStyledTextCtrl_SetTargetStart 3129 -#define wxStyledTextCtrl_GetTargetStart 3130 -#define wxStyledTextCtrl_SetTargetEnd 3131 -#define wxStyledTextCtrl_GetTargetEnd 3132 -#define wxStyledTextCtrl_ReplaceTarget 3133 -#define wxStyledTextCtrl_SearchInTarget 3134 -#define wxStyledTextCtrl_SetSearchFlags 3135 -#define wxStyledTextCtrl_GetSearchFlags 3136 -#define wxStyledTextCtrl_CallTipShow 3137 -#define wxStyledTextCtrl_CallTipCancel 3138 -#define wxStyledTextCtrl_CallTipActive 3139 -#define wxStyledTextCtrl_CallTipPosAtStart 3140 -#define wxStyledTextCtrl_CallTipSetHighlight 3141 -#define wxStyledTextCtrl_CallTipSetBackground 3142 -#define wxStyledTextCtrl_CallTipSetForeground 3143 -#define wxStyledTextCtrl_CallTipSetForegroundHighlight 3144 -#define wxStyledTextCtrl_CallTipUseStyle 3145 -#define wxStyledTextCtrl_VisibleFromDocLine 3146 -#define wxStyledTextCtrl_DocLineFromVisible 3147 -#define wxStyledTextCtrl_WrapCount 3148 -#define wxStyledTextCtrl_SetFoldLevel 3149 -#define wxStyledTextCtrl_GetFoldLevel 3150 -#define wxStyledTextCtrl_GetLastChild 3151 -#define wxStyledTextCtrl_GetFoldParent 3152 -#define wxStyledTextCtrl_ShowLines 3153 -#define wxStyledTextCtrl_HideLines 3154 -#define wxStyledTextCtrl_GetLineVisible 3155 -#define wxStyledTextCtrl_SetFoldExpanded 3156 -#define wxStyledTextCtrl_GetFoldExpanded 3157 -#define wxStyledTextCtrl_ToggleFold 3158 -#define wxStyledTextCtrl_EnsureVisible 3159 -#define wxStyledTextCtrl_SetFoldFlags 3160 -#define wxStyledTextCtrl_EnsureVisibleEnforcePolicy 3161 -#define wxStyledTextCtrl_SetTabIndents 3162 -#define wxStyledTextCtrl_GetTabIndents 3163 -#define wxStyledTextCtrl_SetBackSpaceUnIndents 3164 -#define wxStyledTextCtrl_GetBackSpaceUnIndents 3165 -#define wxStyledTextCtrl_SetMouseDwellTime 3166 -#define wxStyledTextCtrl_GetMouseDwellTime 3167 -#define wxStyledTextCtrl_WordStartPosition 3168 -#define wxStyledTextCtrl_WordEndPosition 3169 -#define wxStyledTextCtrl_SetWrapMode 3170 -#define wxStyledTextCtrl_GetWrapMode 3171 -#define wxStyledTextCtrl_SetWrapVisualFlags 3172 -#define wxStyledTextCtrl_GetWrapVisualFlags 3173 -#define wxStyledTextCtrl_SetWrapVisualFlagsLocation 3174 -#define wxStyledTextCtrl_GetWrapVisualFlagsLocation 3175 -#define wxStyledTextCtrl_SetWrapStartIndent 3176 -#define wxStyledTextCtrl_GetWrapStartIndent 3177 -#define wxStyledTextCtrl_SetLayoutCache 3178 -#define wxStyledTextCtrl_GetLayoutCache 3179 -#define wxStyledTextCtrl_SetScrollWidth 3180 -#define wxStyledTextCtrl_GetScrollWidth 3181 -#define wxStyledTextCtrl_TextWidth 3182 -#define wxStyledTextCtrl_GetEndAtLastLine 3183 -#define wxStyledTextCtrl_TextHeight 3184 -#define wxStyledTextCtrl_SetUseVerticalScrollBar 3185 -#define wxStyledTextCtrl_GetUseVerticalScrollBar 3186 -#define wxStyledTextCtrl_AppendText 3187 -#define wxStyledTextCtrl_GetTwoPhaseDraw 3188 -#define wxStyledTextCtrl_SetTwoPhaseDraw 3189 -#define wxStyledTextCtrl_TargetFromSelection 3190 -#define wxStyledTextCtrl_LinesJoin 3191 -#define wxStyledTextCtrl_LinesSplit 3192 -#define wxStyledTextCtrl_SetFoldMarginColour 3193 -#define wxStyledTextCtrl_SetFoldMarginHiColour 3194 -#define wxStyledTextCtrl_LineDown 3195 -#define wxStyledTextCtrl_LineDownExtend 3196 -#define wxStyledTextCtrl_LineUp 3197 -#define wxStyledTextCtrl_LineUpExtend 3198 -#define wxStyledTextCtrl_CharLeft 3199 -#define wxStyledTextCtrl_CharLeftExtend 3200 -#define wxStyledTextCtrl_CharRight 3201 -#define wxStyledTextCtrl_CharRightExtend 3202 -#define wxStyledTextCtrl_WordLeft 3203 -#define wxStyledTextCtrl_WordLeftExtend 3204 -#define wxStyledTextCtrl_WordRight 3205 -#define wxStyledTextCtrl_WordRightExtend 3206 -#define wxStyledTextCtrl_Home 3207 -#define wxStyledTextCtrl_HomeExtend 3208 -#define wxStyledTextCtrl_LineEnd 3209 -#define wxStyledTextCtrl_LineEndExtend 3210 -#define wxStyledTextCtrl_DocumentStart 3211 -#define wxStyledTextCtrl_DocumentStartExtend 3212 -#define wxStyledTextCtrl_DocumentEnd 3213 -#define wxStyledTextCtrl_DocumentEndExtend 3214 -#define wxStyledTextCtrl_PageUp 3215 -#define wxStyledTextCtrl_PageUpExtend 3216 -#define wxStyledTextCtrl_PageDown 3217 -#define wxStyledTextCtrl_PageDownExtend 3218 -#define wxStyledTextCtrl_EditToggleOvertype 3219 -#define wxStyledTextCtrl_Cancel 3220 -#define wxStyledTextCtrl_DeleteBack 3221 -#define wxStyledTextCtrl_Tab 3222 -#define wxStyledTextCtrl_BackTab 3223 -#define wxStyledTextCtrl_NewLine 3224 -#define wxStyledTextCtrl_FormFeed 3225 -#define wxStyledTextCtrl_VCHome 3226 -#define wxStyledTextCtrl_VCHomeExtend 3227 -#define wxStyledTextCtrl_ZoomIn 3228 -#define wxStyledTextCtrl_ZoomOut 3229 -#define wxStyledTextCtrl_DelWordLeft 3230 -#define wxStyledTextCtrl_DelWordRight 3231 -#define wxStyledTextCtrl_LineCut 3232 -#define wxStyledTextCtrl_LineDelete 3233 -#define wxStyledTextCtrl_LineTranspose 3234 -#define wxStyledTextCtrl_LineDuplicate 3235 -#define wxStyledTextCtrl_LowerCase 3236 -#define wxStyledTextCtrl_UpperCase 3237 -#define wxStyledTextCtrl_LineScrollDown 3238 -#define wxStyledTextCtrl_LineScrollUp 3239 -#define wxStyledTextCtrl_DeleteBackNotLine 3240 -#define wxStyledTextCtrl_HomeDisplay 3241 -#define wxStyledTextCtrl_HomeDisplayExtend 3242 -#define wxStyledTextCtrl_LineEndDisplay 3243 -#define wxStyledTextCtrl_LineEndDisplayExtend 3244 -#define wxStyledTextCtrl_HomeWrapExtend 3245 -#define wxStyledTextCtrl_LineEndWrap 3246 -#define wxStyledTextCtrl_LineEndWrapExtend 3247 -#define wxStyledTextCtrl_VCHomeWrap 3248 -#define wxStyledTextCtrl_VCHomeWrapExtend 3249 -#define wxStyledTextCtrl_LineCopy 3250 -#define wxStyledTextCtrl_MoveCaretInsideView 3251 -#define wxStyledTextCtrl_LineLength 3252 -#define wxStyledTextCtrl_BraceHighlight 3253 -#define wxStyledTextCtrl_BraceBadLight 3254 -#define wxStyledTextCtrl_BraceMatch 3255 -#define wxStyledTextCtrl_GetViewEOL 3256 -#define wxStyledTextCtrl_SetViewEOL 3257 -#define wxStyledTextCtrl_SetModEventMask 3258 -#define wxStyledTextCtrl_GetEdgeColumn 3259 -#define wxStyledTextCtrl_SetEdgeColumn 3260 -#define wxStyledTextCtrl_GetEdgeMode 3261 -#define wxStyledTextCtrl_GetEdgeColour 3262 -#define wxStyledTextCtrl_SetEdgeColour 3263 -#define wxStyledTextCtrl_SearchAnchor 3264 -#define wxStyledTextCtrl_SearchNext 3265 -#define wxStyledTextCtrl_SearchPrev 3266 -#define wxStyledTextCtrl_LinesOnScreen 3267 -#define wxStyledTextCtrl_UsePopUp 3268 -#define wxStyledTextCtrl_SelectionIsRectangle 3269 -#define wxStyledTextCtrl_SetZoom 3270 -#define wxStyledTextCtrl_GetZoom 3271 -#define wxStyledTextCtrl_GetModEventMask 3272 -#define wxStyledTextCtrl_SetSTCFocus 3273 -#define wxStyledTextCtrl_GetSTCFocus 3274 -#define wxStyledTextCtrl_SetStatus 3275 -#define wxStyledTextCtrl_GetStatus 3276 -#define wxStyledTextCtrl_SetMouseDownCaptures 3277 -#define wxStyledTextCtrl_GetMouseDownCaptures 3278 -#define wxStyledTextCtrl_SetSTCCursor 3279 -#define wxStyledTextCtrl_GetSTCCursor 3280 -#define wxStyledTextCtrl_SetControlCharSymbol 3281 -#define wxStyledTextCtrl_GetControlCharSymbol 3282 -#define wxStyledTextCtrl_WordPartLeft 3283 -#define wxStyledTextCtrl_WordPartLeftExtend 3284 -#define wxStyledTextCtrl_WordPartRight 3285 -#define wxStyledTextCtrl_WordPartRightExtend 3286 -#define wxStyledTextCtrl_SetVisiblePolicy 3287 -#define wxStyledTextCtrl_DelLineLeft 3288 -#define wxStyledTextCtrl_DelLineRight 3289 -#define wxStyledTextCtrl_GetXOffset 3290 -#define wxStyledTextCtrl_ChooseCaretX 3291 -#define wxStyledTextCtrl_SetXCaretPolicy 3292 -#define wxStyledTextCtrl_SetYCaretPolicy 3293 -#define wxStyledTextCtrl_GetPrintWrapMode 3294 -#define wxStyledTextCtrl_SetHotspotActiveForeground 3295 -#define wxStyledTextCtrl_SetHotspotActiveBackground 3296 -#define wxStyledTextCtrl_SetHotspotActiveUnderline 3297 -#define wxStyledTextCtrl_SetHotspotSingleLine 3298 -#define wxStyledTextCtrl_ParaDownExtend 3299 -#define wxStyledTextCtrl_ParaUp 3300 -#define wxStyledTextCtrl_ParaUpExtend 3301 -#define wxStyledTextCtrl_PositionBefore 3302 -#define wxStyledTextCtrl_PositionAfter 3303 -#define wxStyledTextCtrl_CopyRange 3304 -#define wxStyledTextCtrl_CopyText 3305 -#define wxStyledTextCtrl_SetSelectionMode 3306 -#define wxStyledTextCtrl_GetSelectionMode 3307 -#define wxStyledTextCtrl_LineDownRectExtend 3308 -#define wxStyledTextCtrl_LineUpRectExtend 3309 -#define wxStyledTextCtrl_CharLeftRectExtend 3310 -#define wxStyledTextCtrl_CharRightRectExtend 3311 -#define wxStyledTextCtrl_HomeRectExtend 3312 -#define wxStyledTextCtrl_VCHomeRectExtend 3313 -#define wxStyledTextCtrl_LineEndRectExtend 3314 -#define wxStyledTextCtrl_PageUpRectExtend 3315 -#define wxStyledTextCtrl_PageDownRectExtend 3316 -#define wxStyledTextCtrl_StutteredPageUp 3317 -#define wxStyledTextCtrl_StutteredPageUpExtend 3318 -#define wxStyledTextCtrl_StutteredPageDown 3319 -#define wxStyledTextCtrl_StutteredPageDownExtend 3320 -#define wxStyledTextCtrl_WordLeftEnd 3321 -#define wxStyledTextCtrl_WordLeftEndExtend 3322 -#define wxStyledTextCtrl_WordRightEnd 3323 -#define wxStyledTextCtrl_WordRightEndExtend 3324 -#define wxStyledTextCtrl_SetWhitespaceChars 3325 -#define wxStyledTextCtrl_SetCharsDefault 3326 -#define wxStyledTextCtrl_AutoCompGetCurrent 3327 -#define wxStyledTextCtrl_Allocate 3328 -#define wxStyledTextCtrl_FindColumn 3329 -#define wxStyledTextCtrl_GetCaretSticky 3330 -#define wxStyledTextCtrl_SetCaretSticky 3331 -#define wxStyledTextCtrl_ToggleCaretSticky 3332 -#define wxStyledTextCtrl_SetPasteConvertEndings 3333 -#define wxStyledTextCtrl_GetPasteConvertEndings 3334 -#define wxStyledTextCtrl_SelectionDuplicate 3335 -#define wxStyledTextCtrl_SetCaretLineBackAlpha 3336 -#define wxStyledTextCtrl_GetCaretLineBackAlpha 3337 -#define wxStyledTextCtrl_StartRecord 3338 -#define wxStyledTextCtrl_StopRecord 3339 -#define wxStyledTextCtrl_SetLexer 3340 -#define wxStyledTextCtrl_GetLexer 3341 -#define wxStyledTextCtrl_Colourise 3342 -#define wxStyledTextCtrl_SetProperty 3343 -#define wxStyledTextCtrl_SetKeyWords 3344 -#define wxStyledTextCtrl_SetLexerLanguage 3345 -#define wxStyledTextCtrl_GetProperty 3346 -#define wxStyledTextCtrl_GetStyleBitsNeeded 3347 -#define wxStyledTextCtrl_GetCurrentLine 3348 -#define wxStyledTextCtrl_StyleSetSpec 3349 -#define wxStyledTextCtrl_StyleSetFont 3350 -#define wxStyledTextCtrl_StyleSetFontAttr 3351 -#define wxStyledTextCtrl_StyleSetCharacterSet 3352 -#define wxStyledTextCtrl_StyleSetFontEncoding 3353 -#define wxStyledTextCtrl_CmdKeyExecute 3354 -#define wxStyledTextCtrl_SetMargins 3355 -#define wxStyledTextCtrl_GetSelection 3356 -#define wxStyledTextCtrl_PointFromPosition 3357 -#define wxStyledTextCtrl_ScrollToLine 3358 -#define wxStyledTextCtrl_ScrollToColumn 3359 -#define wxStyledTextCtrl_SendMsg 3360 -#define wxStyledTextCtrl_SetVScrollBar 3361 -#define wxStyledTextCtrl_SetHScrollBar 3362 -#define wxStyledTextCtrl_GetLastKeydownProcessed 3363 -#define wxStyledTextCtrl_SetLastKeydownProcessed 3364 -#define wxStyledTextCtrl_SaveFile 3365 -#define wxStyledTextCtrl_LoadFile 3366 -#define wxStyledTextCtrl_DoDragOver 3367 -#define wxStyledTextCtrl_DoDropText 3368 -#define wxStyledTextCtrl_GetUseAntiAliasing 3369 -#define wxStyledTextCtrl_AddTextRaw 3370 -#define wxStyledTextCtrl_InsertTextRaw 3371 -#define wxStyledTextCtrl_GetCurLineRaw 3372 -#define wxStyledTextCtrl_GetLineRaw 3373 -#define wxStyledTextCtrl_GetSelectedTextRaw 3374 -#define wxStyledTextCtrl_GetTextRangeRaw 3375 -#define wxStyledTextCtrl_SetTextRaw 3376 -#define wxStyledTextCtrl_GetTextRaw 3377 -#define wxStyledTextCtrl_AppendTextRaw 3378 -#define wxArtProvider_GetBitmap 3379 -#define wxArtProvider_GetIcon 3380 -#define wxTreeEvent_GetKeyCode 3381 -#define wxTreeEvent_GetItem 3382 -#define wxTreeEvent_GetKeyEvent 3383 -#define wxTreeEvent_GetLabel 3384 -#define wxTreeEvent_GetOldItem 3385 -#define wxTreeEvent_GetPoint 3386 -#define wxTreeEvent_IsEditCancelled 3387 -#define wxTreeEvent_SetToolTip 3388 -#define wxNotebookEvent_GetOldSelection 3389 -#define wxNotebookEvent_GetSelection 3390 -#define wxNotebookEvent_SetOldSelection 3391 -#define wxNotebookEvent_SetSelection 3392 -#define wxFileDataObject_new 3393 -#define wxFileDataObject_AddFile 3394 -#define wxFileDataObject_GetFilenames 3395 -#define wxFileDataObject_destroy 3396 -#define wxTextDataObject_new 3397 -#define wxTextDataObject_GetTextLength 3398 -#define wxTextDataObject_GetText 3399 -#define wxTextDataObject_SetText 3400 -#define wxTextDataObject_destroy 3401 -#define wxBitmapDataObject_new_1_1 3402 -#define wxBitmapDataObject_new_1_0 3403 -#define wxBitmapDataObject_GetBitmap 3404 -#define wxBitmapDataObject_SetBitmap 3405 -#define wxBitmapDataObject_destroy 3406 -#define wxClipboard_new 3408 -#define wxClipboard_destruct 3409 -#define wxClipboard_AddData 3410 -#define wxClipboard_Clear 3411 -#define wxClipboard_Close 3412 -#define wxClipboard_Flush 3413 -#define wxClipboard_GetData 3414 -#define wxClipboard_IsOpened 3415 -#define wxClipboard_Open 3416 -#define wxClipboard_SetData 3417 -#define wxClipboard_UsePrimarySelection 3419 -#define wxClipboard_IsSupported 3420 -#define wxClipboard_Get 3421 -#define wxSpinEvent_GetPosition 3422 -#define wxSpinEvent_SetPosition 3423 -#define wxSplitterWindow_new_0 3424 -#define wxSplitterWindow_new_2 3425 -#define wxSplitterWindow_destruct 3426 -#define wxSplitterWindow_Create 3427 -#define wxSplitterWindow_GetMinimumPaneSize 3428 -#define wxSplitterWindow_GetSashGravity 3429 -#define wxSplitterWindow_GetSashPosition 3430 -#define wxSplitterWindow_GetSplitMode 3431 -#define wxSplitterWindow_GetWindow1 3432 -#define wxSplitterWindow_GetWindow2 3433 -#define wxSplitterWindow_Initialize 3434 -#define wxSplitterWindow_IsSplit 3435 -#define wxSplitterWindow_ReplaceWindow 3436 -#define wxSplitterWindow_SetSashGravity 3437 -#define wxSplitterWindow_SetSashPosition 3438 -#define wxSplitterWindow_SetSashSize 3439 -#define wxSplitterWindow_SetMinimumPaneSize 3440 -#define wxSplitterWindow_SetSplitMode 3441 -#define wxSplitterWindow_SplitHorizontally 3442 -#define wxSplitterWindow_SplitVertically 3443 -#define wxSplitterWindow_Unsplit 3444 -#define wxSplitterWindow_UpdateSize 3445 -#define wxSplitterEvent_GetSashPosition 3446 -#define wxSplitterEvent_GetX 3447 -#define wxSplitterEvent_GetY 3448 -#define wxSplitterEvent_GetWindowBeingRemoved 3449 -#define wxSplitterEvent_SetSashPosition 3450 -#define wxHtmlWindow_new_0 3451 -#define wxHtmlWindow_new_2 3452 -#define wxHtmlWindow_AppendToPage 3453 -#define wxHtmlWindow_GetOpenedAnchor 3454 -#define wxHtmlWindow_GetOpenedPage 3455 -#define wxHtmlWindow_GetOpenedPageTitle 3456 -#define wxHtmlWindow_GetRelatedFrame 3457 -#define wxHtmlWindow_HistoryBack 3458 -#define wxHtmlWindow_HistoryCanBack 3459 -#define wxHtmlWindow_HistoryCanForward 3460 -#define wxHtmlWindow_HistoryClear 3461 -#define wxHtmlWindow_HistoryForward 3462 -#define wxHtmlWindow_LoadFile 3463 -#define wxHtmlWindow_LoadPage 3464 -#define wxHtmlWindow_SelectAll 3465 -#define wxHtmlWindow_SelectionToText 3466 -#define wxHtmlWindow_SelectLine 3467 -#define wxHtmlWindow_SelectWord 3468 -#define wxHtmlWindow_SetBorders 3469 -#define wxHtmlWindow_SetFonts 3470 -#define wxHtmlWindow_SetPage 3471 -#define wxHtmlWindow_SetRelatedFrame 3472 -#define wxHtmlWindow_SetRelatedStatusBar 3473 -#define wxHtmlWindow_ToText 3474 -#define wxHtmlWindow_destroy 3475 -#define wxHtmlLinkEvent_GetLinkInfo 3476 -#define wxAuiNotebookEvent_SetSelection 3477 -#define wxAuiNotebookEvent_GetSelection 3478 -#define wxAuiNotebookEvent_SetOldSelection 3479 -#define wxAuiNotebookEvent_GetOldSelection 3480 -#define wxAuiNotebookEvent_SetDragSource 3481 -#define wxAuiNotebookEvent_GetDragSource 3482 -#define wxAuiManagerEvent_SetManager 3483 -#define wxAuiManagerEvent_GetManager 3484 -#define wxAuiManagerEvent_SetPane 3485 -#define wxAuiManagerEvent_GetPane 3486 -#define wxAuiManagerEvent_SetButton 3487 -#define wxAuiManagerEvent_GetButton 3488 -#define wxAuiManagerEvent_SetDC 3489 -#define wxAuiManagerEvent_GetDC 3490 -#define wxAuiManagerEvent_Veto 3491 -#define wxAuiManagerEvent_GetVeto 3492 -#define wxAuiManagerEvent_SetCanVeto 3493 -#define wxAuiManagerEvent_CanVeto 3494 -#define wxLogNull_new 3495 -#define wxLogNull_destroy 3496 +#define wxControlWithItems_getClientData 885 +#define wxControlWithItems_setClientData 886 +#define wxControlWithItems_GetCount 887 +#define wxControlWithItems_GetSelection 888 +#define wxControlWithItems_GetString 889 +#define wxControlWithItems_GetStringSelection 890 +#define wxControlWithItems_Insert_2 891 +#define wxControlWithItems_Insert_3 892 +#define wxControlWithItems_IsEmpty 893 +#define wxControlWithItems_Select 894 +#define wxControlWithItems_SetSelection 895 +#define wxControlWithItems_SetString 896 +#define wxControlWithItems_SetStringSelection 897 +#define wxMenu_new_2 900 +#define wxMenu_new_1 901 +#define wxMenu_destruct 903 +#define wxMenu_Append_3 904 +#define wxMenu_Append_1 905 +#define wxMenu_Append_4_0 906 +#define wxMenu_Append_4_1 907 +#define wxMenu_AppendCheckItem 908 +#define wxMenu_AppendRadioItem 909 +#define wxMenu_AppendSeparator 910 +#define wxMenu_Break 911 +#define wxMenu_Check 912 +#define wxMenu_Delete_1_0 913 +#define wxMenu_Delete_1_1 914 +#define wxMenu_Destroy_1_0 915 +#define wxMenu_Destroy_1_1 916 +#define wxMenu_Enable 917 +#define wxMenu_FindItem_1 918 +#define wxMenu_FindItem_2 919 +#define wxMenu_FindItemByPosition 920 +#define wxMenu_GetHelpString 921 +#define wxMenu_GetLabel 922 +#define wxMenu_GetMenuItemCount 923 +#define wxMenu_GetMenuItems 924 +#define wxMenu_GetTitle 926 +#define wxMenu_Insert_2 927 +#define wxMenu_Insert_3 928 +#define wxMenu_Insert_5_1 929 +#define wxMenu_Insert_5_0 930 +#define wxMenu_InsertCheckItem 931 +#define wxMenu_InsertRadioItem 932 +#define wxMenu_InsertSeparator 933 +#define wxMenu_IsChecked 934 +#define wxMenu_IsEnabled 935 +#define wxMenu_Prepend_1 936 +#define wxMenu_Prepend_2 937 +#define wxMenu_Prepend_4_1 938 +#define wxMenu_Prepend_4_0 939 +#define wxMenu_PrependCheckItem 940 +#define wxMenu_PrependRadioItem 941 +#define wxMenu_PrependSeparator 942 +#define wxMenu_Remove_1_0 943 +#define wxMenu_Remove_1_1 944 +#define wxMenu_SetHelpString 945 +#define wxMenu_SetLabel 946 +#define wxMenu_SetTitle 947 +#define wxMenuItem_new 948 +#define wxMenuItem_destruct 950 +#define wxMenuItem_Check 951 +#define wxMenuItem_Enable 952 +#define wxMenuItem_GetBitmap 953 +#define wxMenuItem_GetHelp 954 +#define wxMenuItem_GetId 955 +#define wxMenuItem_GetKind 956 +#define wxMenuItem_GetLabel 957 +#define wxMenuItem_GetLabelFromText 958 +#define wxMenuItem_GetMenu 959 +#define wxMenuItem_GetText 960 +#define wxMenuItem_GetSubMenu 961 +#define wxMenuItem_IsCheckable 962 +#define wxMenuItem_IsChecked 963 +#define wxMenuItem_IsEnabled 964 +#define wxMenuItem_IsSeparator 965 +#define wxMenuItem_IsSubMenu 966 +#define wxMenuItem_SetBitmap 967 +#define wxMenuItem_SetHelp 968 +#define wxMenuItem_SetMenu 969 +#define wxMenuItem_SetSubMenu 970 +#define wxMenuItem_SetText 971 +#define wxToolBar_AddControl 972 +#define wxToolBar_AddSeparator 973 +#define wxToolBar_AddTool_5 974 +#define wxToolBar_AddTool_4_0 975 +#define wxToolBar_AddTool_1 976 +#define wxToolBar_AddTool_4_1 977 +#define wxToolBar_AddTool_3 978 +#define wxToolBar_AddTool_6 979 +#define wxToolBar_AddCheckTool 980 +#define wxToolBar_AddRadioTool 981 +#define wxToolBar_DeleteTool 982 +#define wxToolBar_DeleteToolByPos 983 +#define wxToolBar_EnableTool 984 +#define wxToolBar_FindById 985 +#define wxToolBar_FindControl 986 +#define wxToolBar_FindToolForPosition 987 +#define wxToolBar_GetToolSize 988 +#define wxToolBar_GetToolBitmapSize 989 +#define wxToolBar_GetMargins 990 +#define wxToolBar_GetToolEnabled 991 +#define wxToolBar_GetToolLongHelp 992 +#define wxToolBar_GetToolPacking 993 +#define wxToolBar_GetToolPos 994 +#define wxToolBar_GetToolSeparation 995 +#define wxToolBar_GetToolShortHelp 996 +#define wxToolBar_GetToolState 997 +#define wxToolBar_InsertControl 998 +#define wxToolBar_InsertSeparator 999 +#define wxToolBar_InsertTool_5 1000 +#define wxToolBar_InsertTool_2 1001 +#define wxToolBar_InsertTool_4 1002 +#define wxToolBar_Realize 1003 +#define wxToolBar_RemoveTool 1004 +#define wxToolBar_SetMargins 1005 +#define wxToolBar_SetToolBitmapSize 1006 +#define wxToolBar_SetToolLongHelp 1007 +#define wxToolBar_SetToolPacking 1008 +#define wxToolBar_SetToolShortHelp 1009 +#define wxToolBar_SetToolSeparation 1010 +#define wxToolBar_ToggleTool 1011 +#define wxStatusBar_new_0 1013 +#define wxStatusBar_new_2 1014 +#define wxStatusBar_destruct 1016 +#define wxStatusBar_Create 1017 +#define wxStatusBar_GetFieldRect 1018 +#define wxStatusBar_GetFieldsCount 1019 +#define wxStatusBar_GetStatusText 1020 +#define wxStatusBar_PopStatusText 1021 +#define wxStatusBar_PushStatusText 1022 +#define wxStatusBar_SetFieldsCount 1023 +#define wxStatusBar_SetMinHeight 1024 +#define wxStatusBar_SetStatusText 1025 +#define wxStatusBar_SetStatusWidths 1026 +#define wxStatusBar_SetStatusStyles 1027 +#define wxBitmap_new_0 1028 +#define wxBitmap_new_3 1029 +#define wxBitmap_new_4 1030 +#define wxBitmap_new_2_0 1031 +#define wxBitmap_new_2_1 1032 +#define wxBitmap_destruct 1033 +#define wxBitmap_ConvertToImage 1034 +#define wxBitmap_CopyFromIcon 1035 +#define wxBitmap_Create 1036 +#define wxBitmap_GetDepth 1037 +#define wxBitmap_GetHeight 1038 +#define wxBitmap_GetPalette 1039 +#define wxBitmap_GetMask 1040 +#define wxBitmap_GetWidth 1041 +#define wxBitmap_GetSubBitmap 1042 +#define wxBitmap_LoadFile 1043 +#define wxBitmap_Ok 1044 +#define wxBitmap_SaveFile 1045 +#define wxBitmap_SetDepth 1046 +#define wxBitmap_SetHeight 1047 +#define wxBitmap_SetMask 1048 +#define wxBitmap_SetPalette 1049 +#define wxBitmap_SetWidth 1050 +#define wxIcon_new_0 1051 +#define wxIcon_new_2 1052 +#define wxIcon_new_1 1053 +#define wxIcon_CopyFromBitmap 1054 +#define wxIcon_destroy 1055 +#define wxIconBundle_new_0 1056 +#define wxIconBundle_new_2 1057 +#define wxIconBundle_new_1_0 1058 +#define wxIconBundle_new_1_1 1059 +#define wxIconBundle_destruct 1060 +#define wxIconBundle_AddIcon_2 1061 +#define wxIconBundle_AddIcon_1 1062 +#define wxIconBundle_GetIcon_1_1 1063 +#define wxIconBundle_GetIcon_1_0 1064 +#define wxCursor_new_0 1065 +#define wxCursor_new_1_0 1066 +#define wxCursor_new_1_1 1067 +#define wxCursor_new_4 1068 +#define wxCursor_destruct 1069 +#define wxCursor_Ok 1070 +#define wxMask_new_0 1071 +#define wxMask_new_2_1 1072 +#define wxMask_new_2_0 1073 +#define wxMask_new_1 1074 +#define wxMask_destruct 1075 +#define wxMask_Create_2_1 1076 +#define wxMask_Create_2_0 1077 +#define wxMask_Create_1 1078 +#define wxImage_new_0 1079 +#define wxImage_new_3_0 1080 +#define wxImage_new_4 1081 +#define wxImage_new_5 1082 +#define wxImage_new_2 1083 +#define wxImage_new_3_1 1084 +#define wxImage_Blur 1085 +#define wxImage_BlurHorizontal 1086 +#define wxImage_BlurVertical 1087 +#define wxImage_ConvertAlphaToMask 1088 +#define wxImage_ConvertToGreyscale 1089 +#define wxImage_ConvertToMono 1090 +#define wxImage_Copy 1091 +#define wxImage_Create_3 1092 +#define wxImage_Create_4 1093 +#define wxImage_Create_5 1094 +#define wxImage_Destroy 1095 +#define wxImage_FindFirstUnusedColour 1096 +#define wxImage_GetImageExtWildcard 1097 +#define wxImage_GetAlpha_2 1098 +#define wxImage_GetAlpha_0 1099 +#define wxImage_GetBlue 1100 +#define wxImage_GetData 1101 +#define wxImage_GetGreen 1102 +#define wxImage_GetImageCount 1103 +#define wxImage_GetHeight 1104 +#define wxImage_GetMaskBlue 1105 +#define wxImage_GetMaskGreen 1106 +#define wxImage_GetMaskRed 1107 +#define wxImage_GetOrFindMaskColour 1108 +#define wxImage_GetPalette 1109 +#define wxImage_GetRed 1110 +#define wxImage_GetSubImage 1111 +#define wxImage_GetWidth 1112 +#define wxImage_HasAlpha 1113 +#define wxImage_HasMask 1114 +#define wxImage_GetOption 1115 +#define wxImage_GetOptionInt 1116 +#define wxImage_HasOption 1117 +#define wxImage_InitAlpha 1118 +#define wxImage_InitStandardHandlers 1119 +#define wxImage_IsTransparent 1120 +#define wxImage_LoadFile_2 1121 +#define wxImage_LoadFile_3 1122 +#define wxImage_Ok 1123 +#define wxImage_RemoveHandler 1124 +#define wxImage_Mirror 1125 +#define wxImage_Replace 1126 +#define wxImage_Rescale 1127 +#define wxImage_Resize 1128 +#define wxImage_Rotate 1129 +#define wxImage_RotateHue 1130 +#define wxImage_Rotate90 1131 +#define wxImage_SaveFile_1 1132 +#define wxImage_SaveFile_2_0 1133 +#define wxImage_SaveFile_2_1 1134 +#define wxImage_Scale 1135 +#define wxImage_Size 1136 +#define wxImage_SetAlpha_3 1137 +#define wxImage_SetAlpha_2 1138 +#define wxImage_SetData_2 1139 +#define wxImage_SetData_4 1140 +#define wxImage_SetMask 1141 +#define wxImage_SetMaskColour 1142 +#define wxImage_SetMaskFromImage 1143 +#define wxImage_SetOption_2_1 1144 +#define wxImage_SetOption_2_0 1145 +#define wxImage_SetPalette 1146 +#define wxImage_SetRGB_5 1147 +#define wxImage_SetRGB_4 1148 +#define wxImage_destroy 1149 +#define wxBrush_new_0 1150 +#define wxBrush_new_2 1151 +#define wxBrush_new_1 1152 +#define wxBrush_destruct 1154 +#define wxBrush_GetColour 1155 +#define wxBrush_GetStipple 1156 +#define wxBrush_GetStyle 1157 +#define wxBrush_IsHatch 1158 +#define wxBrush_IsOk 1159 +#define wxBrush_SetColour_1 1160 +#define wxBrush_SetColour_3 1161 +#define wxBrush_SetStipple 1162 +#define wxBrush_SetStyle 1163 +#define wxPen_new_0 1164 +#define wxPen_new_2 1165 +#define wxPen_destruct 1166 +#define wxPen_GetCap 1167 +#define wxPen_GetColour 1168 +#define wxPen_GetJoin 1169 +#define wxPen_GetStyle 1170 +#define wxPen_GetWidth 1171 +#define wxPen_IsOk 1172 +#define wxPen_SetCap 1173 +#define wxPen_SetColour_1 1174 +#define wxPen_SetColour_3 1175 +#define wxPen_SetJoin 1176 +#define wxPen_SetStyle 1177 +#define wxPen_SetWidth 1178 +#define wxRegion_new_0 1179 +#define wxRegion_new_4 1180 +#define wxRegion_new_2 1181 +#define wxRegion_new_1_1 1182 +#define wxRegion_new_1_0 1184 +#define wxRegion_destruct 1186 +#define wxRegion_Clear 1187 +#define wxRegion_Contains_2 1188 +#define wxRegion_Contains_1_0 1189 +#define wxRegion_Contains_4 1190 +#define wxRegion_Contains_1_1 1191 +#define wxRegion_ConvertToBitmap 1192 +#define wxRegion_GetBox 1193 +#define wxRegion_Intersect_4 1194 +#define wxRegion_Intersect_1_1 1195 +#define wxRegion_Intersect_1_0 1196 +#define wxRegion_IsEmpty 1197 +#define wxRegion_Subtract_4 1198 +#define wxRegion_Subtract_1_1 1199 +#define wxRegion_Subtract_1_0 1200 +#define wxRegion_Offset_2 1201 +#define wxRegion_Offset_1 1202 +#define wxRegion_Union_4 1203 +#define wxRegion_Union_1_2 1204 +#define wxRegion_Union_1_1 1205 +#define wxRegion_Union_1_0 1206 +#define wxRegion_Union_3 1207 +#define wxRegion_Xor_4 1208 +#define wxRegion_Xor_1_1 1209 +#define wxRegion_Xor_1_0 1210 +#define wxAcceleratorTable_new_0 1211 +#define wxAcceleratorTable_new_2 1212 +#define wxAcceleratorTable_destruct 1213 +#define wxAcceleratorTable_Ok 1214 +#define wxAcceleratorEntry_new_1_0 1215 +#define wxAcceleratorEntry_new_1_1 1216 +#define wxAcceleratorEntry_GetCommand 1217 +#define wxAcceleratorEntry_GetFlags 1218 +#define wxAcceleratorEntry_GetKeyCode 1219 +#define wxAcceleratorEntry_Set 1220 +#define wxAcceleratorEntry_destroy 1221 +#define wxCaret_new_3 1226 +#define wxCaret_new_2 1227 +#define wxCaret_destruct 1229 +#define wxCaret_Create_3 1230 +#define wxCaret_Create_2 1231 +#define wxCaret_GetBlinkTime 1232 +#define wxCaret_GetPosition 1234 +#define wxCaret_GetSize 1236 +#define wxCaret_GetWindow 1237 +#define wxCaret_Hide 1238 +#define wxCaret_IsOk 1239 +#define wxCaret_IsVisible 1240 +#define wxCaret_Move_2 1241 +#define wxCaret_Move_1 1242 +#define wxCaret_SetBlinkTime 1243 +#define wxCaret_SetSize_2 1244 +#define wxCaret_SetSize_1 1245 +#define wxCaret_Show 1246 +#define wxSizer_Add_2_1 1247 +#define wxSizer_Add_2_0 1248 +#define wxSizer_Add_3 1249 +#define wxSizer_Add_2_3 1250 +#define wxSizer_Add_2_2 1251 +#define wxSizer_AddSpacer 1252 +#define wxSizer_AddStretchSpacer 1253 +#define wxSizer_CalcMin 1254 +#define wxSizer_Clear 1255 +#define wxSizer_Detach_1_2 1256 +#define wxSizer_Detach_1_1 1257 +#define wxSizer_Detach_1_0 1258 +#define wxSizer_Fit 1259 +#define wxSizer_FitInside 1260 +#define wxSizer_GetChildren 1261 +#define wxSizer_GetItem_2_1 1262 +#define wxSizer_GetItem_2_0 1263 +#define wxSizer_GetItem_1 1264 +#define wxSizer_GetSize 1265 +#define wxSizer_GetPosition 1266 +#define wxSizer_GetMinSize 1267 +#define wxSizer_Hide_2_0 1268 +#define wxSizer_Hide_2_1 1269 +#define wxSizer_Hide_1 1270 +#define wxSizer_Insert_3_1 1271 +#define wxSizer_Insert_3_0 1272 +#define wxSizer_Insert_4 1273 +#define wxSizer_Insert_3_3 1274 +#define wxSizer_Insert_3_2 1275 +#define wxSizer_Insert_2 1276 +#define wxSizer_InsertSpacer 1277 +#define wxSizer_InsertStretchSpacer 1278 +#define wxSizer_IsShown_1_2 1279 +#define wxSizer_IsShown_1_1 1280 +#define wxSizer_IsShown_1_0 1281 +#define wxSizer_Layout 1282 +#define wxSizer_Prepend_2_1 1283 +#define wxSizer_Prepend_2_0 1284 +#define wxSizer_Prepend_3 1285 +#define wxSizer_Prepend_2_3 1286 +#define wxSizer_Prepend_2_2 1287 +#define wxSizer_Prepend_1 1288 +#define wxSizer_PrependSpacer 1289 +#define wxSizer_PrependStretchSpacer 1290 +#define wxSizer_RecalcSizes 1291 +#define wxSizer_Remove_1_1 1292 +#define wxSizer_Remove_1_0 1293 +#define wxSizer_Replace_3_1 1294 +#define wxSizer_Replace_3_0 1295 +#define wxSizer_Replace_2 1296 +#define wxSizer_SetDimension 1297 +#define wxSizer_SetMinSize_2 1298 +#define wxSizer_SetMinSize_1 1299 +#define wxSizer_SetItemMinSize_3_2 1300 +#define wxSizer_SetItemMinSize_2_2 1301 +#define wxSizer_SetItemMinSize_3_1 1302 +#define wxSizer_SetItemMinSize_2_1 1303 +#define wxSizer_SetItemMinSize_3_0 1304 +#define wxSizer_SetItemMinSize_2_0 1305 +#define wxSizer_SetSizeHints 1306 +#define wxSizer_SetVirtualSizeHints 1307 +#define wxSizer_Show_2_2 1308 +#define wxSizer_Show_2_1 1309 +#define wxSizer_Show_2_0 1310 +#define wxSizer_Show_1 1311 +#define wxSizerFlags_new 1312 +#define wxSizerFlags_Align 1313 +#define wxSizerFlags_Border_2 1314 +#define wxSizerFlags_Border_1 1315 +#define wxSizerFlags_Center 1316 +#define wxSizerFlags_Centre 1317 +#define wxSizerFlags_Expand 1318 +#define wxSizerFlags_Left 1319 +#define wxSizerFlags_Proportion 1320 +#define wxSizerFlags_Right 1321 +#define wxSizerFlags_destroy 1322 +#define wxSizerItem_new_5_1 1323 +#define wxSizerItem_new_2_1 1324 +#define wxSizerItem_new_5_0 1325 +#define wxSizerItem_new_2_0 1326 +#define wxSizerItem_new_6 1327 +#define wxSizerItem_new_3 1328 +#define wxSizerItem_new_0 1329 +#define wxSizerItem_destruct 1330 +#define wxSizerItem_CalcMin 1331 +#define wxSizerItem_DeleteWindows 1332 +#define wxSizerItem_DetachSizer 1333 +#define wxSizerItem_GetBorder 1334 +#define wxSizerItem_GetFlag 1335 +#define wxSizerItem_GetMinSize 1336 +#define wxSizerItem_GetPosition 1337 +#define wxSizerItem_GetProportion 1338 +#define wxSizerItem_GetRatio 1339 +#define wxSizerItem_GetRect 1340 +#define wxSizerItem_GetSize 1341 +#define wxSizerItem_GetSizer 1342 +#define wxSizerItem_GetSpacer 1343 +#define wxSizerItem_GetUserData 1344 +#define wxSizerItem_GetWindow 1345 +#define wxSizerItem_IsSizer 1346 +#define wxSizerItem_IsShown 1347 +#define wxSizerItem_IsSpacer 1348 +#define wxSizerItem_IsWindow 1349 +#define wxSizerItem_SetBorder 1350 +#define wxSizerItem_SetDimension 1351 +#define wxSizerItem_SetFlag 1352 +#define wxSizerItem_SetInitSize 1353 +#define wxSizerItem_SetMinSize_1 1354 +#define wxSizerItem_SetMinSize_2 1355 +#define wxSizerItem_SetProportion 1356 +#define wxSizerItem_SetRatio_2 1357 +#define wxSizerItem_SetRatio_1_1 1358 +#define wxSizerItem_SetRatio_1_0 1359 +#define wxSizerItem_SetSizer 1360 +#define wxSizerItem_SetSpacer_1 1361 +#define wxSizerItem_SetSpacer_2 1362 +#define wxSizerItem_SetWindow 1363 +#define wxSizerItem_Show 1364 +#define wxBoxSizer_new 1365 +#define wxBoxSizer_GetOrientation 1366 +#define wxBoxSizer_destroy 1367 +#define wxStaticBoxSizer_new_2 1368 +#define wxStaticBoxSizer_new_3 1369 +#define wxStaticBoxSizer_GetStaticBox 1370 +#define wxStaticBoxSizer_destroy 1371 +#define wxGridSizer_new_4 1372 +#define wxGridSizer_new_2 1373 +#define wxGridSizer_GetCols 1374 +#define wxGridSizer_GetHGap 1375 +#define wxGridSizer_GetRows 1376 +#define wxGridSizer_GetVGap 1377 +#define wxGridSizer_SetCols 1378 +#define wxGridSizer_SetHGap 1379 +#define wxGridSizer_SetRows 1380 +#define wxGridSizer_SetVGap 1381 +#define wxGridSizer_destroy 1382 +#define wxFlexGridSizer_new_4 1383 +#define wxFlexGridSizer_new_2 1384 +#define wxFlexGridSizer_AddGrowableCol 1385 +#define wxFlexGridSizer_AddGrowableRow 1386 +#define wxFlexGridSizer_GetFlexibleDirection 1387 +#define wxFlexGridSizer_GetNonFlexibleGrowMode 1388 +#define wxFlexGridSizer_RemoveGrowableCol 1389 +#define wxFlexGridSizer_RemoveGrowableRow 1390 +#define wxFlexGridSizer_SetFlexibleDirection 1391 +#define wxFlexGridSizer_SetNonFlexibleGrowMode 1392 +#define wxFlexGridSizer_destroy 1393 +#define wxGridBagSizer_new 1394 +#define wxGridBagSizer_Add_3_2 1395 +#define wxGridBagSizer_Add_3_1 1396 +#define wxGridBagSizer_Add_4 1397 +#define wxGridBagSizer_Add_1_0 1398 +#define wxGridBagSizer_Add_2_1 1399 +#define wxGridBagSizer_Add_2_0 1400 +#define wxGridBagSizer_Add_3_0 1401 +#define wxGridBagSizer_Add_1_1 1402 +#define wxGridBagSizer_CalcMin 1403 +#define wxGridBagSizer_CheckForIntersection_2 1404 +#define wxGridBagSizer_CheckForIntersection_3 1405 +#define wxGridBagSizer_FindItem_1_1 1406 +#define wxGridBagSizer_FindItem_1_0 1407 +#define wxGridBagSizer_FindItemAtPoint 1408 +#define wxGridBagSizer_FindItemAtPosition 1409 +#define wxGridBagSizer_FindItemWithData 1410 +#define wxGridBagSizer_GetCellSize 1411 +#define wxGridBagSizer_GetEmptyCellSize 1412 +#define wxGridBagSizer_GetItemPosition_1_2 1413 +#define wxGridBagSizer_GetItemPosition_1_1 1414 +#define wxGridBagSizer_GetItemPosition_1_0 1415 +#define wxGridBagSizer_GetItemSpan_1_2 1416 +#define wxGridBagSizer_GetItemSpan_1_1 1417 +#define wxGridBagSizer_GetItemSpan_1_0 1418 +#define wxGridBagSizer_SetEmptyCellSize 1419 +#define wxGridBagSizer_SetItemPosition_2_2 1420 +#define wxGridBagSizer_SetItemPosition_2_1 1421 +#define wxGridBagSizer_SetItemPosition_2_0 1422 +#define wxGridBagSizer_SetItemSpan_2_2 1423 +#define wxGridBagSizer_SetItemSpan_2_1 1424 +#define wxGridBagSizer_SetItemSpan_2_0 1425 +#define wxGridBagSizer_destroy 1426 +#define wxStdDialogButtonSizer_new 1427 +#define wxStdDialogButtonSizer_AddButton 1428 +#define wxStdDialogButtonSizer_Realize 1429 +#define wxStdDialogButtonSizer_SetAffirmativeButton 1430 +#define wxStdDialogButtonSizer_SetCancelButton 1431 +#define wxStdDialogButtonSizer_SetNegativeButton 1432 +#define wxStdDialogButtonSizer_destroy 1433 +#define wxFont_new_0 1434 +#define wxFont_new_1 1435 +#define wxFont_new_5 1436 +#define wxFont_destruct 1438 +#define wxFont_IsFixedWidth 1439 +#define wxFont_GetDefaultEncoding 1440 +#define wxFont_GetFaceName 1441 +#define wxFont_GetFamily 1442 +#define wxFont_GetNativeFontInfoDesc 1443 +#define wxFont_GetNativeFontInfoUserDesc 1444 +#define wxFont_GetPointSize 1445 +#define wxFont_GetStyle 1446 +#define wxFont_GetUnderlined 1447 +#define wxFont_GetWeight 1448 +#define wxFont_Ok 1449 +#define wxFont_SetDefaultEncoding 1450 +#define wxFont_SetFaceName 1451 +#define wxFont_SetFamily 1452 +#define wxFont_SetPointSize 1453 +#define wxFont_SetStyle 1454 +#define wxFont_SetUnderlined 1455 +#define wxFont_SetWeight 1456 +#define wxToolTip_Enable 1457 +#define wxToolTip_SetDelay 1458 +#define wxToolTip_new 1459 +#define wxToolTip_SetTip 1460 +#define wxToolTip_GetTip 1461 +#define wxToolTip_GetWindow 1462 +#define wxToolTip_destroy 1463 +#define wxButton_new_3 1465 +#define wxButton_new_0 1466 +#define wxButton_destruct 1467 +#define wxButton_Create 1468 +#define wxButton_GetDefaultSize 1469 +#define wxButton_SetDefault 1470 +#define wxButton_SetLabel 1471 +#define wxBitmapButton_new_4 1473 +#define wxBitmapButton_new_0 1474 +#define wxBitmapButton_Create 1475 +#define wxBitmapButton_GetBitmapDisabled 1476 +#define wxBitmapButton_GetBitmapFocus 1478 +#define wxBitmapButton_GetBitmapLabel 1480 +#define wxBitmapButton_GetBitmapSelected 1482 +#define wxBitmapButton_SetBitmapDisabled 1484 +#define wxBitmapButton_SetBitmapFocus 1485 +#define wxBitmapButton_SetBitmapLabel 1486 +#define wxBitmapButton_SetBitmapSelected 1487 +#define wxBitmapButton_destroy 1488 +#define wxToggleButton_new_0 1489 +#define wxToggleButton_new_4 1490 +#define wxToggleButton_Create 1491 +#define wxToggleButton_GetValue 1492 +#define wxToggleButton_SetValue 1493 +#define wxToggleButton_destroy 1494 +#define wxCalendarCtrl_new_0 1495 +#define wxCalendarCtrl_new_3 1496 +#define wxCalendarCtrl_Create 1497 +#define wxCalendarCtrl_destruct 1498 +#define wxCalendarCtrl_SetDate 1499 +#define wxCalendarCtrl_GetDate 1500 +#define wxCalendarCtrl_EnableYearChange 1501 +#define wxCalendarCtrl_EnableMonthChange 1502 +#define wxCalendarCtrl_EnableHolidayDisplay 1503 +#define wxCalendarCtrl_SetHeaderColours 1504 +#define wxCalendarCtrl_GetHeaderColourFg 1505 +#define wxCalendarCtrl_GetHeaderColourBg 1506 +#define wxCalendarCtrl_SetHighlightColours 1507 +#define wxCalendarCtrl_GetHighlightColourFg 1508 +#define wxCalendarCtrl_GetHighlightColourBg 1509 +#define wxCalendarCtrl_SetHolidayColours 1510 +#define wxCalendarCtrl_GetHolidayColourFg 1511 +#define wxCalendarCtrl_GetHolidayColourBg 1512 +#define wxCalendarCtrl_GetAttr 1513 +#define wxCalendarCtrl_SetAttr 1514 +#define wxCalendarCtrl_SetHoliday 1515 +#define wxCalendarCtrl_ResetAttr 1516 +#define wxCalendarCtrl_HitTest 1517 +#define wxCalendarDateAttr_new_0 1518 +#define wxCalendarDateAttr_new_2_1 1519 +#define wxCalendarDateAttr_new_2_0 1520 +#define wxCalendarDateAttr_SetTextColour 1521 +#define wxCalendarDateAttr_SetBackgroundColour 1522 +#define wxCalendarDateAttr_SetBorderColour 1523 +#define wxCalendarDateAttr_SetFont 1524 +#define wxCalendarDateAttr_SetBorder 1525 +#define wxCalendarDateAttr_SetHoliday 1526 +#define wxCalendarDateAttr_HasTextColour 1527 +#define wxCalendarDateAttr_HasBackgroundColour 1528 +#define wxCalendarDateAttr_HasBorderColour 1529 +#define wxCalendarDateAttr_HasFont 1530 +#define wxCalendarDateAttr_HasBorder 1531 +#define wxCalendarDateAttr_IsHoliday 1532 +#define wxCalendarDateAttr_GetTextColour 1533 +#define wxCalendarDateAttr_GetBackgroundColour 1534 +#define wxCalendarDateAttr_GetBorderColour 1535 +#define wxCalendarDateAttr_GetFont 1536 +#define wxCalendarDateAttr_GetBorder 1537 +#define wxCalendarDateAttr_destroy 1538 +#define wxCheckBox_new_4 1540 +#define wxCheckBox_new_0 1541 +#define wxCheckBox_Create 1542 +#define wxCheckBox_GetValue 1543 +#define wxCheckBox_Get3StateValue 1544 +#define wxCheckBox_Is3rdStateAllowedForUser 1545 +#define wxCheckBox_Is3State 1546 +#define wxCheckBox_IsChecked 1547 +#define wxCheckBox_SetValue 1548 +#define wxCheckBox_Set3StateValue 1549 +#define wxCheckBox_destroy 1550 +#define wxCheckListBox_new_0 1551 +#define wxCheckListBox_new_3 1553 +#define wxCheckListBox_Check 1554 +#define wxCheckListBox_IsChecked 1555 +#define wxCheckListBox_destroy 1556 +#define wxChoice_new_3 1559 +#define wxChoice_new_0 1560 +#define wxChoice_destruct 1562 +#define wxChoice_Create 1564 +#define wxChoice_Delete 1565 +#define wxChoice_GetColumns 1566 +#define wxChoice_SetColumns 1567 +#define wxComboBox_new_0 1568 +#define wxComboBox_new_3 1570 +#define wxComboBox_destruct 1571 +#define wxComboBox_Create 1573 +#define wxComboBox_CanCopy 1574 +#define wxComboBox_CanCut 1575 +#define wxComboBox_CanPaste 1576 +#define wxComboBox_CanRedo 1577 +#define wxComboBox_CanUndo 1578 +#define wxComboBox_Copy 1579 +#define wxComboBox_Cut 1580 +#define wxComboBox_GetInsertionPoint 1581 +#define wxComboBox_GetLastPosition 1582 +#define wxComboBox_GetValue 1583 +#define wxComboBox_Paste 1584 +#define wxComboBox_Redo 1585 +#define wxComboBox_Replace 1586 +#define wxComboBox_Remove 1587 +#define wxComboBox_SetInsertionPoint 1588 +#define wxComboBox_SetInsertionPointEnd 1589 +#define wxComboBox_SetSelection_1 1590 +#define wxComboBox_SetSelection_2 1591 +#define wxComboBox_SetValue 1592 +#define wxComboBox_Undo 1593 +#define wxGauge_new_0 1594 +#define wxGauge_new_4 1595 +#define wxGauge_Create 1596 +#define wxGauge_GetBezelFace 1597 +#define wxGauge_GetRange 1598 +#define wxGauge_GetShadowWidth 1599 +#define wxGauge_GetValue 1600 +#define wxGauge_IsVertical 1601 +#define wxGauge_SetBezelFace 1602 +#define wxGauge_SetRange 1603 +#define wxGauge_SetShadowWidth 1604 +#define wxGauge_SetValue 1605 +#define wxGauge_Pulse 1606 +#define wxGauge_destroy 1607 +#define wxGenericDirCtrl_new_0 1608 +#define wxGenericDirCtrl_new_2 1609 +#define wxGenericDirCtrl_destruct 1610 +#define wxGenericDirCtrl_Create 1611 +#define wxGenericDirCtrl_Init 1612 +#define wxGenericDirCtrl_CollapseTree 1613 +#define wxGenericDirCtrl_ExpandPath 1614 +#define wxGenericDirCtrl_GetDefaultPath 1615 +#define wxGenericDirCtrl_GetPath 1616 +#define wxGenericDirCtrl_GetFilePath 1617 +#define wxGenericDirCtrl_GetFilter 1618 +#define wxGenericDirCtrl_GetFilterIndex 1619 +#define wxGenericDirCtrl_GetRootId 1620 +#define wxGenericDirCtrl_GetTreeCtrl 1621 +#define wxGenericDirCtrl_ReCreateTree 1622 +#define wxGenericDirCtrl_SetDefaultPath 1623 +#define wxGenericDirCtrl_SetFilter 1624 +#define wxGenericDirCtrl_SetFilterIndex 1625 +#define wxGenericDirCtrl_SetPath 1626 +#define wxStaticBox_new_4 1628 +#define wxStaticBox_new_0 1629 +#define wxStaticBox_Create 1630 +#define wxStaticBox_destroy 1631 +#define wxStaticLine_new_2 1633 +#define wxStaticLine_new_0 1634 +#define wxStaticLine_Create 1635 +#define wxStaticLine_IsVertical 1636 +#define wxStaticLine_GetDefaultSize 1637 +#define wxStaticLine_destroy 1638 +#define wxListBox_new_3 1641 +#define wxListBox_new_0 1642 +#define wxListBox_destruct 1644 +#define wxListBox_Create 1646 +#define wxListBox_Deselect 1647 +#define wxListBox_GetSelections 1648 +#define wxListBox_InsertItems 1649 +#define wxListBox_IsSelected 1650 +#define wxListBox_Set 1652 +#define wxListBox_HitTest 1653 +#define wxListBox_SetFirstItem_1_0 1654 +#define wxListBox_SetFirstItem_1_1 1655 +#define wxListCtrl_new_0 1656 +#define wxListCtrl_new_2 1657 +#define wxListCtrl_Arrange 1658 +#define wxListCtrl_AssignImageList 1659 +#define wxListCtrl_ClearAll 1660 +#define wxListCtrl_Create 1661 +#define wxListCtrl_DeleteAllItems 1662 +#define wxListCtrl_DeleteColumn 1663 +#define wxListCtrl_DeleteItem 1664 +#define wxListCtrl_EditLabel 1665 +#define wxListCtrl_EnsureVisible 1666 +#define wxListCtrl_FindItem_3_0 1667 +#define wxListCtrl_FindItem_3_1 1668 +#define wxListCtrl_GetColumn 1669 +#define wxListCtrl_GetColumnCount 1670 +#define wxListCtrl_GetColumnWidth 1671 +#define wxListCtrl_GetCountPerPage 1672 +#define wxListCtrl_GetEditControl 1673 +#define wxListCtrl_GetImageList 1674 +#define wxListCtrl_GetItem 1675 +#define wxListCtrl_GetItemBackgroundColour 1676 +#define wxListCtrl_GetItemCount 1677 +#define wxListCtrl_GetItemData 1678 +#define wxListCtrl_GetItemFont 1679 +#define wxListCtrl_GetItemPosition 1680 +#define wxListCtrl_GetItemRect 1681 +#define wxListCtrl_GetItemSpacing 1682 +#define wxListCtrl_GetItemState 1683 +#define wxListCtrl_GetItemText 1684 +#define wxListCtrl_GetItemTextColour 1685 +#define wxListCtrl_GetNextItem 1686 +#define wxListCtrl_GetSelectedItemCount 1687 +#define wxListCtrl_GetTextColour 1688 +#define wxListCtrl_GetTopItem 1689 +#define wxListCtrl_GetViewRect 1690 +#define wxListCtrl_HitTest 1691 +#define wxListCtrl_InsertColumn_2 1692 +#define wxListCtrl_InsertColumn_3 1693 +#define wxListCtrl_InsertItem_1 1694 +#define wxListCtrl_InsertItem_2_1 1695 +#define wxListCtrl_InsertItem_2_0 1696 +#define wxListCtrl_InsertItem_3 1697 +#define wxListCtrl_RefreshItem 1698 +#define wxListCtrl_RefreshItems 1699 +#define wxListCtrl_ScrollList 1700 +#define wxListCtrl_SetBackgroundColour 1701 +#define wxListCtrl_SetColumn 1702 +#define wxListCtrl_SetColumnWidth 1703 +#define wxListCtrl_SetImageList 1704 +#define wxListCtrl_SetItem_1 1705 +#define wxListCtrl_SetItem_4 1706 +#define wxListCtrl_SetItemBackgroundColour 1707 +#define wxListCtrl_SetItemCount 1708 +#define wxListCtrl_SetItemData 1709 +#define wxListCtrl_SetItemFont 1710 +#define wxListCtrl_SetItemImage 1711 +#define wxListCtrl_SetItemColumnImage 1712 +#define wxListCtrl_SetItemPosition 1713 +#define wxListCtrl_SetItemState 1714 +#define wxListCtrl_SetItemText 1715 +#define wxListCtrl_SetItemTextColour 1716 +#define wxListCtrl_SetSingleStyle 1717 +#define wxListCtrl_SetTextColour 1718 +#define wxListCtrl_SetWindowStyleFlag 1719 +#define wxListCtrl_SortItems 1720 +#define wxListCtrl_destroy 1721 +#define wxListView_ClearColumnImage 1722 +#define wxListView_Focus 1723 +#define wxListView_GetFirstSelected 1724 +#define wxListView_GetFocusedItem 1725 +#define wxListView_GetNextSelected 1726 +#define wxListView_IsSelected 1727 +#define wxListView_Select 1728 +#define wxListView_SetColumnImage 1729 +#define wxListItem_new_0 1730 +#define wxListItem_new_1 1731 +#define wxListItem_destruct 1732 +#define wxListItem_Clear 1733 +#define wxListItem_GetAlign 1734 +#define wxListItem_GetBackgroundColour 1735 +#define wxListItem_GetColumn 1736 +#define wxListItem_GetFont 1737 +#define wxListItem_GetId 1738 +#define wxListItem_GetImage 1739 +#define wxListItem_GetMask 1740 +#define wxListItem_GetState 1741 +#define wxListItem_GetText 1742 +#define wxListItem_GetTextColour 1743 +#define wxListItem_GetWidth 1744 +#define wxListItem_SetAlign 1745 +#define wxListItem_SetBackgroundColour 1746 +#define wxListItem_SetColumn 1747 +#define wxListItem_SetFont 1748 +#define wxListItem_SetId 1749 +#define wxListItem_SetImage 1750 +#define wxListItem_SetMask 1751 +#define wxListItem_SetState 1752 +#define wxListItem_SetStateMask 1753 +#define wxListItem_SetText 1754 +#define wxListItem_SetTextColour 1755 +#define wxListItem_SetWidth 1756 +#define wxImageList_new_0 1757 +#define wxImageList_new_3 1758 +#define wxImageList_Add_1 1759 +#define wxImageList_Add_2_0 1760 +#define wxImageList_Add_2_1 1761 +#define wxImageList_Create 1762 +#define wxImageList_Draw 1764 +#define wxImageList_GetBitmap 1765 +#define wxImageList_GetIcon 1766 +#define wxImageList_GetImageCount 1767 +#define wxImageList_GetSize 1768 +#define wxImageList_Remove 1769 +#define wxImageList_RemoveAll 1770 +#define wxImageList_Replace_2 1771 +#define wxImageList_Replace_3 1772 +#define wxImageList_destroy 1773 +#define wxTextAttr_new_0 1774 +#define wxTextAttr_new_2 1775 +#define wxTextAttr_GetAlignment 1776 +#define wxTextAttr_GetBackgroundColour 1777 +#define wxTextAttr_GetFont 1778 +#define wxTextAttr_GetLeftIndent 1779 +#define wxTextAttr_GetLeftSubIndent 1780 +#define wxTextAttr_GetRightIndent 1781 +#define wxTextAttr_GetTabs 1782 +#define wxTextAttr_GetTextColour 1783 +#define wxTextAttr_HasBackgroundColour 1784 +#define wxTextAttr_HasFont 1785 +#define wxTextAttr_HasTextColour 1786 +#define wxTextAttr_GetFlags 1787 +#define wxTextAttr_IsDefault 1788 +#define wxTextAttr_SetAlignment 1789 +#define wxTextAttr_SetBackgroundColour 1790 +#define wxTextAttr_SetFlags 1791 +#define wxTextAttr_SetFont 1792 +#define wxTextAttr_SetLeftIndent 1793 +#define wxTextAttr_SetRightIndent 1794 +#define wxTextAttr_SetTabs 1795 +#define wxTextAttr_SetTextColour 1796 +#define wxTextAttr_destroy 1797 +#define wxTextCtrl_new_3 1799 +#define wxTextCtrl_new_0 1800 +#define wxTextCtrl_destruct 1802 +#define wxTextCtrl_AppendText 1803 +#define wxTextCtrl_CanCopy 1804 +#define wxTextCtrl_CanCut 1805 +#define wxTextCtrl_CanPaste 1806 +#define wxTextCtrl_CanRedo 1807 +#define wxTextCtrl_CanUndo 1808 +#define wxTextCtrl_Clear 1809 +#define wxTextCtrl_Copy 1810 +#define wxTextCtrl_Create 1811 +#define wxTextCtrl_Cut 1812 +#define wxTextCtrl_DiscardEdits 1813 +#define wxTextCtrl_EmulateKeyPress 1814 +#define wxTextCtrl_GetDefaultStyle 1815 +#define wxTextCtrl_GetInsertionPoint 1816 +#define wxTextCtrl_GetLastPosition 1817 +#define wxTextCtrl_GetLineLength 1818 +#define wxTextCtrl_GetLineText 1819 +#define wxTextCtrl_GetNumberOfLines 1820 +#define wxTextCtrl_GetRange 1821 +#define wxTextCtrl_GetSelection 1822 +#define wxTextCtrl_GetStringSelection 1823 +#define wxTextCtrl_GetStyle 1824 +#define wxTextCtrl_GetValue 1825 +#define wxTextCtrl_IsEditable 1826 +#define wxTextCtrl_IsModified 1827 +#define wxTextCtrl_IsMultiLine 1828 +#define wxTextCtrl_IsSingleLine 1829 +#define wxTextCtrl_LoadFile 1830 +#define wxTextCtrl_MarkDirty 1831 +#define wxTextCtrl_Paste 1832 +#define wxTextCtrl_PositionToXY 1833 +#define wxTextCtrl_Redo 1834 +#define wxTextCtrl_Remove 1835 +#define wxTextCtrl_Replace 1836 +#define wxTextCtrl_SaveFile 1837 +#define wxTextCtrl_SetDefaultStyle 1838 +#define wxTextCtrl_SetEditable 1839 +#define wxTextCtrl_SetInsertionPoint 1840 +#define wxTextCtrl_SetInsertionPointEnd 1841 +#define wxTextCtrl_SetMaxLength 1843 +#define wxTextCtrl_SetSelection 1844 +#define wxTextCtrl_SetStyle 1845 +#define wxTextCtrl_SetValue 1846 +#define wxTextCtrl_ShowPosition 1847 +#define wxTextCtrl_Undo 1848 +#define wxTextCtrl_WriteText 1849 +#define wxTextCtrl_XYToPosition 1850 +#define wxNotebook_new_0 1853 +#define wxNotebook_new_3 1854 +#define wxNotebook_destruct 1855 +#define wxNotebook_AddPage 1856 +#define wxNotebook_AdvanceSelection 1857 +#define wxNotebook_AssignImageList 1858 +#define wxNotebook_Create 1859 +#define wxNotebook_DeleteAllPages 1860 +#define wxNotebook_DeletePage 1861 +#define wxNotebook_RemovePage 1862 +#define wxNotebook_GetCurrentPage 1863 +#define wxNotebook_GetImageList 1864 +#define wxNotebook_GetPage 1866 +#define wxNotebook_GetPageCount 1867 +#define wxNotebook_GetPageImage 1868 +#define wxNotebook_GetPageText 1869 +#define wxNotebook_GetRowCount 1870 +#define wxNotebook_GetSelection 1871 +#define wxNotebook_GetThemeBackgroundColour 1872 +#define wxNotebook_HitTest 1874 +#define wxNotebook_InsertPage 1876 +#define wxNotebook_SetImageList 1877 +#define wxNotebook_SetPadding 1878 +#define wxNotebook_SetPageSize 1879 +#define wxNotebook_SetPageImage 1880 +#define wxNotebook_SetPageText 1881 +#define wxNotebook_SetSelection 1882 +#define wxNotebook_ChangeSelection 1883 +#define wxChoicebook_new_0 1884 +#define wxChoicebook_new_3 1885 +#define wxChoicebook_AddPage 1886 +#define wxChoicebook_AdvanceSelection 1887 +#define wxChoicebook_AssignImageList 1888 +#define wxChoicebook_Create 1889 +#define wxChoicebook_DeleteAllPages 1890 +#define wxChoicebook_DeletePage 1891 +#define wxChoicebook_RemovePage 1892 +#define wxChoicebook_GetCurrentPage 1893 +#define wxChoicebook_GetImageList 1894 +#define wxChoicebook_GetPage 1896 +#define wxChoicebook_GetPageCount 1897 +#define wxChoicebook_GetPageImage 1898 +#define wxChoicebook_GetPageText 1899 +#define wxChoicebook_GetSelection 1900 +#define wxChoicebook_HitTest 1901 +#define wxChoicebook_InsertPage 1902 +#define wxChoicebook_SetImageList 1903 +#define wxChoicebook_SetPageSize 1904 +#define wxChoicebook_SetPageImage 1905 +#define wxChoicebook_SetPageText 1906 +#define wxChoicebook_SetSelection 1907 +#define wxChoicebook_ChangeSelection 1908 +#define wxChoicebook_destroy 1909 +#define wxToolbook_new_0 1910 +#define wxToolbook_new_3 1911 +#define wxToolbook_AddPage 1912 +#define wxToolbook_AdvanceSelection 1913 +#define wxToolbook_AssignImageList 1914 +#define wxToolbook_Create 1915 +#define wxToolbook_DeleteAllPages 1916 +#define wxToolbook_DeletePage 1917 +#define wxToolbook_RemovePage 1918 +#define wxToolbook_GetCurrentPage 1919 +#define wxToolbook_GetImageList 1920 +#define wxToolbook_GetPage 1922 +#define wxToolbook_GetPageCount 1923 +#define wxToolbook_GetPageImage 1924 +#define wxToolbook_GetPageText 1925 +#define wxToolbook_GetSelection 1926 +#define wxToolbook_HitTest 1928 +#define wxToolbook_InsertPage 1929 +#define wxToolbook_SetImageList 1930 +#define wxToolbook_SetPageSize 1931 +#define wxToolbook_SetPageImage 1932 +#define wxToolbook_SetPageText 1933 +#define wxToolbook_SetSelection 1934 +#define wxToolbook_ChangeSelection 1935 +#define wxToolbook_destroy 1936 +#define wxListbook_new_0 1937 +#define wxListbook_new_3 1938 +#define wxListbook_AddPage 1939 +#define wxListbook_AdvanceSelection 1940 +#define wxListbook_AssignImageList 1941 +#define wxListbook_Create 1942 +#define wxListbook_DeleteAllPages 1943 +#define wxListbook_DeletePage 1944 +#define wxListbook_RemovePage 1945 +#define wxListbook_GetCurrentPage 1946 +#define wxListbook_GetImageList 1947 +#define wxListbook_GetPage 1949 +#define wxListbook_GetPageCount 1950 +#define wxListbook_GetPageImage 1951 +#define wxListbook_GetPageText 1952 +#define wxListbook_GetSelection 1953 +#define wxListbook_HitTest 1955 +#define wxListbook_InsertPage 1956 +#define wxListbook_SetImageList 1957 +#define wxListbook_SetPageSize 1958 +#define wxListbook_SetPageImage 1959 +#define wxListbook_SetPageText 1960 +#define wxListbook_SetSelection 1961 +#define wxListbook_ChangeSelection 1962 +#define wxListbook_destroy 1963 +#define wxTreebook_new_0 1964 +#define wxTreebook_new_3 1965 +#define wxTreebook_AddPage 1966 +#define wxTreebook_AdvanceSelection 1967 +#define wxTreebook_AssignImageList 1968 +#define wxTreebook_Create 1969 +#define wxTreebook_DeleteAllPages 1970 +#define wxTreebook_DeletePage 1971 +#define wxTreebook_RemovePage 1972 +#define wxTreebook_GetCurrentPage 1973 +#define wxTreebook_GetImageList 1974 +#define wxTreebook_GetPage 1976 +#define wxTreebook_GetPageCount 1977 +#define wxTreebook_GetPageImage 1978 +#define wxTreebook_GetPageText 1979 +#define wxTreebook_GetSelection 1980 +#define wxTreebook_ExpandNode 1981 +#define wxTreebook_IsNodeExpanded 1982 +#define wxTreebook_HitTest 1984 +#define wxTreebook_InsertPage 1985 +#define wxTreebook_InsertSubPage 1986 +#define wxTreebook_SetImageList 1987 +#define wxTreebook_SetPageSize 1988 +#define wxTreebook_SetPageImage 1989 +#define wxTreebook_SetPageText 1990 +#define wxTreebook_SetSelection 1991 +#define wxTreebook_ChangeSelection 1992 +#define wxTreebook_destroy 1993 +#define wxTreeCtrl_new_2 1996 +#define wxTreeCtrl_new_0 1997 +#define wxTreeCtrl_destruct 1999 +#define wxTreeCtrl_AddRoot 2000 +#define wxTreeCtrl_AppendItem 2001 +#define wxTreeCtrl_AssignImageList 2002 +#define wxTreeCtrl_AssignStateImageList 2003 +#define wxTreeCtrl_Collapse 2004 +#define wxTreeCtrl_CollapseAndReset 2005 +#define wxTreeCtrl_Create 2006 +#define wxTreeCtrl_Delete 2007 +#define wxTreeCtrl_DeleteAllItems 2008 +#define wxTreeCtrl_DeleteChildren 2009 +#define wxTreeCtrl_EnsureVisible 2010 +#define wxTreeCtrl_Expand 2011 +#define wxTreeCtrl_GetBoundingRect 2012 +#define wxTreeCtrl_GetChildrenCount 2014 +#define wxTreeCtrl_GetCount 2015 +#define wxTreeCtrl_GetEditControl 2016 +#define wxTreeCtrl_GetFirstChild 2017 +#define wxTreeCtrl_GetNextChild 2018 +#define wxTreeCtrl_GetFirstVisibleItem 2019 +#define wxTreeCtrl_GetImageList 2020 +#define wxTreeCtrl_GetIndent 2021 +#define wxTreeCtrl_GetItemBackgroundColour 2022 +#define wxTreeCtrl_GetItemData 2023 +#define wxTreeCtrl_GetItemFont 2024 +#define wxTreeCtrl_GetItemImage_1 2025 +#define wxTreeCtrl_GetItemImage_2 2026 +#define wxTreeCtrl_GetItemText 2027 +#define wxTreeCtrl_GetItemTextColour 2028 +#define wxTreeCtrl_GetLastChild 2029 +#define wxTreeCtrl_GetNextSibling 2030 +#define wxTreeCtrl_GetNextVisible 2031 +#define wxTreeCtrl_GetItemParent 2032 +#define wxTreeCtrl_GetPrevSibling 2033 +#define wxTreeCtrl_GetPrevVisible 2034 +#define wxTreeCtrl_GetRootItem 2035 +#define wxTreeCtrl_GetSelection 2036 +#define wxTreeCtrl_GetSelections 2037 +#define wxTreeCtrl_GetStateImageList 2038 +#define wxTreeCtrl_HitTest 2039 +#define wxTreeCtrl_InsertItem 2041 +#define wxTreeCtrl_IsBold 2042 +#define wxTreeCtrl_IsExpanded 2043 +#define wxTreeCtrl_IsSelected 2044 +#define wxTreeCtrl_IsVisible 2045 +#define wxTreeCtrl_ItemHasChildren 2046 +#define wxTreeCtrl_PrependItem 2047 +#define wxTreeCtrl_ScrollTo 2048 +#define wxTreeCtrl_SelectItem_1 2049 +#define wxTreeCtrl_SelectItem_2 2050 +#define wxTreeCtrl_SetIndent 2051 +#define wxTreeCtrl_SetImageList 2052 +#define wxTreeCtrl_SetItemBackgroundColour 2053 +#define wxTreeCtrl_SetItemBold 2054 +#define wxTreeCtrl_SetItemData 2055 +#define wxTreeCtrl_SetItemDropHighlight 2056 +#define wxTreeCtrl_SetItemFont 2057 +#define wxTreeCtrl_SetItemHasChildren 2058 +#define wxTreeCtrl_SetItemImage_2 2059 +#define wxTreeCtrl_SetItemImage_3 2060 +#define wxTreeCtrl_SetItemText 2061 +#define wxTreeCtrl_SetItemTextColour 2062 +#define wxTreeCtrl_SetStateImageList 2063 +#define wxTreeCtrl_SetWindowStyle 2064 +#define wxTreeCtrl_SortChildren 2065 +#define wxTreeCtrl_Toggle 2066 +#define wxTreeCtrl_ToggleItemSelection 2067 +#define wxTreeCtrl_Unselect 2068 +#define wxTreeCtrl_UnselectAll 2069 +#define wxTreeCtrl_UnselectItem 2070 +#define wxScrollBar_new_0 2071 +#define wxScrollBar_new_3 2072 +#define wxScrollBar_destruct 2073 +#define wxScrollBar_Create 2074 +#define wxScrollBar_GetRange 2075 +#define wxScrollBar_GetPageSize 2076 +#define wxScrollBar_GetThumbPosition 2077 +#define wxScrollBar_GetThumbSize 2078 +#define wxScrollBar_SetThumbPosition 2079 +#define wxScrollBar_SetScrollbar 2080 +#define wxSpinButton_new_2 2082 +#define wxSpinButton_new_0 2083 +#define wxSpinButton_Create 2084 +#define wxSpinButton_GetMax 2085 +#define wxSpinButton_GetMin 2086 +#define wxSpinButton_GetValue 2087 +#define wxSpinButton_SetRange 2088 +#define wxSpinButton_SetValue 2089 +#define wxSpinButton_destroy 2090 +#define wxSpinCtrl_new_0 2091 +#define wxSpinCtrl_new_2 2092 +#define wxSpinCtrl_Create 2094 +#define wxSpinCtrl_SetValue_1_1 2097 +#define wxSpinCtrl_SetValue_1_0 2098 +#define wxSpinCtrl_GetValue 2100 +#define wxSpinCtrl_SetRange 2102 +#define wxSpinCtrl_SetSelection 2103 +#define wxSpinCtrl_GetMin 2105 +#define wxSpinCtrl_GetMax 2107 +#define wxSpinCtrl_destroy 2108 +#define wxStaticText_new_0 2109 +#define wxStaticText_new_4 2110 +#define wxStaticText_Create 2111 +#define wxStaticText_GetLabel 2112 +#define wxStaticText_SetLabel 2113 +#define wxStaticText_Wrap 2114 +#define wxStaticText_destroy 2115 +#define wxStaticBitmap_new_0 2116 +#define wxStaticBitmap_new_4 2117 +#define wxStaticBitmap_Create 2118 +#define wxStaticBitmap_GetBitmap 2119 +#define wxStaticBitmap_SetBitmap 2120 +#define wxStaticBitmap_destroy 2121 +#define wxRadioBox_new 2122 +#define wxRadioBox_destruct 2124 +#define wxRadioBox_Create 2125 +#define wxRadioBox_Enable_2 2126 +#define wxRadioBox_Enable_1 2127 +#define wxRadioBox_GetSelection 2128 +#define wxRadioBox_GetString 2129 +#define wxRadioBox_SetSelection 2130 +#define wxRadioBox_Show_2 2131 +#define wxRadioBox_Show_1 2132 +#define wxRadioBox_GetColumnCount 2133 +#define wxRadioBox_GetItemHelpText 2134 +#define wxRadioBox_GetItemToolTip 2135 +#define wxRadioBox_GetItemFromPoint 2137 +#define wxRadioBox_GetRowCount 2138 +#define wxRadioBox_IsItemEnabled 2139 +#define wxRadioBox_IsItemShown 2140 +#define wxRadioBox_SetItemHelpText 2141 +#define wxRadioBox_SetItemToolTip 2142 +#define wxRadioButton_new_0 2143 +#define wxRadioButton_new_4 2144 +#define wxRadioButton_Create 2145 +#define wxRadioButton_GetValue 2146 +#define wxRadioButton_SetValue 2147 +#define wxRadioButton_destroy 2148 +#define wxSlider_new_6 2150 +#define wxSlider_new_0 2151 +#define wxSlider_Create 2152 +#define wxSlider_GetLineSize 2153 +#define wxSlider_GetMax 2154 +#define wxSlider_GetMin 2155 +#define wxSlider_GetPageSize 2156 +#define wxSlider_GetThumbLength 2157 +#define wxSlider_GetValue 2158 +#define wxSlider_SetLineSize 2159 +#define wxSlider_SetPageSize 2160 +#define wxSlider_SetRange 2161 +#define wxSlider_SetThumbLength 2162 +#define wxSlider_SetValue 2163 +#define wxSlider_destroy 2164 +#define wxDialog_new_4 2166 +#define wxDialog_new_0 2167 +#define wxDialog_destruct 2169 +#define wxDialog_Create 2170 +#define wxDialog_CreateButtonSizer 2171 +#define wxDialog_CreateStdDialogButtonSizer 2172 +#define wxDialog_EndModal 2173 +#define wxDialog_GetAffirmativeId 2174 +#define wxDialog_GetReturnCode 2175 +#define wxDialog_IsModal 2176 +#define wxDialog_SetAffirmativeId 2177 +#define wxDialog_SetReturnCode 2178 +#define wxDialog_Show 2179 +#define wxDialog_ShowModal 2180 +#define wxColourDialog_new_0 2181 +#define wxColourDialog_new_2 2182 +#define wxColourDialog_destruct 2183 +#define wxColourDialog_Create 2184 +#define wxColourDialog_GetColourData 2185 +#define wxColourData_new_0 2186 +#define wxColourData_new_1 2187 +#define wxColourData_destruct 2188 +#define wxColourData_GetChooseFull 2189 +#define wxColourData_GetColour 2190 +#define wxColourData_GetCustomColour 2192 +#define wxColourData_SetChooseFull 2193 +#define wxColourData_SetColour 2194 +#define wxColourData_SetCustomColour 2195 +#define wxPalette_new_0 2196 +#define wxPalette_new_4 2197 +#define wxPalette_destruct 2199 +#define wxPalette_Create 2200 +#define wxPalette_GetColoursCount 2201 +#define wxPalette_GetPixel 2202 +#define wxPalette_GetRGB 2203 +#define wxPalette_IsOk 2204 +#define wxDirDialog_new 2208 +#define wxDirDialog_destruct 2209 +#define wxDirDialog_GetPath 2210 +#define wxDirDialog_GetMessage 2211 +#define wxDirDialog_SetMessage 2212 +#define wxDirDialog_SetPath 2213 +#define wxFileDialog_new 2217 +#define wxFileDialog_destruct 2218 +#define wxFileDialog_GetDirectory 2219 +#define wxFileDialog_GetFilename 2220 +#define wxFileDialog_GetFilenames 2221 +#define wxFileDialog_GetFilterIndex 2222 +#define wxFileDialog_GetMessage 2223 +#define wxFileDialog_GetPath 2224 +#define wxFileDialog_GetPaths 2225 +#define wxFileDialog_GetWildcard 2226 +#define wxFileDialog_SetDirectory 2227 +#define wxFileDialog_SetFilename 2228 +#define wxFileDialog_SetFilterIndex 2229 +#define wxFileDialog_SetMessage 2230 +#define wxFileDialog_SetPath 2231 +#define wxFileDialog_SetWildcard 2232 +#define wxPickerBase_SetInternalMargin 2233 +#define wxPickerBase_GetInternalMargin 2234 +#define wxPickerBase_SetTextCtrlProportion 2235 +#define wxPickerBase_SetPickerCtrlProportion 2236 +#define wxPickerBase_GetTextCtrlProportion 2237 +#define wxPickerBase_GetPickerCtrlProportion 2238 +#define wxPickerBase_HasTextCtrl 2239 +#define wxPickerBase_GetTextCtrl 2240 +#define wxPickerBase_IsTextCtrlGrowable 2241 +#define wxPickerBase_SetPickerCtrlGrowable 2242 +#define wxPickerBase_SetTextCtrlGrowable 2243 +#define wxPickerBase_IsPickerCtrlGrowable 2244 +#define wxFilePickerCtrl_new_0 2245 +#define wxFilePickerCtrl_new_3 2246 +#define wxFilePickerCtrl_Create 2247 +#define wxFilePickerCtrl_GetPath 2248 +#define wxFilePickerCtrl_SetPath 2249 +#define wxFilePickerCtrl_destroy 2250 +#define wxDirPickerCtrl_new_0 2251 +#define wxDirPickerCtrl_new_3 2252 +#define wxDirPickerCtrl_Create 2253 +#define wxDirPickerCtrl_GetPath 2254 +#define wxDirPickerCtrl_SetPath 2255 +#define wxDirPickerCtrl_destroy 2256 +#define wxColourPickerCtrl_new_0 2257 +#define wxColourPickerCtrl_new_3 2258 +#define wxColourPickerCtrl_Create 2259 +#define wxColourPickerCtrl_GetColour 2260 +#define wxColourPickerCtrl_SetColour_1_1 2261 +#define wxColourPickerCtrl_SetColour_1_0 2262 +#define wxColourPickerCtrl_destroy 2263 +#define wxDatePickerCtrl_new_0 2264 +#define wxDatePickerCtrl_new_3 2265 +#define wxDatePickerCtrl_GetRange 2266 +#define wxDatePickerCtrl_GetValue 2267 +#define wxDatePickerCtrl_SetRange 2268 +#define wxDatePickerCtrl_SetValue 2269 +#define wxDatePickerCtrl_destroy 2270 +#define wxFontPickerCtrl_new_0 2271 +#define wxFontPickerCtrl_new_3 2272 +#define wxFontPickerCtrl_Create 2273 +#define wxFontPickerCtrl_GetSelectedFont 2274 +#define wxFontPickerCtrl_SetSelectedFont 2275 +#define wxFontPickerCtrl_GetMaxPointSize 2276 +#define wxFontPickerCtrl_SetMaxPointSize 2277 +#define wxFontPickerCtrl_destroy 2278 +#define wxFindReplaceDialog_new_0 2281 +#define wxFindReplaceDialog_new_4 2282 +#define wxFindReplaceDialog_destruct 2283 +#define wxFindReplaceDialog_Create 2284 +#define wxFindReplaceDialog_GetData 2285 +#define wxFindReplaceData_new_0 2286 +#define wxFindReplaceData_new_1 2287 +#define wxFindReplaceData_GetFindString 2288 +#define wxFindReplaceData_GetReplaceString 2289 +#define wxFindReplaceData_GetFlags 2290 +#define wxFindReplaceData_SetFlags 2291 +#define wxFindReplaceData_SetFindString 2292 +#define wxFindReplaceData_SetReplaceString 2293 +#define wxFindReplaceData_destroy 2294 +#define wxMultiChoiceDialog_new_0 2295 +#define wxMultiChoiceDialog_new_5 2297 +#define wxMultiChoiceDialog_GetSelections 2298 +#define wxMultiChoiceDialog_SetSelections 2299 +#define wxMultiChoiceDialog_destroy 2300 +#define wxSingleChoiceDialog_new_0 2301 +#define wxSingleChoiceDialog_new_5 2303 +#define wxSingleChoiceDialog_GetSelection 2304 +#define wxSingleChoiceDialog_GetStringSelection 2305 +#define wxSingleChoiceDialog_SetSelection 2306 +#define wxSingleChoiceDialog_destroy 2307 +#define wxTextEntryDialog_new 2308 +#define wxTextEntryDialog_GetValue 2309 +#define wxTextEntryDialog_SetValue 2310 +#define wxTextEntryDialog_destroy 2311 +#define wxPasswordEntryDialog_new 2312 +#define wxPasswordEntryDialog_destroy 2313 +#define wxFontData_new_0 2314 +#define wxFontData_new_1 2315 +#define wxFontData_destruct 2316 +#define wxFontData_EnableEffects 2317 +#define wxFontData_GetAllowSymbols 2318 +#define wxFontData_GetColour 2319 +#define wxFontData_GetChosenFont 2320 +#define wxFontData_GetEnableEffects 2321 +#define wxFontData_GetInitialFont 2322 +#define wxFontData_GetShowHelp 2323 +#define wxFontData_SetAllowSymbols 2324 +#define wxFontData_SetChosenFont 2325 +#define wxFontData_SetColour 2326 +#define wxFontData_SetInitialFont 2327 +#define wxFontData_SetRange 2328 +#define wxFontData_SetShowHelp 2329 +#define wxFontDialog_new_0 2333 +#define wxFontDialog_new_2 2335 +#define wxFontDialog_Create 2337 +#define wxFontDialog_GetFontData 2338 +#define wxFontDialog_destroy 2340 +#define wxProgressDialog_new 2341 +#define wxProgressDialog_destruct 2342 +#define wxProgressDialog_Resume 2343 +#define wxProgressDialog_Update_2 2344 +#define wxProgressDialog_Update_0 2345 +#define wxMessageDialog_new 2346 +#define wxMessageDialog_destruct 2347 +#define wxPageSetupDialog_new 2348 +#define wxPageSetupDialog_destruct 2349 +#define wxPageSetupDialog_GetPageSetupData 2350 +#define wxPageSetupDialog_ShowModal 2351 +#define wxPageSetupDialogData_new_0 2352 +#define wxPageSetupDialogData_new_1_0 2353 +#define wxPageSetupDialogData_new_1_1 2354 +#define wxPageSetupDialogData_destruct 2355 +#define wxPageSetupDialogData_EnableHelp 2356 +#define wxPageSetupDialogData_EnableMargins 2357 +#define wxPageSetupDialogData_EnableOrientation 2358 +#define wxPageSetupDialogData_EnablePaper 2359 +#define wxPageSetupDialogData_EnablePrinter 2360 +#define wxPageSetupDialogData_GetDefaultMinMargins 2361 +#define wxPageSetupDialogData_GetEnableMargins 2362 +#define wxPageSetupDialogData_GetEnableOrientation 2363 +#define wxPageSetupDialogData_GetEnablePaper 2364 +#define wxPageSetupDialogData_GetEnablePrinter 2365 +#define wxPageSetupDialogData_GetEnableHelp 2366 +#define wxPageSetupDialogData_GetDefaultInfo 2367 +#define wxPageSetupDialogData_GetMarginTopLeft 2368 +#define wxPageSetupDialogData_GetMarginBottomRight 2369 +#define wxPageSetupDialogData_GetMinMarginTopLeft 2370 +#define wxPageSetupDialogData_GetMinMarginBottomRight 2371 +#define wxPageSetupDialogData_GetPaperId 2372 +#define wxPageSetupDialogData_GetPaperSize 2373 +#define wxPageSetupDialogData_GetPrintData 2375 +#define wxPageSetupDialogData_IsOk 2376 +#define wxPageSetupDialogData_SetDefaultInfo 2377 +#define wxPageSetupDialogData_SetDefaultMinMargins 2378 +#define wxPageSetupDialogData_SetMarginTopLeft 2379 +#define wxPageSetupDialogData_SetMarginBottomRight 2380 +#define wxPageSetupDialogData_SetMinMarginTopLeft 2381 +#define wxPageSetupDialogData_SetMinMarginBottomRight 2382 +#define wxPageSetupDialogData_SetPaperId 2383 +#define wxPageSetupDialogData_SetPaperSize_1_1 2384 +#define wxPageSetupDialogData_SetPaperSize_1_0 2385 +#define wxPageSetupDialogData_SetPrintData 2386 +#define wxPrintDialog_new_2_0 2387 +#define wxPrintDialog_new_2_1 2388 +#define wxPrintDialog_destruct 2389 +#define wxPrintDialog_GetPrintDialogData 2390 +#define wxPrintDialog_GetPrintDC 2391 +#define wxPrintDialogData_new_0 2392 +#define wxPrintDialogData_new_1_1 2393 +#define wxPrintDialogData_new_1_0 2394 +#define wxPrintDialogData_destruct 2395 +#define wxPrintDialogData_EnableHelp 2396 +#define wxPrintDialogData_EnablePageNumbers 2397 +#define wxPrintDialogData_EnablePrintToFile 2398 +#define wxPrintDialogData_EnableSelection 2399 +#define wxPrintDialogData_GetAllPages 2400 +#define wxPrintDialogData_GetCollate 2401 +#define wxPrintDialogData_GetFromPage 2402 +#define wxPrintDialogData_GetMaxPage 2403 +#define wxPrintDialogData_GetMinPage 2404 +#define wxPrintDialogData_GetNoCopies 2405 +#define wxPrintDialogData_GetPrintData 2406 +#define wxPrintDialogData_GetPrintToFile 2407 +#define wxPrintDialogData_GetSelection 2408 +#define wxPrintDialogData_GetToPage 2409 +#define wxPrintDialogData_IsOk 2410 +#define wxPrintDialogData_SetCollate 2411 +#define wxPrintDialogData_SetFromPage 2412 +#define wxPrintDialogData_SetMaxPage 2413 +#define wxPrintDialogData_SetMinPage 2414 +#define wxPrintDialogData_SetNoCopies 2415 +#define wxPrintDialogData_SetPrintData 2416 +#define wxPrintDialogData_SetPrintToFile 2417 +#define wxPrintDialogData_SetSelection 2418 +#define wxPrintDialogData_SetToPage 2419 +#define wxPrintData_new_0 2420 +#define wxPrintData_new_1 2421 +#define wxPrintData_destruct 2422 +#define wxPrintData_GetCollate 2423 +#define wxPrintData_GetBin 2424 +#define wxPrintData_GetColour 2425 +#define wxPrintData_GetDuplex 2426 +#define wxPrintData_GetNoCopies 2427 +#define wxPrintData_GetOrientation 2428 +#define wxPrintData_GetPaperId 2429 +#define wxPrintData_GetPrinterName 2430 +#define wxPrintData_GetQuality 2431 +#define wxPrintData_IsOk 2432 +#define wxPrintData_SetBin 2433 +#define wxPrintData_SetCollate 2434 +#define wxPrintData_SetColour 2435 +#define wxPrintData_SetDuplex 2436 +#define wxPrintData_SetNoCopies 2437 +#define wxPrintData_SetOrientation 2438 +#define wxPrintData_SetPaperId 2439 +#define wxPrintData_SetPrinterName 2440 +#define wxPrintData_SetQuality 2441 +#define wxPrintPreview_new_2 2444 +#define wxPrintPreview_new_3 2445 +#define wxPrintPreview_destruct 2447 +#define wxPrintPreview_GetCanvas 2448 +#define wxPrintPreview_GetCurrentPage 2449 +#define wxPrintPreview_GetFrame 2450 +#define wxPrintPreview_GetMaxPage 2451 +#define wxPrintPreview_GetMinPage 2452 +#define wxPrintPreview_GetPrintout 2453 +#define wxPrintPreview_GetPrintoutForPrinting 2454 +#define wxPrintPreview_IsOk 2455 +#define wxPrintPreview_PaintPage 2456 +#define wxPrintPreview_Print 2457 +#define wxPrintPreview_RenderPage 2458 +#define wxPrintPreview_SetCanvas 2459 +#define wxPrintPreview_SetCurrentPage 2460 +#define wxPrintPreview_SetFrame 2461 +#define wxPrintPreview_SetPrintout 2462 +#define wxPrintPreview_SetZoom 2463 +#define wxPreviewFrame_new 2464 +#define wxPreviewFrame_destruct 2465 +#define wxPreviewFrame_CreateControlBar 2466 +#define wxPreviewFrame_CreateCanvas 2467 +#define wxPreviewFrame_Initialize 2468 +#define wxPreviewFrame_OnCloseWindow 2469 +#define wxPreviewControlBar_new 2470 +#define wxPreviewControlBar_destruct 2471 +#define wxPreviewControlBar_CreateButtons 2472 +#define wxPreviewControlBar_GetPrintPreview 2473 +#define wxPreviewControlBar_GetZoomControl 2474 +#define wxPreviewControlBar_SetZoomControl 2475 +#define wxPrinter_new 2477 +#define wxPrinter_CreateAbortWindow 2478 +#define wxPrinter_GetAbort 2479 +#define wxPrinter_GetLastError 2480 +#define wxPrinter_GetPrintDialogData 2481 +#define wxPrinter_Print 2482 +#define wxPrinter_PrintDialog 2483 +#define wxPrinter_ReportError 2484 +#define wxPrinter_Setup 2485 +#define wxPrinter_destroy 2486 +#define wxXmlResource_new_1 2487 +#define wxXmlResource_new_2 2488 +#define wxXmlResource_destruct 2489 +#define wxXmlResource_AttachUnknownControl 2490 +#define wxXmlResource_ClearHandlers 2491 +#define wxXmlResource_CompareVersion 2492 +#define wxXmlResource_Get 2493 +#define wxXmlResource_GetFlags 2494 +#define wxXmlResource_GetVersion 2495 +#define wxXmlResource_GetXRCID 2496 +#define wxXmlResource_InitAllHandlers 2497 +#define wxXmlResource_Load 2498 +#define wxXmlResource_LoadBitmap 2499 +#define wxXmlResource_LoadDialog_2 2500 +#define wxXmlResource_LoadDialog_3 2501 +#define wxXmlResource_LoadFrame_2 2502 +#define wxXmlResource_LoadFrame_3 2503 +#define wxXmlResource_LoadIcon 2504 +#define wxXmlResource_LoadMenu 2505 +#define wxXmlResource_LoadMenuBar_2 2506 +#define wxXmlResource_LoadMenuBar_1 2507 +#define wxXmlResource_LoadPanel_2 2508 +#define wxXmlResource_LoadPanel_3 2509 +#define wxXmlResource_LoadToolBar 2510 +#define wxXmlResource_Set 2511 +#define wxXmlResource_SetFlags 2512 +#define wxXmlResource_Unload 2513 +#define wxXmlResource_xrcctrl 2514 +#define wxHtmlEasyPrinting_new 2515 +#define wxHtmlEasyPrinting_destruct 2516 +#define wxHtmlEasyPrinting_GetPrintData 2517 +#define wxHtmlEasyPrinting_GetPageSetupData 2518 +#define wxHtmlEasyPrinting_PreviewFile 2519 +#define wxHtmlEasyPrinting_PreviewText 2520 +#define wxHtmlEasyPrinting_PrintFile 2521 +#define wxHtmlEasyPrinting_PrintText 2522 +#define wxHtmlEasyPrinting_PageSetup 2523 +#define wxHtmlEasyPrinting_SetFonts 2524 +#define wxHtmlEasyPrinting_SetHeader 2525 +#define wxHtmlEasyPrinting_SetFooter 2526 +#define wxGLCanvas_new_2 2528 +#define wxGLCanvas_new_3_1 2529 +#define wxGLCanvas_new_3_0 2530 +#define wxGLCanvas_GetContext 2531 +#define wxGLCanvas_SetCurrent 2533 +#define wxGLCanvas_SwapBuffers 2534 +#define wxGLCanvas_destroy 2535 +#define wxAuiManager_new 2536 +#define wxAuiManager_destruct 2537 +#define wxAuiManager_AddPane_2_1 2538 +#define wxAuiManager_AddPane_3 2539 +#define wxAuiManager_AddPane_2_0 2540 +#define wxAuiManager_DetachPane 2541 +#define wxAuiManager_GetAllPanes 2542 +#define wxAuiManager_GetArtProvider 2543 +#define wxAuiManager_GetDockSizeConstraint 2544 +#define wxAuiManager_GetFlags 2545 +#define wxAuiManager_GetManagedWindow 2546 +#define wxAuiManager_GetManager 2547 +#define wxAuiManager_GetPane_1_1 2548 +#define wxAuiManager_GetPane_1_0 2549 +#define wxAuiManager_HideHint 2550 +#define wxAuiManager_InsertPane 2551 +#define wxAuiManager_LoadPaneInfo 2552 +#define wxAuiManager_LoadPerspective 2553 +#define wxAuiManager_SavePaneInfo 2554 +#define wxAuiManager_SavePerspective 2555 +#define wxAuiManager_SetArtProvider 2556 +#define wxAuiManager_SetDockSizeConstraint 2557 +#define wxAuiManager_SetFlags 2558 +#define wxAuiManager_SetManagedWindow 2559 +#define wxAuiManager_ShowHint 2560 +#define wxAuiManager_UnInit 2561 +#define wxAuiManager_Update 2562 +#define wxAuiPaneInfo_new_0 2563 +#define wxAuiPaneInfo_new_1 2564 +#define wxAuiPaneInfo_destruct 2565 +#define wxAuiPaneInfo_BestSize_1 2566 +#define wxAuiPaneInfo_BestSize_2 2567 +#define wxAuiPaneInfo_Bottom 2568 +#define wxAuiPaneInfo_BottomDockable 2569 +#define wxAuiPaneInfo_Caption 2570 +#define wxAuiPaneInfo_CaptionVisible 2571 +#define wxAuiPaneInfo_Centre 2572 +#define wxAuiPaneInfo_CentrePane 2573 +#define wxAuiPaneInfo_CloseButton 2574 +#define wxAuiPaneInfo_DefaultPane 2575 +#define wxAuiPaneInfo_DestroyOnClose 2576 +#define wxAuiPaneInfo_Direction 2577 +#define wxAuiPaneInfo_Dock 2578 +#define wxAuiPaneInfo_Dockable 2579 +#define wxAuiPaneInfo_Fixed 2580 +#define wxAuiPaneInfo_Float 2581 +#define wxAuiPaneInfo_Floatable 2582 +#define wxAuiPaneInfo_FloatingPosition_1 2583 +#define wxAuiPaneInfo_FloatingPosition_2 2584 +#define wxAuiPaneInfo_FloatingSize_1 2585 +#define wxAuiPaneInfo_FloatingSize_2 2586 +#define wxAuiPaneInfo_Gripper 2587 +#define wxAuiPaneInfo_GripperTop 2588 +#define wxAuiPaneInfo_HasBorder 2589 +#define wxAuiPaneInfo_HasCaption 2590 +#define wxAuiPaneInfo_HasCloseButton 2591 +#define wxAuiPaneInfo_HasFlag 2592 +#define wxAuiPaneInfo_HasGripper 2593 +#define wxAuiPaneInfo_HasGripperTop 2594 +#define wxAuiPaneInfo_HasMaximizeButton 2595 +#define wxAuiPaneInfo_HasMinimizeButton 2596 +#define wxAuiPaneInfo_HasPinButton 2597 +#define wxAuiPaneInfo_Hide 2598 +#define wxAuiPaneInfo_IsBottomDockable 2599 +#define wxAuiPaneInfo_IsDocked 2600 +#define wxAuiPaneInfo_IsFixed 2601 +#define wxAuiPaneInfo_IsFloatable 2602 +#define wxAuiPaneInfo_IsFloating 2603 +#define wxAuiPaneInfo_IsLeftDockable 2604 +#define wxAuiPaneInfo_IsMovable 2605 +#define wxAuiPaneInfo_IsOk 2606 +#define wxAuiPaneInfo_IsResizable 2607 +#define wxAuiPaneInfo_IsRightDockable 2608 +#define wxAuiPaneInfo_IsShown 2609 +#define wxAuiPaneInfo_IsToolbar 2610 +#define wxAuiPaneInfo_IsTopDockable 2611 +#define wxAuiPaneInfo_Layer 2612 +#define wxAuiPaneInfo_Left 2613 +#define wxAuiPaneInfo_LeftDockable 2614 +#define wxAuiPaneInfo_MaxSize_1 2615 +#define wxAuiPaneInfo_MaxSize_2 2616 +#define wxAuiPaneInfo_MaximizeButton 2617 +#define wxAuiPaneInfo_MinSize_1 2618 +#define wxAuiPaneInfo_MinSize_2 2619 +#define wxAuiPaneInfo_MinimizeButton 2620 +#define wxAuiPaneInfo_Movable 2621 +#define wxAuiPaneInfo_Name 2622 +#define wxAuiPaneInfo_PaneBorder 2623 +#define wxAuiPaneInfo_PinButton 2624 +#define wxAuiPaneInfo_Position 2625 +#define wxAuiPaneInfo_Resizable 2626 +#define wxAuiPaneInfo_Right 2627 +#define wxAuiPaneInfo_RightDockable 2628 +#define wxAuiPaneInfo_Row 2629 +#define wxAuiPaneInfo_SafeSet 2630 +#define wxAuiPaneInfo_SetFlag 2631 +#define wxAuiPaneInfo_Show 2632 +#define wxAuiPaneInfo_ToolbarPane 2633 +#define wxAuiPaneInfo_Top 2634 +#define wxAuiPaneInfo_TopDockable 2635 +#define wxAuiPaneInfo_Window 2636 +#define wxAuiNotebook_new_0 2637 +#define wxAuiNotebook_new_2 2638 +#define wxAuiNotebook_AddPage 2639 +#define wxAuiNotebook_Create 2640 +#define wxAuiNotebook_DeletePage 2641 +#define wxAuiNotebook_GetArtProvider 2642 +#define wxAuiNotebook_GetPage 2643 +#define wxAuiNotebook_GetPageBitmap 2644 +#define wxAuiNotebook_GetPageCount 2645 +#define wxAuiNotebook_GetPageIndex 2646 +#define wxAuiNotebook_GetPageText 2647 +#define wxAuiNotebook_GetSelection 2648 +#define wxAuiNotebook_InsertPage 2649 +#define wxAuiNotebook_RemovePage 2650 +#define wxAuiNotebook_SetArtProvider 2651 +#define wxAuiNotebook_SetFont 2652 +#define wxAuiNotebook_SetPageBitmap 2653 +#define wxAuiNotebook_SetPageText 2654 +#define wxAuiNotebook_SetSelection 2655 +#define wxAuiNotebook_SetTabCtrlHeight 2656 +#define wxAuiNotebook_SetUniformBitmapSize 2657 +#define wxAuiNotebook_destroy 2658 +#define wxMDIParentFrame_new_0 2659 +#define wxMDIParentFrame_new_4 2660 +#define wxMDIParentFrame_destruct 2661 +#define wxMDIParentFrame_ActivateNext 2662 +#define wxMDIParentFrame_ActivatePrevious 2663 +#define wxMDIParentFrame_ArrangeIcons 2664 +#define wxMDIParentFrame_Cascade 2665 +#define wxMDIParentFrame_Create 2666 +#define wxMDIParentFrame_GetActiveChild 2667 +#define wxMDIParentFrame_GetClientWindow 2668 +#define wxMDIParentFrame_Tile 2669 +#define wxMDIChildFrame_new_0 2670 +#define wxMDIChildFrame_new_4 2671 +#define wxMDIChildFrame_destruct 2672 +#define wxMDIChildFrame_Activate 2673 +#define wxMDIChildFrame_Create 2674 +#define wxMDIChildFrame_Maximize 2675 +#define wxMDIChildFrame_Restore 2676 +#define wxMDIClientWindow_new_0 2677 +#define wxMDIClientWindow_new_2 2678 +#define wxMDIClientWindow_destruct 2679 +#define wxMDIClientWindow_CreateClient 2680 +#define wxLayoutAlgorithm_new 2681 +#define wxLayoutAlgorithm_LayoutFrame 2682 +#define wxLayoutAlgorithm_LayoutMDIFrame 2683 +#define wxLayoutAlgorithm_LayoutWindow 2684 +#define wxLayoutAlgorithm_destroy 2685 +#define wxEvent_GetId 2686 +#define wxEvent_GetSkipped 2687 +#define wxEvent_GetTimestamp 2688 +#define wxEvent_IsCommandEvent 2689 +#define wxEvent_ResumePropagation 2690 +#define wxEvent_ShouldPropagate 2691 +#define wxEvent_Skip 2692 +#define wxEvent_StopPropagation 2693 +#define wxCommandEvent_getClientData 2694 +#define wxCommandEvent_GetExtraLong 2695 +#define wxCommandEvent_GetInt 2696 +#define wxCommandEvent_GetSelection 2697 +#define wxCommandEvent_GetString 2698 +#define wxCommandEvent_IsChecked 2699 +#define wxCommandEvent_IsSelection 2700 +#define wxCommandEvent_SetInt 2701 +#define wxCommandEvent_SetString 2702 +#define wxScrollEvent_GetOrientation 2703 +#define wxScrollEvent_GetPosition 2704 +#define wxScrollWinEvent_GetOrientation 2705 +#define wxScrollWinEvent_GetPosition 2706 +#define wxMouseEvent_AltDown 2707 +#define wxMouseEvent_Button 2708 +#define wxMouseEvent_ButtonDClick 2709 +#define wxMouseEvent_ButtonDown 2710 +#define wxMouseEvent_ButtonUp 2711 +#define wxMouseEvent_CmdDown 2712 +#define wxMouseEvent_ControlDown 2713 +#define wxMouseEvent_Dragging 2714 +#define wxMouseEvent_Entering 2715 +#define wxMouseEvent_GetButton 2716 +#define wxMouseEvent_GetPosition 2719 +#define wxMouseEvent_GetLogicalPosition 2720 +#define wxMouseEvent_GetLinesPerAction 2721 +#define wxMouseEvent_GetWheelRotation 2722 +#define wxMouseEvent_GetWheelDelta 2723 +#define wxMouseEvent_GetX 2724 +#define wxMouseEvent_GetY 2725 +#define wxMouseEvent_IsButton 2726 +#define wxMouseEvent_IsPageScroll 2727 +#define wxMouseEvent_Leaving 2728 +#define wxMouseEvent_LeftDClick 2729 +#define wxMouseEvent_LeftDown 2730 +#define wxMouseEvent_LeftIsDown 2731 +#define wxMouseEvent_LeftUp 2732 +#define wxMouseEvent_MetaDown 2733 +#define wxMouseEvent_MiddleDClick 2734 +#define wxMouseEvent_MiddleDown 2735 +#define wxMouseEvent_MiddleIsDown 2736 +#define wxMouseEvent_MiddleUp 2737 +#define wxMouseEvent_Moving 2738 +#define wxMouseEvent_RightDClick 2739 +#define wxMouseEvent_RightDown 2740 +#define wxMouseEvent_RightIsDown 2741 +#define wxMouseEvent_RightUp 2742 +#define wxMouseEvent_ShiftDown 2743 +#define wxSetCursorEvent_GetCursor 2744 +#define wxSetCursorEvent_GetX 2745 +#define wxSetCursorEvent_GetY 2746 +#define wxSetCursorEvent_HasCursor 2747 +#define wxSetCursorEvent_SetCursor 2748 +#define wxKeyEvent_AltDown 2749 +#define wxKeyEvent_CmdDown 2750 +#define wxKeyEvent_ControlDown 2751 +#define wxKeyEvent_GetKeyCode 2752 +#define wxKeyEvent_GetModifiers 2753 +#define wxKeyEvent_GetPosition 2756 +#define wxKeyEvent_GetRawKeyCode 2757 +#define wxKeyEvent_GetRawKeyFlags 2758 +#define wxKeyEvent_GetUnicodeKey 2759 +#define wxKeyEvent_GetX 2760 +#define wxKeyEvent_GetY 2761 +#define wxKeyEvent_HasModifiers 2762 +#define wxKeyEvent_MetaDown 2763 +#define wxKeyEvent_ShiftDown 2764 +#define wxSizeEvent_GetSize 2765 +#define wxMoveEvent_GetPosition 2766 +#define wxEraseEvent_GetDC 2767 +#define wxFocusEvent_GetWindow 2768 +#define wxChildFocusEvent_GetWindow 2769 +#define wxMenuEvent_GetMenu 2770 +#define wxMenuEvent_GetMenuId 2771 +#define wxMenuEvent_IsPopup 2772 +#define wxCloseEvent_CanVeto 2773 +#define wxCloseEvent_GetLoggingOff 2774 +#define wxCloseEvent_SetCanVeto 2775 +#define wxCloseEvent_SetLoggingOff 2776 +#define wxCloseEvent_Veto 2777 +#define wxShowEvent_SetShow 2778 +#define wxShowEvent_GetShow 2779 +#define wxIconizeEvent_Iconized 2780 +#define wxJoystickEvent_ButtonDown 2781 +#define wxJoystickEvent_ButtonIsDown 2782 +#define wxJoystickEvent_ButtonUp 2783 +#define wxJoystickEvent_GetButtonChange 2784 +#define wxJoystickEvent_GetButtonState 2785 +#define wxJoystickEvent_GetJoystick 2786 +#define wxJoystickEvent_GetPosition 2787 +#define wxJoystickEvent_GetZPosition 2788 +#define wxJoystickEvent_IsButton 2789 +#define wxJoystickEvent_IsMove 2790 +#define wxJoystickEvent_IsZMove 2791 +#define wxUpdateUIEvent_CanUpdate 2792 +#define wxUpdateUIEvent_Check 2793 +#define wxUpdateUIEvent_Enable 2794 +#define wxUpdateUIEvent_Show 2795 +#define wxUpdateUIEvent_GetChecked 2796 +#define wxUpdateUIEvent_GetEnabled 2797 +#define wxUpdateUIEvent_GetShown 2798 +#define wxUpdateUIEvent_GetSetChecked 2799 +#define wxUpdateUIEvent_GetSetEnabled 2800 +#define wxUpdateUIEvent_GetSetShown 2801 +#define wxUpdateUIEvent_GetSetText 2802 +#define wxUpdateUIEvent_GetText 2803 +#define wxUpdateUIEvent_GetMode 2804 +#define wxUpdateUIEvent_GetUpdateInterval 2805 +#define wxUpdateUIEvent_ResetUpdateTime 2806 +#define wxUpdateUIEvent_SetMode 2807 +#define wxUpdateUIEvent_SetText 2808 +#define wxUpdateUIEvent_SetUpdateInterval 2809 +#define wxMouseCaptureChangedEvent_GetCapturedWindow 2810 +#define wxPaletteChangedEvent_SetChangedWindow 2811 +#define wxPaletteChangedEvent_GetChangedWindow 2812 +#define wxQueryNewPaletteEvent_SetPaletteRealized 2813 +#define wxQueryNewPaletteEvent_GetPaletteRealized 2814 +#define wxNavigationKeyEvent_GetDirection 2815 +#define wxNavigationKeyEvent_SetDirection 2816 +#define wxNavigationKeyEvent_IsWindowChange 2817 +#define wxNavigationKeyEvent_SetWindowChange 2818 +#define wxNavigationKeyEvent_IsFromTab 2819 +#define wxNavigationKeyEvent_SetFromTab 2820 +#define wxNavigationKeyEvent_GetCurrentFocus 2821 +#define wxNavigationKeyEvent_SetCurrentFocus 2822 +#define wxHelpEvent_GetOrigin 2823 +#define wxHelpEvent_GetPosition 2824 +#define wxHelpEvent_SetOrigin 2825 +#define wxHelpEvent_SetPosition 2826 +#define wxContextMenuEvent_GetPosition 2827 +#define wxContextMenuEvent_SetPosition 2828 +#define wxIdleEvent_CanSend 2829 +#define wxIdleEvent_GetMode 2830 +#define wxIdleEvent_RequestMore 2831 +#define wxIdleEvent_MoreRequested 2832 +#define wxIdleEvent_SetMode 2833 +#define wxGridEvent_AltDown 2834 +#define wxGridEvent_ControlDown 2835 +#define wxGridEvent_GetCol 2836 +#define wxGridEvent_GetPosition 2837 +#define wxGridEvent_GetRow 2838 +#define wxGridEvent_MetaDown 2839 +#define wxGridEvent_Selecting 2840 +#define wxGridEvent_ShiftDown 2841 +#define wxNotifyEvent_Allow 2842 +#define wxNotifyEvent_IsAllowed 2843 +#define wxNotifyEvent_Veto 2844 +#define wxSashEvent_GetEdge 2845 +#define wxSashEvent_GetDragRect 2846 +#define wxSashEvent_GetDragStatus 2847 +#define wxListEvent_GetCacheFrom 2848 +#define wxListEvent_GetCacheTo 2849 +#define wxListEvent_GetKeyCode 2850 +#define wxListEvent_GetIndex 2851 +#define wxListEvent_GetColumn 2852 +#define wxListEvent_GetPoint 2853 +#define wxListEvent_GetLabel 2854 +#define wxListEvent_GetText 2855 +#define wxListEvent_GetImage 2856 +#define wxListEvent_GetData 2857 +#define wxListEvent_GetMask 2858 +#define wxListEvent_GetItem 2859 +#define wxListEvent_IsEditCancelled 2860 +#define wxDateEvent_GetDate 2861 +#define wxCalendarEvent_GetWeekDay 2862 +#define wxFileDirPickerEvent_GetPath 2863 +#define wxColourPickerEvent_GetColour 2864 +#define wxFontPickerEvent_GetFont 2865 +#define wxStyledTextEvent_GetPosition 2866 +#define wxStyledTextEvent_GetKey 2867 +#define wxStyledTextEvent_GetModifiers 2868 +#define wxStyledTextEvent_GetModificationType 2869 +#define wxStyledTextEvent_GetText 2870 +#define wxStyledTextEvent_GetLength 2871 +#define wxStyledTextEvent_GetLinesAdded 2872 +#define wxStyledTextEvent_GetLine 2873 +#define wxStyledTextEvent_GetFoldLevelNow 2874 +#define wxStyledTextEvent_GetFoldLevelPrev 2875 +#define wxStyledTextEvent_GetMargin 2876 +#define wxStyledTextEvent_GetMessage 2877 +#define wxStyledTextEvent_GetWParam 2878 +#define wxStyledTextEvent_GetLParam 2879 +#define wxStyledTextEvent_GetListType 2880 +#define wxStyledTextEvent_GetX 2881 +#define wxStyledTextEvent_GetY 2882 +#define wxStyledTextEvent_GetDragText 2883 +#define wxStyledTextEvent_GetDragAllowMove 2884 +#define wxStyledTextEvent_GetDragResult 2885 +#define wxStyledTextEvent_GetShift 2886 +#define wxStyledTextEvent_GetControl 2887 +#define wxStyledTextEvent_GetAlt 2888 +#define utils_wxGetKeyState 2889 +#define utils_wxGetMousePosition 2890 +#define utils_wxGetMouseState 2891 +#define utils_wxSetDetectableAutoRepeat 2892 +#define utils_wxBell 2893 +#define utils_wxFindMenuItemId 2894 +#define utils_wxGenericFindWindowAtPoint 2895 +#define utils_wxFindWindowAtPoint 2896 +#define utils_wxBeginBusyCursor 2897 +#define utils_wxEndBusyCursor 2898 +#define utils_wxIsBusy 2899 +#define utils_wxShutdown 2900 +#define utils_wxShell 2901 +#define utils_wxLaunchDefaultBrowser 2902 +#define utils_wxGetEmailAddress 2903 +#define utils_wxGetUserId 2904 +#define utils_wxGetHomeDir 2905 +#define utils_wxNewId 2906 +#define utils_wxRegisterId 2907 +#define utils_wxGetCurrentId 2908 +#define utils_wxGetOsDescription 2909 +#define utils_wxIsPlatformLittleEndian 2910 +#define utils_wxIsPlatform64Bit 2911 +#define wxPrintout_new 2912 +#define wxPrintout_destruct 2913 +#define wxPrintout_GetDC 2914 +#define wxPrintout_GetPageSizeMM 2915 +#define wxPrintout_GetPageSizePixels 2916 +#define wxPrintout_GetPaperRectPixels 2917 +#define wxPrintout_GetPPIPrinter 2918 +#define wxPrintout_GetPPIScreen 2919 +#define wxPrintout_GetTitle 2920 +#define wxPrintout_IsPreview 2921 +#define wxPrintout_FitThisSizeToPaper 2922 +#define wxPrintout_FitThisSizeToPage 2923 +#define wxPrintout_FitThisSizeToPageMargins 2924 +#define wxPrintout_MapScreenSizeToPaper 2925 +#define wxPrintout_MapScreenSizeToPage 2926 +#define wxPrintout_MapScreenSizeToPageMargins 2927 +#define wxPrintout_MapScreenSizeToDevice 2928 +#define wxPrintout_GetLogicalPaperRect 2929 +#define wxPrintout_GetLogicalPageRect 2930 +#define wxPrintout_GetLogicalPageMarginsRect 2931 +#define wxPrintout_SetLogicalOrigin 2932 +#define wxPrintout_OffsetLogicalOrigin 2933 +#define wxStyledTextCtrl_new_2 2934 +#define wxStyledTextCtrl_new_0 2935 +#define wxStyledTextCtrl_destruct 2936 +#define wxStyledTextCtrl_Create 2937 +#define wxStyledTextCtrl_AddText 2938 +#define wxStyledTextCtrl_AddStyledText 2939 +#define wxStyledTextCtrl_InsertText 2940 +#define wxStyledTextCtrl_ClearAll 2941 +#define wxStyledTextCtrl_ClearDocumentStyle 2942 +#define wxStyledTextCtrl_GetLength 2943 +#define wxStyledTextCtrl_GetCharAt 2944 +#define wxStyledTextCtrl_GetCurrentPos 2945 +#define wxStyledTextCtrl_GetAnchor 2946 +#define wxStyledTextCtrl_GetStyleAt 2947 +#define wxStyledTextCtrl_Redo 2948 +#define wxStyledTextCtrl_SetUndoCollection 2949 +#define wxStyledTextCtrl_SelectAll 2950 +#define wxStyledTextCtrl_SetSavePoint 2951 +#define wxStyledTextCtrl_GetStyledText 2952 +#define wxStyledTextCtrl_CanRedo 2953 +#define wxStyledTextCtrl_MarkerLineFromHandle 2954 +#define wxStyledTextCtrl_MarkerDeleteHandle 2955 +#define wxStyledTextCtrl_GetUndoCollection 2956 +#define wxStyledTextCtrl_GetViewWhiteSpace 2957 +#define wxStyledTextCtrl_SetViewWhiteSpace 2958 +#define wxStyledTextCtrl_PositionFromPoint 2959 +#define wxStyledTextCtrl_PositionFromPointClose 2960 +#define wxStyledTextCtrl_GotoLine 2961 +#define wxStyledTextCtrl_GotoPos 2962 +#define wxStyledTextCtrl_SetAnchor 2963 +#define wxStyledTextCtrl_GetCurLine 2964 +#define wxStyledTextCtrl_GetEndStyled 2965 +#define wxStyledTextCtrl_ConvertEOLs 2966 +#define wxStyledTextCtrl_GetEOLMode 2967 +#define wxStyledTextCtrl_SetEOLMode 2968 +#define wxStyledTextCtrl_StartStyling 2969 +#define wxStyledTextCtrl_SetStyling 2970 +#define wxStyledTextCtrl_GetBufferedDraw 2971 +#define wxStyledTextCtrl_SetBufferedDraw 2972 +#define wxStyledTextCtrl_SetTabWidth 2973 +#define wxStyledTextCtrl_GetTabWidth 2974 +#define wxStyledTextCtrl_SetCodePage 2975 +#define wxStyledTextCtrl_MarkerDefine 2976 +#define wxStyledTextCtrl_MarkerSetForeground 2977 +#define wxStyledTextCtrl_MarkerSetBackground 2978 +#define wxStyledTextCtrl_MarkerAdd 2979 +#define wxStyledTextCtrl_MarkerDelete 2980 +#define wxStyledTextCtrl_MarkerDeleteAll 2981 +#define wxStyledTextCtrl_MarkerGet 2982 +#define wxStyledTextCtrl_MarkerNext 2983 +#define wxStyledTextCtrl_MarkerPrevious 2984 +#define wxStyledTextCtrl_MarkerDefineBitmap 2985 +#define wxStyledTextCtrl_MarkerAddSet 2986 +#define wxStyledTextCtrl_MarkerSetAlpha 2987 +#define wxStyledTextCtrl_SetMarginType 2988 +#define wxStyledTextCtrl_GetMarginType 2989 +#define wxStyledTextCtrl_SetMarginWidth 2990 +#define wxStyledTextCtrl_GetMarginWidth 2991 +#define wxStyledTextCtrl_SetMarginMask 2992 +#define wxStyledTextCtrl_GetMarginMask 2993 +#define wxStyledTextCtrl_SetMarginSensitive 2994 +#define wxStyledTextCtrl_GetMarginSensitive 2995 +#define wxStyledTextCtrl_StyleClearAll 2996 +#define wxStyledTextCtrl_StyleSetForeground 2997 +#define wxStyledTextCtrl_StyleSetBackground 2998 +#define wxStyledTextCtrl_StyleSetBold 2999 +#define wxStyledTextCtrl_StyleSetItalic 3000 +#define wxStyledTextCtrl_StyleSetSize 3001 +#define wxStyledTextCtrl_StyleSetFaceName 3002 +#define wxStyledTextCtrl_StyleSetEOLFilled 3003 +#define wxStyledTextCtrl_StyleResetDefault 3004 +#define wxStyledTextCtrl_StyleSetUnderline 3005 +#define wxStyledTextCtrl_StyleSetCase 3006 +#define wxStyledTextCtrl_StyleSetHotSpot 3007 +#define wxStyledTextCtrl_SetSelForeground 3008 +#define wxStyledTextCtrl_SetSelBackground 3009 +#define wxStyledTextCtrl_GetSelAlpha 3010 +#define wxStyledTextCtrl_SetSelAlpha 3011 +#define wxStyledTextCtrl_SetCaretForeground 3012 +#define wxStyledTextCtrl_CmdKeyAssign 3013 +#define wxStyledTextCtrl_CmdKeyClear 3014 +#define wxStyledTextCtrl_CmdKeyClearAll 3015 +#define wxStyledTextCtrl_SetStyleBytes 3016 +#define wxStyledTextCtrl_StyleSetVisible 3017 +#define wxStyledTextCtrl_GetCaretPeriod 3018 +#define wxStyledTextCtrl_SetCaretPeriod 3019 +#define wxStyledTextCtrl_SetWordChars 3020 +#define wxStyledTextCtrl_BeginUndoAction 3021 +#define wxStyledTextCtrl_EndUndoAction 3022 +#define wxStyledTextCtrl_IndicatorSetStyle 3023 +#define wxStyledTextCtrl_IndicatorGetStyle 3024 +#define wxStyledTextCtrl_IndicatorSetForeground 3025 +#define wxStyledTextCtrl_IndicatorGetForeground 3026 +#define wxStyledTextCtrl_SetWhitespaceForeground 3027 +#define wxStyledTextCtrl_SetWhitespaceBackground 3028 +#define wxStyledTextCtrl_GetStyleBits 3029 +#define wxStyledTextCtrl_SetLineState 3030 +#define wxStyledTextCtrl_GetLineState 3031 +#define wxStyledTextCtrl_GetMaxLineState 3032 +#define wxStyledTextCtrl_GetCaretLineVisible 3033 +#define wxStyledTextCtrl_SetCaretLineVisible 3034 +#define wxStyledTextCtrl_GetCaretLineBackground 3035 +#define wxStyledTextCtrl_SetCaretLineBackground 3036 +#define wxStyledTextCtrl_AutoCompShow 3037 +#define wxStyledTextCtrl_AutoCompCancel 3038 +#define wxStyledTextCtrl_AutoCompActive 3039 +#define wxStyledTextCtrl_AutoCompPosStart 3040 +#define wxStyledTextCtrl_AutoCompComplete 3041 +#define wxStyledTextCtrl_AutoCompStops 3042 +#define wxStyledTextCtrl_AutoCompSetSeparator 3043 +#define wxStyledTextCtrl_AutoCompGetSeparator 3044 +#define wxStyledTextCtrl_AutoCompSelect 3045 +#define wxStyledTextCtrl_AutoCompSetCancelAtStart 3046 +#define wxStyledTextCtrl_AutoCompGetCancelAtStart 3047 +#define wxStyledTextCtrl_AutoCompSetFillUps 3048 +#define wxStyledTextCtrl_AutoCompSetChooseSingle 3049 +#define wxStyledTextCtrl_AutoCompGetChooseSingle 3050 +#define wxStyledTextCtrl_AutoCompSetIgnoreCase 3051 +#define wxStyledTextCtrl_AutoCompGetIgnoreCase 3052 +#define wxStyledTextCtrl_UserListShow 3053 +#define wxStyledTextCtrl_AutoCompSetAutoHide 3054 +#define wxStyledTextCtrl_AutoCompGetAutoHide 3055 +#define wxStyledTextCtrl_AutoCompSetDropRestOfWord 3056 +#define wxStyledTextCtrl_AutoCompGetDropRestOfWord 3057 +#define wxStyledTextCtrl_RegisterImage 3058 +#define wxStyledTextCtrl_ClearRegisteredImages 3059 +#define wxStyledTextCtrl_AutoCompGetTypeSeparator 3060 +#define wxStyledTextCtrl_AutoCompSetTypeSeparator 3061 +#define wxStyledTextCtrl_AutoCompSetMaxWidth 3062 +#define wxStyledTextCtrl_AutoCompGetMaxWidth 3063 +#define wxStyledTextCtrl_AutoCompSetMaxHeight 3064 +#define wxStyledTextCtrl_AutoCompGetMaxHeight 3065 +#define wxStyledTextCtrl_SetIndent 3066 +#define wxStyledTextCtrl_GetIndent 3067 +#define wxStyledTextCtrl_SetUseTabs 3068 +#define wxStyledTextCtrl_GetUseTabs 3069 +#define wxStyledTextCtrl_SetLineIndentation 3070 +#define wxStyledTextCtrl_GetLineIndentation 3071 +#define wxStyledTextCtrl_GetLineIndentPosition 3072 +#define wxStyledTextCtrl_GetColumn 3073 +#define wxStyledTextCtrl_SetUseHorizontalScrollBar 3074 +#define wxStyledTextCtrl_GetUseHorizontalScrollBar 3075 +#define wxStyledTextCtrl_SetIndentationGuides 3076 +#define wxStyledTextCtrl_GetIndentationGuides 3077 +#define wxStyledTextCtrl_SetHighlightGuide 3078 +#define wxStyledTextCtrl_GetHighlightGuide 3079 +#define wxStyledTextCtrl_GetLineEndPosition 3080 +#define wxStyledTextCtrl_GetCodePage 3081 +#define wxStyledTextCtrl_GetCaretForeground 3082 +#define wxStyledTextCtrl_GetReadOnly 3083 +#define wxStyledTextCtrl_SetCurrentPos 3084 +#define wxStyledTextCtrl_SetSelectionStart 3085 +#define wxStyledTextCtrl_GetSelectionStart 3086 +#define wxStyledTextCtrl_SetSelectionEnd 3087 +#define wxStyledTextCtrl_GetSelectionEnd 3088 +#define wxStyledTextCtrl_SetPrintMagnification 3089 +#define wxStyledTextCtrl_GetPrintMagnification 3090 +#define wxStyledTextCtrl_SetPrintColourMode 3091 +#define wxStyledTextCtrl_GetPrintColourMode 3092 +#define wxStyledTextCtrl_FindText 3093 +#define wxStyledTextCtrl_FormatRange 3094 +#define wxStyledTextCtrl_GetFirstVisibleLine 3095 +#define wxStyledTextCtrl_GetLine 3096 +#define wxStyledTextCtrl_GetLineCount 3097 +#define wxStyledTextCtrl_SetMarginLeft 3098 +#define wxStyledTextCtrl_GetMarginLeft 3099 +#define wxStyledTextCtrl_SetMarginRight 3100 +#define wxStyledTextCtrl_GetMarginRight 3101 +#define wxStyledTextCtrl_GetModify 3102 +#define wxStyledTextCtrl_SetSelection 3103 +#define wxStyledTextCtrl_GetSelectedText 3104 +#define wxStyledTextCtrl_GetTextRange 3105 +#define wxStyledTextCtrl_HideSelection 3106 +#define wxStyledTextCtrl_LineFromPosition 3107 +#define wxStyledTextCtrl_PositionFromLine 3108 +#define wxStyledTextCtrl_LineScroll 3109 +#define wxStyledTextCtrl_EnsureCaretVisible 3110 +#define wxStyledTextCtrl_ReplaceSelection 3111 +#define wxStyledTextCtrl_SetReadOnly 3112 +#define wxStyledTextCtrl_CanPaste 3113 +#define wxStyledTextCtrl_CanUndo 3114 +#define wxStyledTextCtrl_EmptyUndoBuffer 3115 +#define wxStyledTextCtrl_Undo 3116 +#define wxStyledTextCtrl_Cut 3117 +#define wxStyledTextCtrl_Copy 3118 +#define wxStyledTextCtrl_Paste 3119 +#define wxStyledTextCtrl_Clear 3120 +#define wxStyledTextCtrl_SetText 3121 +#define wxStyledTextCtrl_GetText 3122 +#define wxStyledTextCtrl_GetTextLength 3123 +#define wxStyledTextCtrl_GetOvertype 3124 +#define wxStyledTextCtrl_SetCaretWidth 3125 +#define wxStyledTextCtrl_GetCaretWidth 3126 +#define wxStyledTextCtrl_SetTargetStart 3127 +#define wxStyledTextCtrl_GetTargetStart 3128 +#define wxStyledTextCtrl_SetTargetEnd 3129 +#define wxStyledTextCtrl_GetTargetEnd 3130 +#define wxStyledTextCtrl_ReplaceTarget 3131 +#define wxStyledTextCtrl_SearchInTarget 3132 +#define wxStyledTextCtrl_SetSearchFlags 3133 +#define wxStyledTextCtrl_GetSearchFlags 3134 +#define wxStyledTextCtrl_CallTipShow 3135 +#define wxStyledTextCtrl_CallTipCancel 3136 +#define wxStyledTextCtrl_CallTipActive 3137 +#define wxStyledTextCtrl_CallTipPosAtStart 3138 +#define wxStyledTextCtrl_CallTipSetHighlight 3139 +#define wxStyledTextCtrl_CallTipSetBackground 3140 +#define wxStyledTextCtrl_CallTipSetForeground 3141 +#define wxStyledTextCtrl_CallTipSetForegroundHighlight 3142 +#define wxStyledTextCtrl_CallTipUseStyle 3143 +#define wxStyledTextCtrl_VisibleFromDocLine 3144 +#define wxStyledTextCtrl_DocLineFromVisible 3145 +#define wxStyledTextCtrl_WrapCount 3146 +#define wxStyledTextCtrl_SetFoldLevel 3147 +#define wxStyledTextCtrl_GetFoldLevel 3148 +#define wxStyledTextCtrl_GetLastChild 3149 +#define wxStyledTextCtrl_GetFoldParent 3150 +#define wxStyledTextCtrl_ShowLines 3151 +#define wxStyledTextCtrl_HideLines 3152 +#define wxStyledTextCtrl_GetLineVisible 3153 +#define wxStyledTextCtrl_SetFoldExpanded 3154 +#define wxStyledTextCtrl_GetFoldExpanded 3155 +#define wxStyledTextCtrl_ToggleFold 3156 +#define wxStyledTextCtrl_EnsureVisible 3157 +#define wxStyledTextCtrl_SetFoldFlags 3158 +#define wxStyledTextCtrl_EnsureVisibleEnforcePolicy 3159 +#define wxStyledTextCtrl_SetTabIndents 3160 +#define wxStyledTextCtrl_GetTabIndents 3161 +#define wxStyledTextCtrl_SetBackSpaceUnIndents 3162 +#define wxStyledTextCtrl_GetBackSpaceUnIndents 3163 +#define wxStyledTextCtrl_SetMouseDwellTime 3164 +#define wxStyledTextCtrl_GetMouseDwellTime 3165 +#define wxStyledTextCtrl_WordStartPosition 3166 +#define wxStyledTextCtrl_WordEndPosition 3167 +#define wxStyledTextCtrl_SetWrapMode 3168 +#define wxStyledTextCtrl_GetWrapMode 3169 +#define wxStyledTextCtrl_SetWrapVisualFlags 3170 +#define wxStyledTextCtrl_GetWrapVisualFlags 3171 +#define wxStyledTextCtrl_SetWrapVisualFlagsLocation 3172 +#define wxStyledTextCtrl_GetWrapVisualFlagsLocation 3173 +#define wxStyledTextCtrl_SetWrapStartIndent 3174 +#define wxStyledTextCtrl_GetWrapStartIndent 3175 +#define wxStyledTextCtrl_SetLayoutCache 3176 +#define wxStyledTextCtrl_GetLayoutCache 3177 +#define wxStyledTextCtrl_SetScrollWidth 3178 +#define wxStyledTextCtrl_GetScrollWidth 3179 +#define wxStyledTextCtrl_TextWidth 3180 +#define wxStyledTextCtrl_GetEndAtLastLine 3181 +#define wxStyledTextCtrl_TextHeight 3182 +#define wxStyledTextCtrl_SetUseVerticalScrollBar 3183 +#define wxStyledTextCtrl_GetUseVerticalScrollBar 3184 +#define wxStyledTextCtrl_AppendText 3185 +#define wxStyledTextCtrl_GetTwoPhaseDraw 3186 +#define wxStyledTextCtrl_SetTwoPhaseDraw 3187 +#define wxStyledTextCtrl_TargetFromSelection 3188 +#define wxStyledTextCtrl_LinesJoin 3189 +#define wxStyledTextCtrl_LinesSplit 3190 +#define wxStyledTextCtrl_SetFoldMarginColour 3191 +#define wxStyledTextCtrl_SetFoldMarginHiColour 3192 +#define wxStyledTextCtrl_LineDown 3193 +#define wxStyledTextCtrl_LineDownExtend 3194 +#define wxStyledTextCtrl_LineUp 3195 +#define wxStyledTextCtrl_LineUpExtend 3196 +#define wxStyledTextCtrl_CharLeft 3197 +#define wxStyledTextCtrl_CharLeftExtend 3198 +#define wxStyledTextCtrl_CharRight 3199 +#define wxStyledTextCtrl_CharRightExtend 3200 +#define wxStyledTextCtrl_WordLeft 3201 +#define wxStyledTextCtrl_WordLeftExtend 3202 +#define wxStyledTextCtrl_WordRight 3203 +#define wxStyledTextCtrl_WordRightExtend 3204 +#define wxStyledTextCtrl_Home 3205 +#define wxStyledTextCtrl_HomeExtend 3206 +#define wxStyledTextCtrl_LineEnd 3207 +#define wxStyledTextCtrl_LineEndExtend 3208 +#define wxStyledTextCtrl_DocumentStart 3209 +#define wxStyledTextCtrl_DocumentStartExtend 3210 +#define wxStyledTextCtrl_DocumentEnd 3211 +#define wxStyledTextCtrl_DocumentEndExtend 3212 +#define wxStyledTextCtrl_PageUp 3213 +#define wxStyledTextCtrl_PageUpExtend 3214 +#define wxStyledTextCtrl_PageDown 3215 +#define wxStyledTextCtrl_PageDownExtend 3216 +#define wxStyledTextCtrl_EditToggleOvertype 3217 +#define wxStyledTextCtrl_Cancel 3218 +#define wxStyledTextCtrl_DeleteBack 3219 +#define wxStyledTextCtrl_Tab 3220 +#define wxStyledTextCtrl_BackTab 3221 +#define wxStyledTextCtrl_NewLine 3222 +#define wxStyledTextCtrl_FormFeed 3223 +#define wxStyledTextCtrl_VCHome 3224 +#define wxStyledTextCtrl_VCHomeExtend 3225 +#define wxStyledTextCtrl_ZoomIn 3226 +#define wxStyledTextCtrl_ZoomOut 3227 +#define wxStyledTextCtrl_DelWordLeft 3228 +#define wxStyledTextCtrl_DelWordRight 3229 +#define wxStyledTextCtrl_LineCut 3230 +#define wxStyledTextCtrl_LineDelete 3231 +#define wxStyledTextCtrl_LineTranspose 3232 +#define wxStyledTextCtrl_LineDuplicate 3233 +#define wxStyledTextCtrl_LowerCase 3234 +#define wxStyledTextCtrl_UpperCase 3235 +#define wxStyledTextCtrl_LineScrollDown 3236 +#define wxStyledTextCtrl_LineScrollUp 3237 +#define wxStyledTextCtrl_DeleteBackNotLine 3238 +#define wxStyledTextCtrl_HomeDisplay 3239 +#define wxStyledTextCtrl_HomeDisplayExtend 3240 +#define wxStyledTextCtrl_LineEndDisplay 3241 +#define wxStyledTextCtrl_LineEndDisplayExtend 3242 +#define wxStyledTextCtrl_HomeWrapExtend 3243 +#define wxStyledTextCtrl_LineEndWrap 3244 +#define wxStyledTextCtrl_LineEndWrapExtend 3245 +#define wxStyledTextCtrl_VCHomeWrap 3246 +#define wxStyledTextCtrl_VCHomeWrapExtend 3247 +#define wxStyledTextCtrl_LineCopy 3248 +#define wxStyledTextCtrl_MoveCaretInsideView 3249 +#define wxStyledTextCtrl_LineLength 3250 +#define wxStyledTextCtrl_BraceHighlight 3251 +#define wxStyledTextCtrl_BraceBadLight 3252 +#define wxStyledTextCtrl_BraceMatch 3253 +#define wxStyledTextCtrl_GetViewEOL 3254 +#define wxStyledTextCtrl_SetViewEOL 3255 +#define wxStyledTextCtrl_SetModEventMask 3256 +#define wxStyledTextCtrl_GetEdgeColumn 3257 +#define wxStyledTextCtrl_SetEdgeColumn 3258 +#define wxStyledTextCtrl_GetEdgeMode 3259 +#define wxStyledTextCtrl_GetEdgeColour 3260 +#define wxStyledTextCtrl_SetEdgeColour 3261 +#define wxStyledTextCtrl_SearchAnchor 3262 +#define wxStyledTextCtrl_SearchNext 3263 +#define wxStyledTextCtrl_SearchPrev 3264 +#define wxStyledTextCtrl_LinesOnScreen 3265 +#define wxStyledTextCtrl_UsePopUp 3266 +#define wxStyledTextCtrl_SelectionIsRectangle 3267 +#define wxStyledTextCtrl_SetZoom 3268 +#define wxStyledTextCtrl_GetZoom 3269 +#define wxStyledTextCtrl_GetModEventMask 3270 +#define wxStyledTextCtrl_SetSTCFocus 3271 +#define wxStyledTextCtrl_GetSTCFocus 3272 +#define wxStyledTextCtrl_SetStatus 3273 +#define wxStyledTextCtrl_GetStatus 3274 +#define wxStyledTextCtrl_SetMouseDownCaptures 3275 +#define wxStyledTextCtrl_GetMouseDownCaptures 3276 +#define wxStyledTextCtrl_SetSTCCursor 3277 +#define wxStyledTextCtrl_GetSTCCursor 3278 +#define wxStyledTextCtrl_SetControlCharSymbol 3279 +#define wxStyledTextCtrl_GetControlCharSymbol 3280 +#define wxStyledTextCtrl_WordPartLeft 3281 +#define wxStyledTextCtrl_WordPartLeftExtend 3282 +#define wxStyledTextCtrl_WordPartRight 3283 +#define wxStyledTextCtrl_WordPartRightExtend 3284 +#define wxStyledTextCtrl_SetVisiblePolicy 3285 +#define wxStyledTextCtrl_DelLineLeft 3286 +#define wxStyledTextCtrl_DelLineRight 3287 +#define wxStyledTextCtrl_GetXOffset 3288 +#define wxStyledTextCtrl_ChooseCaretX 3289 +#define wxStyledTextCtrl_SetXCaretPolicy 3290 +#define wxStyledTextCtrl_SetYCaretPolicy 3291 +#define wxStyledTextCtrl_GetPrintWrapMode 3292 +#define wxStyledTextCtrl_SetHotspotActiveForeground 3293 +#define wxStyledTextCtrl_SetHotspotActiveBackground 3294 +#define wxStyledTextCtrl_SetHotspotActiveUnderline 3295 +#define wxStyledTextCtrl_SetHotspotSingleLine 3296 +#define wxStyledTextCtrl_ParaDownExtend 3297 +#define wxStyledTextCtrl_ParaUp 3298 +#define wxStyledTextCtrl_ParaUpExtend 3299 +#define wxStyledTextCtrl_PositionBefore 3300 +#define wxStyledTextCtrl_PositionAfter 3301 +#define wxStyledTextCtrl_CopyRange 3302 +#define wxStyledTextCtrl_CopyText 3303 +#define wxStyledTextCtrl_SetSelectionMode 3304 +#define wxStyledTextCtrl_GetSelectionMode 3305 +#define wxStyledTextCtrl_LineDownRectExtend 3306 +#define wxStyledTextCtrl_LineUpRectExtend 3307 +#define wxStyledTextCtrl_CharLeftRectExtend 3308 +#define wxStyledTextCtrl_CharRightRectExtend 3309 +#define wxStyledTextCtrl_HomeRectExtend 3310 +#define wxStyledTextCtrl_VCHomeRectExtend 3311 +#define wxStyledTextCtrl_LineEndRectExtend 3312 +#define wxStyledTextCtrl_PageUpRectExtend 3313 +#define wxStyledTextCtrl_PageDownRectExtend 3314 +#define wxStyledTextCtrl_StutteredPageUp 3315 +#define wxStyledTextCtrl_StutteredPageUpExtend 3316 +#define wxStyledTextCtrl_StutteredPageDown 3317 +#define wxStyledTextCtrl_StutteredPageDownExtend 3318 +#define wxStyledTextCtrl_WordLeftEnd 3319 +#define wxStyledTextCtrl_WordLeftEndExtend 3320 +#define wxStyledTextCtrl_WordRightEnd 3321 +#define wxStyledTextCtrl_WordRightEndExtend 3322 +#define wxStyledTextCtrl_SetWhitespaceChars 3323 +#define wxStyledTextCtrl_SetCharsDefault 3324 +#define wxStyledTextCtrl_AutoCompGetCurrent 3325 +#define wxStyledTextCtrl_Allocate 3326 +#define wxStyledTextCtrl_FindColumn 3327 +#define wxStyledTextCtrl_GetCaretSticky 3328 +#define wxStyledTextCtrl_SetCaretSticky 3329 +#define wxStyledTextCtrl_ToggleCaretSticky 3330 +#define wxStyledTextCtrl_SetPasteConvertEndings 3331 +#define wxStyledTextCtrl_GetPasteConvertEndings 3332 +#define wxStyledTextCtrl_SelectionDuplicate 3333 +#define wxStyledTextCtrl_SetCaretLineBackAlpha 3334 +#define wxStyledTextCtrl_GetCaretLineBackAlpha 3335 +#define wxStyledTextCtrl_StartRecord 3336 +#define wxStyledTextCtrl_StopRecord 3337 +#define wxStyledTextCtrl_SetLexer 3338 +#define wxStyledTextCtrl_GetLexer 3339 +#define wxStyledTextCtrl_Colourise 3340 +#define wxStyledTextCtrl_SetProperty 3341 +#define wxStyledTextCtrl_SetKeyWords 3342 +#define wxStyledTextCtrl_SetLexerLanguage 3343 +#define wxStyledTextCtrl_GetProperty 3344 +#define wxStyledTextCtrl_GetStyleBitsNeeded 3345 +#define wxStyledTextCtrl_GetCurrentLine 3346 +#define wxStyledTextCtrl_StyleSetSpec 3347 +#define wxStyledTextCtrl_StyleSetFont 3348 +#define wxStyledTextCtrl_StyleSetFontAttr 3349 +#define wxStyledTextCtrl_StyleSetCharacterSet 3350 +#define wxStyledTextCtrl_StyleSetFontEncoding 3351 +#define wxStyledTextCtrl_CmdKeyExecute 3352 +#define wxStyledTextCtrl_SetMargins 3353 +#define wxStyledTextCtrl_GetSelection 3354 +#define wxStyledTextCtrl_PointFromPosition 3355 +#define wxStyledTextCtrl_ScrollToLine 3356 +#define wxStyledTextCtrl_ScrollToColumn 3357 +#define wxStyledTextCtrl_SendMsg 3358 +#define wxStyledTextCtrl_SetVScrollBar 3359 +#define wxStyledTextCtrl_SetHScrollBar 3360 +#define wxStyledTextCtrl_GetLastKeydownProcessed 3361 +#define wxStyledTextCtrl_SetLastKeydownProcessed 3362 +#define wxStyledTextCtrl_SaveFile 3363 +#define wxStyledTextCtrl_LoadFile 3364 +#define wxStyledTextCtrl_DoDragOver 3365 +#define wxStyledTextCtrl_DoDropText 3366 +#define wxStyledTextCtrl_GetUseAntiAliasing 3367 +#define wxStyledTextCtrl_AddTextRaw 3368 +#define wxStyledTextCtrl_InsertTextRaw 3369 +#define wxStyledTextCtrl_GetCurLineRaw 3370 +#define wxStyledTextCtrl_GetLineRaw 3371 +#define wxStyledTextCtrl_GetSelectedTextRaw 3372 +#define wxStyledTextCtrl_GetTextRangeRaw 3373 +#define wxStyledTextCtrl_SetTextRaw 3374 +#define wxStyledTextCtrl_GetTextRaw 3375 +#define wxStyledTextCtrl_AppendTextRaw 3376 +#define wxArtProvider_GetBitmap 3377 +#define wxArtProvider_GetIcon 3378 +#define wxTreeEvent_GetKeyCode 3379 +#define wxTreeEvent_GetItem 3380 +#define wxTreeEvent_GetKeyEvent 3381 +#define wxTreeEvent_GetLabel 3382 +#define wxTreeEvent_GetOldItem 3383 +#define wxTreeEvent_GetPoint 3384 +#define wxTreeEvent_IsEditCancelled 3385 +#define wxTreeEvent_SetToolTip 3386 +#define wxNotebookEvent_GetOldSelection 3387 +#define wxNotebookEvent_GetSelection 3388 +#define wxNotebookEvent_SetOldSelection 3389 +#define wxNotebookEvent_SetSelection 3390 +#define wxFileDataObject_new 3391 +#define wxFileDataObject_AddFile 3392 +#define wxFileDataObject_GetFilenames 3393 +#define wxFileDataObject_destroy 3394 +#define wxTextDataObject_new 3395 +#define wxTextDataObject_GetTextLength 3396 +#define wxTextDataObject_GetText 3397 +#define wxTextDataObject_SetText 3398 +#define wxTextDataObject_destroy 3399 +#define wxBitmapDataObject_new_1_1 3400 +#define wxBitmapDataObject_new_1_0 3401 +#define wxBitmapDataObject_GetBitmap 3402 +#define wxBitmapDataObject_SetBitmap 3403 +#define wxBitmapDataObject_destroy 3404 +#define wxClipboard_new 3406 +#define wxClipboard_destruct 3407 +#define wxClipboard_AddData 3408 +#define wxClipboard_Clear 3409 +#define wxClipboard_Close 3410 +#define wxClipboard_Flush 3411 +#define wxClipboard_GetData 3412 +#define wxClipboard_IsOpened 3413 +#define wxClipboard_Open 3414 +#define wxClipboard_SetData 3415 +#define wxClipboard_UsePrimarySelection 3417 +#define wxClipboard_IsSupported 3418 +#define wxClipboard_Get 3419 +#define wxSpinEvent_GetPosition 3420 +#define wxSpinEvent_SetPosition 3421 +#define wxSplitterWindow_new_0 3422 +#define wxSplitterWindow_new_2 3423 +#define wxSplitterWindow_destruct 3424 +#define wxSplitterWindow_Create 3425 +#define wxSplitterWindow_GetMinimumPaneSize 3426 +#define wxSplitterWindow_GetSashGravity 3427 +#define wxSplitterWindow_GetSashPosition 3428 +#define wxSplitterWindow_GetSplitMode 3429 +#define wxSplitterWindow_GetWindow1 3430 +#define wxSplitterWindow_GetWindow2 3431 +#define wxSplitterWindow_Initialize 3432 +#define wxSplitterWindow_IsSplit 3433 +#define wxSplitterWindow_ReplaceWindow 3434 +#define wxSplitterWindow_SetSashGravity 3435 +#define wxSplitterWindow_SetSashPosition 3436 +#define wxSplitterWindow_SetSashSize 3437 +#define wxSplitterWindow_SetMinimumPaneSize 3438 +#define wxSplitterWindow_SetSplitMode 3439 +#define wxSplitterWindow_SplitHorizontally 3440 +#define wxSplitterWindow_SplitVertically 3441 +#define wxSplitterWindow_Unsplit 3442 +#define wxSplitterWindow_UpdateSize 3443 +#define wxSplitterEvent_GetSashPosition 3444 +#define wxSplitterEvent_GetX 3445 +#define wxSplitterEvent_GetY 3446 +#define wxSplitterEvent_GetWindowBeingRemoved 3447 +#define wxSplitterEvent_SetSashPosition 3448 +#define wxHtmlWindow_new_0 3449 +#define wxHtmlWindow_new_2 3450 +#define wxHtmlWindow_AppendToPage 3451 +#define wxHtmlWindow_GetOpenedAnchor 3452 +#define wxHtmlWindow_GetOpenedPage 3453 +#define wxHtmlWindow_GetOpenedPageTitle 3454 +#define wxHtmlWindow_GetRelatedFrame 3455 +#define wxHtmlWindow_HistoryBack 3456 +#define wxHtmlWindow_HistoryCanBack 3457 +#define wxHtmlWindow_HistoryCanForward 3458 +#define wxHtmlWindow_HistoryClear 3459 +#define wxHtmlWindow_HistoryForward 3460 +#define wxHtmlWindow_LoadFile 3461 +#define wxHtmlWindow_LoadPage 3462 +#define wxHtmlWindow_SelectAll 3463 +#define wxHtmlWindow_SelectionToText 3464 +#define wxHtmlWindow_SelectLine 3465 +#define wxHtmlWindow_SelectWord 3466 +#define wxHtmlWindow_SetBorders 3467 +#define wxHtmlWindow_SetFonts 3468 +#define wxHtmlWindow_SetPage 3469 +#define wxHtmlWindow_SetRelatedFrame 3470 +#define wxHtmlWindow_SetRelatedStatusBar 3471 +#define wxHtmlWindow_ToText 3472 +#define wxHtmlWindow_destroy 3473 +#define wxHtmlLinkEvent_GetLinkInfo 3474 +#define wxAuiNotebookEvent_SetSelection 3475 +#define wxAuiNotebookEvent_GetSelection 3476 +#define wxAuiNotebookEvent_SetOldSelection 3477 +#define wxAuiNotebookEvent_GetOldSelection 3478 +#define wxAuiNotebookEvent_SetDragSource 3479 +#define wxAuiNotebookEvent_GetDragSource 3480 +#define wxAuiManagerEvent_SetManager 3481 +#define wxAuiManagerEvent_GetManager 3482 +#define wxAuiManagerEvent_SetPane 3483 +#define wxAuiManagerEvent_GetPane 3484 +#define wxAuiManagerEvent_SetButton 3485 +#define wxAuiManagerEvent_GetButton 3486 +#define wxAuiManagerEvent_SetDC 3487 +#define wxAuiManagerEvent_GetDC 3488 +#define wxAuiManagerEvent_Veto 3489 +#define wxAuiManagerEvent_GetVeto 3490 +#define wxAuiManagerEvent_SetCanVeto 3491 +#define wxAuiManagerEvent_CanVeto 3492 +#define wxLogNull_new 3493 +#define wxLogNull_destroy 3494 diff --git a/lib/wx/include/wx.hrl b/lib/wx/include/wx.hrl index 6fef625b14..8659b71985 100644 --- a/lib/wx/include/wx.hrl +++ b/lib/wx/include/wx.hrl @@ -325,16 +325,339 @@ -define(wxWHITE_PEN, wxe_util:get_const(wxWHITE_PEN)). %% Enum and defines -% From define::From bookctrl.h --define(wxEVT_COMMAND_BOOKCTRL_PAGE_CHANGING, ?wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING). --define(wxEVT_COMMAND_BOOKCTRL_PAGE_CHANGED, ?wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED). +% From class wxAuiManager +-define(wxAuiManager_actionNone, 0). +-define(wxAuiManager_actionResize, 1). +-define(wxAuiManager_actionClickButton, 2). +-define(wxAuiManager_actionClickCaption, 3). +-define(wxAuiManager_actionDragToolbarPane, 4). +-define(wxAuiManager_actionDragFloatingPane, 5). +% From class wxAuiPaneInfo::wxAuiPaneState +-define(wxAuiPaneInfo_optionFloating, 1). +-define(wxAuiPaneInfo_optionHidden, 2). +-define(wxAuiPaneInfo_optionLeftDockable, 4). +-define(wxAuiPaneInfo_optionRightDockable, 8). +-define(wxAuiPaneInfo_optionTopDockable, 16). +-define(wxAuiPaneInfo_optionBottomDockable, 32). +-define(wxAuiPaneInfo_optionFloatable, 64). +-define(wxAuiPaneInfo_optionMovable, 128). +-define(wxAuiPaneInfo_optionResizable, 256). +-define(wxAuiPaneInfo_optionPaneBorder, 512). +-define(wxAuiPaneInfo_optionCaption, 1024). +-define(wxAuiPaneInfo_optionGripper, 2048). +-define(wxAuiPaneInfo_optionDestroyOnClose, 4096). +-define(wxAuiPaneInfo_optionToolbar, 8192). +-define(wxAuiPaneInfo_optionActive, 16384). +-define(wxAuiPaneInfo_optionGripperTop, 32768). +-define(wxAuiPaneInfo_optionMaximized, 65536). +-define(wxAuiPaneInfo_optionDockFixed, 131072). +-define(wxAuiPaneInfo_buttonClose, 2097152). +-define(wxAuiPaneInfo_buttonMaximize, 4194304). +-define(wxAuiPaneInfo_buttonMinimize, 8388608). +-define(wxAuiPaneInfo_buttonPin, 16777216). +-define(wxAuiPaneInfo_buttonCustom1, 67108864). +-define(wxAuiPaneInfo_buttonCustom2, 134217728). +-define(wxAuiPaneInfo_buttonCustom3, 268435456). +-define(wxAuiPaneInfo_savedHiddenState, 1073741824). +-define(wxAuiPaneInfo_actionPane, 2147483648). +% From class wxBitmap::Representation +-define(wxBitmap_Pixmap, 0). +-define(wxBitmap_Pixbuf, 1). +% From class wxChoicebook +-define(wxChoicebook_SetSelection_SendEvent, 1). +% From class wxDateTime::Calendar +-define(wxDateTime_Gregorian, 0). +-define(wxDateTime_Julian, 1). +% From class wxDateTime::Country +-define(wxDateTime_Country_Unknown, 0). +-define(wxDateTime_Country_Default, 1). +-define(wxDateTime_Country_WesternEurope_Start, 2). +-define(wxDateTime_Country_EEC, ?Country_WesternEurope_Start). +-define(wxDateTime_France, (?Country_WesternEurope_Start+1)). +-define(wxDateTime_Germany, (?Country_WesternEurope_Start+2)). +-define(wxDateTime_UK, (?Country_WesternEurope_Start+3)). +-define(wxDateTime_Country_WesternEurope_End, ?UK). +-define(wxDateTime_Russia, (?UK+1)). +-define(wxDateTime_USA, (?UK+2)). +% From class wxDateTime::GregorianAdoption +-define(wxDateTime_Gr_Unknown, 0). +-define(wxDateTime_Gr_Standard, 1). +-define(wxDateTime_Gr_Alaska, 2). +-define(wxDateTime_Gr_Albania, 3). +-define(wxDateTime_Gr_Austria, ?Gr_Unknown). +-define(wxDateTime_Gr_Austria_Brixen, (?Gr_Unknown+1)). +-define(wxDateTime_Gr_Austria_Salzburg, ?Gr_Austria_Brixen). +-define(wxDateTime_Gr_Austria_Tyrol, ?Gr_Austria_Brixen). +-define(wxDateTime_Gr_Austria_Carinthia, (?Gr_Austria_Brixen+1)). +-define(wxDateTime_Gr_Austria_Styria, ?Gr_Austria_Carinthia). +-define(wxDateTime_Gr_Belgium, (?Gr_Austria_Carinthia+1)). +-define(wxDateTime_Gr_Bulgaria, ?Gr_Unknown). +-define(wxDateTime_Gr_Bulgaria_1, (?Gr_Unknown+1)). +-define(wxDateTime_Gr_Bulgaria_2, (?Gr_Unknown+2)). +-define(wxDateTime_Gr_Bulgaria_3, (?Gr_Unknown+3)). +-define(wxDateTime_Gr_Canada, ?Gr_Unknown). +-define(wxDateTime_Gr_China, ?Gr_Unknown). +-define(wxDateTime_Gr_China_1, (?Gr_Unknown+1)). +-define(wxDateTime_Gr_China_2, (?Gr_Unknown+2)). +-define(wxDateTime_Gr_Czechoslovakia, (?Gr_Unknown+3)). +-define(wxDateTime_Gr_Denmark, (?Gr_Unknown+4)). +-define(wxDateTime_Gr_Egypt, (?Gr_Unknown+5)). +-define(wxDateTime_Gr_Estonia, (?Gr_Unknown+6)). +-define(wxDateTime_Gr_Finland, (?Gr_Unknown+7)). +-define(wxDateTime_Gr_France, (?Gr_Unknown+8)). +-define(wxDateTime_Gr_France_Alsace, (?Gr_Unknown+9)). +-define(wxDateTime_Gr_France_Lorraine, (?Gr_Unknown+10)). +-define(wxDateTime_Gr_France_Strasbourg, (?Gr_Unknown+11)). +-define(wxDateTime_Gr_Germany, ?Gr_Unknown). +-define(wxDateTime_Gr_Germany_Catholic, (?Gr_Unknown+1)). +-define(wxDateTime_Gr_Germany_Prussia, (?Gr_Unknown+2)). +-define(wxDateTime_Gr_Germany_Protestant, (?Gr_Unknown+3)). +-define(wxDateTime_Gr_GreatBritain, (?Gr_Unknown+4)). +-define(wxDateTime_Gr_Greece, (?Gr_Unknown+5)). +-define(wxDateTime_Gr_Hungary, (?Gr_Unknown+6)). +-define(wxDateTime_Gr_Ireland, ?Gr_GreatBritain). +-define(wxDateTime_Gr_Italy, ?Gr_Standard). +-define(wxDateTime_Gr_Japan, ?Gr_Unknown). +-define(wxDateTime_Gr_Japan_1, (?Gr_Unknown+1)). +-define(wxDateTime_Gr_Japan_2, (?Gr_Unknown+2)). +-define(wxDateTime_Gr_Japan_3, (?Gr_Unknown+3)). +-define(wxDateTime_Gr_Latvia, (?Gr_Unknown+4)). +-define(wxDateTime_Gr_Lithuania, (?Gr_Unknown+5)). +-define(wxDateTime_Gr_Luxemburg, (?Gr_Unknown+6)). +-define(wxDateTime_Gr_Netherlands, ?Gr_Belgium). +-define(wxDateTime_Gr_Netherlands_Groningen, (?Gr_Belgium+1)). +-define(wxDateTime_Gr_Netherlands_Gelderland, (?Gr_Belgium+2)). +-define(wxDateTime_Gr_Netherlands_Utrecht, (?Gr_Belgium+3)). +-define(wxDateTime_Gr_Netherlands_Friesland, (?Gr_Belgium+4)). +-define(wxDateTime_Gr_Norway, ?Gr_Denmark). +-define(wxDateTime_Gr_Poland, ?Gr_Standard). +-define(wxDateTime_Gr_Portugal, ?Gr_Standard). +-define(wxDateTime_Gr_Romania, (?Gr_Standard+1)). +-define(wxDateTime_Gr_Russia, (?Gr_Standard+2)). +-define(wxDateTime_Gr_Scotland, ?Gr_GreatBritain). +-define(wxDateTime_Gr_Spain, ?Gr_Standard). +-define(wxDateTime_Gr_Sweden, ?Gr_Finland). +-define(wxDateTime_Gr_Switzerland, ?Gr_Unknown). +-define(wxDateTime_Gr_Switzerland_Catholic, (?Gr_Unknown+1)). +-define(wxDateTime_Gr_Switzerland_Protestant, (?Gr_Unknown+2)). +-define(wxDateTime_Gr_Turkey, (?Gr_Unknown+3)). +-define(wxDateTime_Gr_USA, ?Gr_GreatBritain). +-define(wxDateTime_Gr_Wales, ?Gr_GreatBritain). +-define(wxDateTime_Gr_Yugoslavia, (?Gr_GreatBritain+1)). +% From class wxDateTime::Month +-define(wxDateTime_Jan, 0). +-define(wxDateTime_Feb, 1). +-define(wxDateTime_Mar, 2). +-define(wxDateTime_Apr, 3). +-define(wxDateTime_May, 4). +-define(wxDateTime_Jun, 5). +-define(wxDateTime_Jul, 6). +-define(wxDateTime_Aug, 7). +-define(wxDateTime_Sep, 8). +-define(wxDateTime_Oct, 9). +-define(wxDateTime_Nov, 10). +-define(wxDateTime_Dec, 11). +-define(wxDateTime_Inv_Month, 12). +% From class wxDateTime::NameFlags +-define(wxDateTime_Name_Full, 1). +-define(wxDateTime_Name_Abbr, 2). +% From class wxDateTime::TZ +-define(wxDateTime_Local, 0). +-define(wxDateTime_GMT_12, 1). +-define(wxDateTime_GMT_11, 2). +-define(wxDateTime_GMT_10, 3). +-define(wxDateTime_GMT_9, 4). +-define(wxDateTime_GMT_8, 5). +-define(wxDateTime_GMT_7, 6). +-define(wxDateTime_GMT_6, 7). +-define(wxDateTime_GMT_5, 8). +-define(wxDateTime_GMT_4, 9). +-define(wxDateTime_GMT_3, 10). +-define(wxDateTime_GMT_2, 11). +-define(wxDateTime_GMT_1, 12). +-define(wxDateTime_GMT0, 13). +-define(wxDateTime_GMT1, 14). +-define(wxDateTime_GMT2, 15). +-define(wxDateTime_GMT3, 16). +-define(wxDateTime_GMT4, 17). +-define(wxDateTime_GMT5, 18). +-define(wxDateTime_GMT6, 19). +-define(wxDateTime_GMT7, 20). +-define(wxDateTime_GMT8, 21). +-define(wxDateTime_GMT9, 22). +-define(wxDateTime_GMT10, 23). +-define(wxDateTime_GMT11, 24). +-define(wxDateTime_GMT12, 25). +-define(wxDateTime_GMT13, 26). +-define(wxDateTime_WET, ?GMT0). +-define(wxDateTime_WEST, ?GMT1). +-define(wxDateTime_CET, ?GMT1). +-define(wxDateTime_CEST, ?GMT2). +-define(wxDateTime_EET, ?GMT2). +-define(wxDateTime_EEST, ?GMT3). +-define(wxDateTime_MSK, ?GMT3). +-define(wxDateTime_MSD, ?GMT4). +-define(wxDateTime_AST, ?GMT_4). +-define(wxDateTime_ADT, ?GMT_3). +-define(wxDateTime_EST, ?GMT_5). +-define(wxDateTime_EDT, ?GMT_4). +-define(wxDateTime_CST, ?GMT_6). +-define(wxDateTime_CDT, ?GMT_5). +-define(wxDateTime_MST, ?GMT_7). +-define(wxDateTime_MDT, ?GMT_6). +-define(wxDateTime_PST, ?GMT_8). +-define(wxDateTime_PDT, ?GMT_7). +-define(wxDateTime_HST, ?GMT_10). +-define(wxDateTime_AKST, ?GMT_9). +-define(wxDateTime_AKDT, ?GMT_8). +-define(wxDateTime_A_WST, ?GMT8). +-define(wxDateTime_A_CST, ?GMT13+1). +-define(wxDateTime_A_EST, ?GMT10). +-define(wxDateTime_A_ESST, ?GMT11). +-define(wxDateTime_NZST, ?GMT12). +-define(wxDateTime_NZDT, ?GMT13). +-define(wxDateTime_UTC, ?GMT0). +% From class wxDateTime::WeekDay +-define(wxDateTime_Sun, 0). +-define(wxDateTime_Mon, 1). +-define(wxDateTime_Tue, 2). +-define(wxDateTime_Wed, 3). +-define(wxDateTime_Thu, 4). +-define(wxDateTime_Fri, 5). +-define(wxDateTime_Sat, 6). +-define(wxDateTime_Inv_WeekDay, 7). +% From class wxDateTime::WeekFlags +-define(wxDateTime_Default_First, 0). +-define(wxDateTime_Monday_First, 1). +-define(wxDateTime_Sunday_First, 2). +% From class wxDateTime::Year +-define(wxDateTime_Inv_Year, ?SHRT_MIN). +% From class wxDialog +-define(wxDialog_ButtonSizerFlags, (?wxOK bor ?wxCANCEL bor ?wxYES bor ?wxNO bor ?wxHELP bor ?wxNO_DEFAULT)). +% From class wxGrid +-define(wxGrid_wxGRID_CELLCTRL, 2000). +-define(wxGrid_wxGRID_TOPCTRL, 2001). +% From class wxGrid +-define(wxGrid_wxGRID_TEXTCTRL, 2100). +-define(wxGrid_wxGRID_CHECKBOX, 2101). +-define(wxGrid_wxGRID_CHOICE, 2102). +-define(wxGrid_wxGRID_COMBOBOX, 2103). +% From class wxGrid::CursorMode +-define(wxGrid_WXGRID_CURSOR_SELECT_CELL, 0). +-define(wxGrid_WXGRID_CURSOR_RESIZE_ROW, 1). +-define(wxGrid_WXGRID_CURSOR_RESIZE_COL, 2). +-define(wxGrid_WXGRID_CURSOR_SELECT_ROW, 3). +-define(wxGrid_WXGRID_CURSOR_SELECT_COL, 4). +-define(wxGrid_WXGRID_CURSOR_MOVE_COL, 5). +% From class wxGrid::wxGridSelectionModes +-define(wxGrid_wxGridSelectCells, 0). +-define(wxGrid_wxGridSelectRows, 1). +-define(wxGrid_wxGridSelectColumns, 2). +% From class wxGridCellAttr::wxAttrKind +-define(wxGridCellAttr_Any, 0). +-define(wxGridCellAttr_Default, 1). +-define(wxGridCellAttr_Cell, 2). +-define(wxGridCellAttr_Row, 3). +-define(wxGridCellAttr_Col, 4). +-define(wxGridCellAttr_Merged, 5). +% From class wxGridCellAttr::wxAttrOverflowMode +-define(wxGridCellAttr_UnsetOverflow, -1). +-define(wxGridCellAttr_Overflow, 0). +-define(wxGridCellAttr_SingleCell, 1). +% From class wxGridCellAttr::wxAttrReadMode +-define(wxGridCellAttr_Unset, -1). +-define(wxGridCellAttr_ReadWrite, 0). +-define(wxGridCellAttr_ReadOnly, 1). +% From class wxHelpEvent::Origin +-define(wxHelpEvent_Origin_Unknown, 0). +-define(wxHelpEvent_Origin_Keyboard, 1). +-define(wxHelpEvent_Origin_HelpButton, 2). +% From class wxHtmlEasyPrinting::FontMode +-define(wxHtmlEasyPrinting_FontMode_Explicit, 0). +-define(wxHtmlEasyPrinting_FontMode_Standard, 1). +% From class wxHtmlWindow::ClipboardType +-define(wxHtmlWindow_Primary, 0). +-define(wxHtmlWindow_Secondary, 1). +% From class wxListbook +-define(wxListbook_SetSelection_SendEvent, 1). +% From class wxNavigationKeyEvent +-define(wxNavigationKeyEvent_IsBackward, 0). +-define(wxNavigationKeyEvent_IsForward, 1). +-define(wxNavigationKeyEvent_WinChange, 2). +-define(wxNavigationKeyEvent_FromTab, 4). +% From class wxNotebook +-define(wxNotebook_SetSelection_SendEvent, 1). +% From class wxProgressDialog +-define(wxProgressDialog_Uncancelable, -1). +-define(wxProgressDialog_Canceled, 0). +-define(wxProgressDialog_Continue, 1). +-define(wxProgressDialog_Finished, 2). +% From class wxSizerItem +-define(wxSizerItem_Item_None, 0). +-define(wxSizerItem_Item_Window, 1). +-define(wxSizerItem_Item_Sizer, 2). +-define(wxSizerItem_Item_Spacer, 3). +-define(wxSizerItem_Item_Max, 4). +% From class wxTextCtrl +-define(wxTextCtrl_SetValue_SendEvent, 1). +-define(wxTextCtrl_SetValue_SelectionOnly, 2). +% From class wxToolbook +-define(wxToolbook_SetSelection_SendEvent, 1). +% From class wxTreebook +-define(wxTreebook_SetSelection_SendEvent, 1). +% From class wxWindow::MoveKind +-define(wxWindow_MoveBefore, 0). +-define(wxWindow_MoveAfter, 1). +% From class wxWindowGTK::ScrollDir +-define(wxWindowGTK_ScrollDir_Horz, 0). +-define(wxWindowGTK_ScrollDir_Vert, 1). +-define(wxWindowGTK_ScrollDir_Max, 2). +% From class wxWindowGTK::ScrollUnit +-define(wxWindowGTK_ScrollUnit_Line, 0). +-define(wxWindowGTK_ScrollUnit_Page, 1). +-define(wxWindowGTK_ScrollUnit_Max, 2). +% From "accel.h" +-define(wxACCEL_NORMAL, 0). +-define(wxACCEL_ALT, 1). +-define(wxACCEL_CTRL, 2). +-define(wxACCEL_SHIFT, 4). +-define(wxACCEL_CMD, ?wxACCEL_CTRL). +% From "app.h" +-define(wxPRINT_WINDOWS, 1). +-define(wxPRINT_POSTSCRIPT, 2). +% From "auibook.h": wxAuiNotebookOption +-define(wxAUI_NB_TOP, 1). +-define(wxAUI_NB_LEFT, 2). +-define(wxAUI_NB_RIGHT, 4). +-define(wxAUI_NB_BOTTOM, 8). +-define(wxAUI_NB_TAB_SPLIT, 16). +-define(wxAUI_NB_TAB_MOVE, 32). +-define(wxAUI_NB_TAB_EXTERNAL_MOVE, 64). +-define(wxAUI_NB_TAB_FIXED_WIDTH, 128). +-define(wxAUI_NB_SCROLL_BUTTONS, 256). +-define(wxAUI_NB_WINDOWLIST_BUTTON, 512). +-define(wxAUI_NB_CLOSE_BUTTON, 1024). +-define(wxAUI_NB_CLOSE_ON_ACTIVE_TAB, 2048). +-define(wxAUI_NB_CLOSE_ON_ALL_TABS, 4096). +-define(wxAUI_NB_MIDDLE_CLICK_CLOSE, 8192). +-define(wxAUI_NB_DEFAULT_STYLE, (?wxAUI_NB_TOP bor ?wxAUI_NB_TAB_SPLIT bor ?wxAUI_NB_TAB_MOVE bor ?wxAUI_NB_SCROLL_BUTTONS bor ?wxAUI_NB_CLOSE_ON_ACTIVE_TAB bor ?wxAUI_NB_MIDDLE_CLICK_CLOSE)). +% From "bookctrl.h" +-define(wxBK_HITTEST_NOWHERE, 1). +-define(wxBK_HITTEST_ONICON, 2). +-define(wxBK_HITTEST_ONLABEL, 4). +-define(wxBK_HITTEST_ONITEM, (?wxBK_HITTEST_ONICON bor ?wxBK_HITTEST_ONLABEL)). +-define(wxBK_HITTEST_ONPAGE, 8). +% From "bookctrl.h" -define(wxBK_ALIGN_MASK, (?wxBK_TOP bor ?wxBK_BOTTOM bor ?wxBK_LEFT bor ?wxBK_RIGHT)). -define(wxBK_RIGHT, 128). -define(wxBK_LEFT, 64). -define(wxBK_BOTTOM, 32). -define(wxBK_TOP, 16). -define(wxBK_DEFAULT, 0). -% From define::From button.h +% From "bugs.h": wxSashDragStatus +-define(wxSASH_STATUS_OK, 0). +-define(wxSASH_STATUS_OUT_OF_RANGE, 1). +% From "button.h" -define(wxBU_EXACTFIT, 1). -define(wxBU_AUTODRAW, 4). -define(wxBU_NOAUTODRAW, 0). @@ -343,38 +666,258 @@ -define(wxBU_RIGHT, 256). -define(wxBU_TOP, 128). -define(wxBU_LEFT, 64). -% From define::From checkbox.h +% From "calctrl.h" +-define(wxCAL_SUNDAY_FIRST, 0). +-define(wxCAL_MONDAY_FIRST, 1). +-define(wxCAL_SHOW_HOLIDAYS, 2). +-define(wxCAL_NO_YEAR_CHANGE, 4). +-define(wxCAL_NO_MONTH_CHANGE, 12). +-define(wxCAL_SEQUENTIAL_MONTH_SELECTION, 16). +-define(wxCAL_SHOW_SURROUNDING_WEEKS, 32). +% From "calctrl.h": wxCalendarDateBorder +-define(wxCAL_BORDER_NONE, 0). +-define(wxCAL_BORDER_SQUARE, 1). +-define(wxCAL_BORDER_ROUND, 2). +% From "calctrl.h": wxCalendarHitTestResult +-define(wxCAL_HITTEST_NOWHERE, 0). +-define(wxCAL_HITTEST_HEADER, 1). +-define(wxCAL_HITTEST_DAY, 2). +-define(wxCAL_HITTEST_INCMONTH, 3). +-define(wxCAL_HITTEST_DECMONTH, 4). +-define(wxCAL_HITTEST_SURROUNDING_WEEK, 5). +% From "checkbox.h" -define(wxCHK_ALLOW_3RD_STATE_FOR_USER, 8192). -define(wxCHK_3STATE, 4096). -define(wxCHK_2STATE, 0). -% From define::From choicdgg.h +% From "checkbox.h": wxCheckBoxState +-define(wxCHK_UNCHECKED, 0). +-define(wxCHK_CHECKED, 1). +-define(wxCHK_UNDETERMINED, 2). +% From "choicdgg.h" -define(wxCHOICEDLG_STYLE, (?wxDEFAULT_DIALOG_STYLE bor ?wxRESIZE_BORDER bor ?wxOK bor ?wxCANCEL bor ?wxCENTRE)). -define(wxCHOICE_WIDTH, 200). -define(wxCHOICE_HEIGHT, 150). -% From define::From choicebk.h +% From "choicebk.h" -define(wxCHB_ALIGN_MASK, ?wxBK_ALIGN_MASK). -define(wxCHB_RIGHT, ?wxBK_RIGHT). -define(wxCHB_LEFT, ?wxBK_LEFT). -define(wxCHB_BOTTOM, ?wxBK_BOTTOM). -define(wxCHB_TOP, ?wxBK_TOP). -define(wxCHB_DEFAULT, ?wxBK_DEFAULT). -% From define::From clrpicker.h +% From "clntdata.h": wxClientDataType +-define(wxClientData_None, 0). +-define(wxClientData_Object, 1). +-define(wxClientData_Void, 2). +% From "clrpicker.h" -define(wxCLRP_DEFAULT_STYLE, 0). -define(wxCLRP_USE_TEXTCTRL, ?wxPB_USE_TEXTCTRL). -define(wxCLRP_SHOW_LABEL, 8). -% From define::From colour.h +% From "cmndata.h": wxPrintBin +-define(wxPRINTBIN_DEFAULT, 0). +-define(wxPRINTBIN_ONLYONE, 1). +-define(wxPRINTBIN_LOWER, 2). +-define(wxPRINTBIN_MIDDLE, 3). +-define(wxPRINTBIN_MANUAL, 4). +-define(wxPRINTBIN_ENVELOPE, 5). +-define(wxPRINTBIN_ENVMANUAL, 6). +-define(wxPRINTBIN_AUTO, 7). +-define(wxPRINTBIN_TRACTOR, 8). +-define(wxPRINTBIN_SMALLFMT, 9). +-define(wxPRINTBIN_LARGEFMT, 10). +-define(wxPRINTBIN_LARGECAPACITY, 11). +-define(wxPRINTBIN_CASSETTE, 12). +-define(wxPRINTBIN_FORMSOURCE, 13). +-define(wxPRINTBIN_USER, 14). +% From "colour.h" -define(wxC2S_HTML_SYNTAX, 4). -define(wxC2S_CSS_SYNTAX, 2). -define(wxC2S_NAME, 1). -% From define::From confbase.h +% From "confbase.h" -define(wxCONFIG_CASE_SENSITIVE, 0). -% From define::From datetime.h +% From "datectrl.h" +-define(wxDP_DEFAULT, 0). +-define(wxDP_SPIN, 1). +-define(wxDP_DROPDOWN, 2). +-define(wxDP_SHOWCENTURY, 4). +-define(wxDP_ALLOWNONE, 8). +% From "datetime.h" -define(wxInvalidDateTime, ?wxDefaultDateTime). -% From define::From dcbuffer.h +% From "dcbuffer.h" -define(wxBUFFER_CLIENT_AREA, 2). -define(wxBUFFER_VIRTUAL_AREA, 1). --define(wxALWAYS_NATIVE_DOUBLE_BUFFER, 0). -% From define::From defs.h +-define(wxALWAYS_NATIVE_DOUBLE_BUFFER, wxe_util:get_const(wxALWAYS_NATIVE_DOUBLE_BUFFER)). +% From "defs.h" +-define(wxDefaultCoord, -1). +% From "defs.h" +-define(wxID_NONE, -3). +-define(wxID_SEPARATOR, -2). +-define(wxID_ANY, -1). +-define(wxID_LOWEST, 4999). +-define(wxID_OPEN, 5000). +-define(wxID_CLOSE, 5001). +-define(wxID_NEW, 5002). +-define(wxID_SAVE, 5003). +-define(wxID_SAVEAS, 5004). +-define(wxID_REVERT, 5005). +-define(wxID_EXIT, 5006). +-define(wxID_UNDO, 5007). +-define(wxID_REDO, 5008). +-define(wxID_HELP, 5009). +-define(wxID_PRINT, 5010). +-define(wxID_PRINT_SETUP, 5011). +-define(wxID_PAGE_SETUP, 5012). +-define(wxID_PREVIEW, 5013). +-define(wxID_ABOUT, 5014). +-define(wxID_HELP_CONTENTS, 5015). +-define(wxID_HELP_INDEX, 5016). +-define(wxID_HELP_SEARCH, 5017). +-define(wxID_HELP_COMMANDS, 5018). +-define(wxID_HELP_PROCEDURES, 5019). +-define(wxID_HELP_CONTEXT, 5020). +-define(wxID_CLOSE_ALL, 5021). +-define(wxID_PREFERENCES, 5022). +-define(wxID_EDIT, 5030). +-define(wxID_CUT, 5031). +-define(wxID_COPY, 5032). +-define(wxID_PASTE, 5033). +-define(wxID_CLEAR, 5034). +-define(wxID_FIND, 5035). +-define(wxID_DUPLICATE, 5036). +-define(wxID_SELECTALL, 5037). +-define(wxID_DELETE, 5038). +-define(wxID_REPLACE, 5039). +-define(wxID_REPLACE_ALL, 5040). +-define(wxID_PROPERTIES, 5041). +-define(wxID_VIEW_DETAILS, 5042). +-define(wxID_VIEW_LARGEICONS, 5043). +-define(wxID_VIEW_SMALLICONS, 5044). +-define(wxID_VIEW_LIST, 5045). +-define(wxID_VIEW_SORTDATE, 5046). +-define(wxID_VIEW_SORTNAME, 5047). +-define(wxID_VIEW_SORTSIZE, 5048). +-define(wxID_VIEW_SORTTYPE, 5049). +-define(wxID_FILE, 5050). +-define(wxID_FILE1, 5051). +-define(wxID_FILE2, 5052). +-define(wxID_FILE3, 5053). +-define(wxID_FILE4, 5054). +-define(wxID_FILE5, 5055). +-define(wxID_FILE6, 5056). +-define(wxID_FILE7, 5057). +-define(wxID_FILE8, 5058). +-define(wxID_FILE9, 5059). +-define(wxID_OK, 5100). +-define(wxID_CANCEL, 5101). +-define(wxID_APPLY, 5102). +-define(wxID_YES, 5103). +-define(wxID_NO, 5104). +-define(wxID_STATIC, 5105). +-define(wxID_FORWARD, 5106). +-define(wxID_BACKWARD, 5107). +-define(wxID_DEFAULT, 5108). +-define(wxID_MORE, 5109). +-define(wxID_SETUP, 5110). +-define(wxID_RESET, 5111). +-define(wxID_CONTEXT_HELP, 5112). +-define(wxID_YESTOALL, 5113). +-define(wxID_NOTOALL, 5114). +-define(wxID_ABORT, 5115). +-define(wxID_RETRY, 5116). +-define(wxID_IGNORE, 5117). +-define(wxID_ADD, 5118). +-define(wxID_REMOVE, 5119). +-define(wxID_UP, 5120). +-define(wxID_DOWN, 5121). +-define(wxID_HOME, 5122). +-define(wxID_REFRESH, 5123). +-define(wxID_STOP, 5124). +-define(wxID_INDEX, 5125). +-define(wxID_BOLD, 5126). +-define(wxID_ITALIC, 5127). +-define(wxID_JUSTIFY_CENTER, 5128). +-define(wxID_JUSTIFY_FILL, 5129). +-define(wxID_JUSTIFY_RIGHT, 5130). +-define(wxID_JUSTIFY_LEFT, 5131). +-define(wxID_UNDERLINE, 5132). +-define(wxID_INDENT, 5133). +-define(wxID_UNINDENT, 5134). +-define(wxID_ZOOM_100, 5135). +-define(wxID_ZOOM_FIT, 5136). +-define(wxID_ZOOM_IN, 5137). +-define(wxID_ZOOM_OUT, 5138). +-define(wxID_UNDELETE, 5139). +-define(wxID_REVERT_TO_SAVED, 5140). +-define(wxID_SYSTEM_MENU, 5200). +-define(wxID_CLOSE_FRAME, 5201). +-define(wxID_MOVE_FRAME, 5202). +-define(wxID_RESIZE_FRAME, 5203). +-define(wxID_MAXIMIZE_FRAME, 5204). +-define(wxID_ICONIZE_FRAME, 5205). +-define(wxID_RESTORE_FRAME, 5206). +-define(wxID_FILEDLGG, 5900). +-define(wxID_HIGHEST, 5999). +% From "defs.h" +-define(wxDEFAULT, 70). +-define(wxDECORATIVE, 71). +-define(wxROMAN, 72). +-define(wxSCRIPT, 73). +-define(wxSWISS, 74). +-define(wxMODERN, 75). +-define(wxTELETYPE, 76). +-define(wxVARIABLE, 80). +-define(wxFIXED, 81). +-define(wxNORMAL, 90). +-define(wxLIGHT, 91). +-define(wxBOLD, 92). +-define(wxITALIC, 93). +-define(wxSLANT, 94). +-define(wxSOLID, 100). +-define(wxDOT, 101). +-define(wxLONG_DASH, 102). +-define(wxSHORT_DASH, 103). +-define(wxDOT_DASH, 104). +-define(wxUSER_DASH, 105). +-define(wxTRANSPARENT, 106). +-define(wxSTIPPLE_MASK_OPAQUE, 107). +-define(wxSTIPPLE_MASK, 108). +-define(wxSTIPPLE, 110). +-define(wxBDIAGONAL_HATCH, 111). +-define(wxCROSSDIAG_HATCH, 112). +-define(wxFDIAGONAL_HATCH, 113). +-define(wxCROSS_HATCH, 114). +-define(wxHORIZONTAL_HATCH, 115). +-define(wxVERTICAL_HATCH, 116). +-define(wxFIRST_HATCH, ?wxBDIAGONAL_HATCH). +-define(wxLAST_HATCH, ?wxVERTICAL_HATCH). +-define(wxJOIN_BEVEL, 120). +-define(wxJOIN_MITER, 121). +-define(wxJOIN_ROUND, 122). +-define(wxCAP_ROUND, 130). +-define(wxCAP_PROJECTING, 131). +-define(wxCAP_BUTT, 132). +% From "defs.h" +-define(wxFLOOD_SURFACE, 1). +-define(wxFLOOD_BORDER, 2). +% From "defs.h" +-define(wxODDEVEN_RULE, 1). +-define(wxWINDING_RULE, 2). +% From "defs.h" +-define(wxTOOL_TOP, 1). +-define(wxTOOL_BOTTOM, 2). +-define(wxTOOL_LEFT, 3). +-define(wxTOOL_RIGHT, 4). +% From "defs.h" +-define(wxMM_TEXT, 1). +-define(wxMM_LOMETRIC, 2). +-define(wxMM_HIMETRIC, 3). +-define(wxMM_LOENGLISH, 4). +-define(wxMM_HIENGLISH, 5). +-define(wxMM_TWIPS, 6). +-define(wxMM_ISOTROPIC, 7). +-define(wxMM_ANISOTROPIC, 8). +-define(wxMM_POINTS, 9). +-define(wxMM_METRIC, 10). +% From "defs.h" -define(wxPRINT_QUALITY_DRAFT, -4). -define(wxPRINT_QUALITY_LOW, -3). -define(wxPRINT_QUALITY_MEDIUM, -2). @@ -503,21 +1046,499 @@ -define(wxBIG_ENDIAN, 4321). -define(wxHAS_INT64, wxe_util:get_const(wxHAS_INT64)). -define(wxNOT_FOUND, -1). -% From define::From dialog.h +% From "defs.h": form_ops_t +-define(wxCLEAR, 0). +-define(wxROP_BLACK, ?wxCLEAR). +-define(wxBLIT_BLACKNESS, ?wxCLEAR). +-define(wxXOR, (?wxCLEAR+1)). +-define(wxROP_XORPEN, ?wxXOR). +-define(wxBLIT_SRCINVERT, ?wxXOR). +-define(wxINVERT, (?wxXOR+1)). +-define(wxROP_NOT, ?wxINVERT). +-define(wxBLIT_DSTINVERT, ?wxINVERT). +-define(wxOR_REVERSE, (?wxINVERT+1)). +-define(wxROP_MERGEPENNOT, ?wxOR_REVERSE). +-define(wxBLIT_00DD0228, ?wxOR_REVERSE). +-define(wxAND_REVERSE, (?wxOR_REVERSE+1)). +-define(wxROP_MASKPENNOT, ?wxAND_REVERSE). +-define(wxBLIT_SRCERASE, ?wxAND_REVERSE). +-define(wxCOPY, (?wxAND_REVERSE+1)). +-define(wxROP_COPYPEN, ?wxCOPY). +-define(wxBLIT_SRCCOPY, ?wxCOPY). +-define(wxAND, (?wxCOPY+1)). +-define(wxROP_MASKPEN, ?wxAND). +-define(wxBLIT_SRCAND, ?wxAND). +-define(wxAND_INVERT, (?wxAND+1)). +-define(wxROP_MASKNOTPEN, ?wxAND_INVERT). +-define(wxBLIT_00220326, ?wxAND_INVERT). +-define(wxNO_OP, (?wxAND_INVERT+1)). +-define(wxROP_NOP, ?wxNO_OP). +-define(wxBLIT_00AA0029, ?wxNO_OP). +-define(wxNOR, (?wxNO_OP+1)). +-define(wxROP_NOTMERGEPEN, ?wxNOR). +-define(wxBLIT_NOTSRCERASE, ?wxNOR). +-define(wxEQUIV, (?wxNOR+1)). +-define(wxROP_NOTXORPEN, ?wxEQUIV). +-define(wxBLIT_00990066, ?wxEQUIV). +-define(wxSRC_INVERT, (?wxEQUIV+1)). +-define(wxROP_NOTCOPYPEN, ?wxSRC_INVERT). +-define(wxBLIT_NOTSCRCOPY, ?wxSRC_INVERT). +-define(wxOR_INVERT, (?wxSRC_INVERT+1)). +-define(wxROP_MERGENOTPEN, ?wxOR_INVERT). +-define(wxBLIT_MERGEPAINT, ?wxOR_INVERT). +-define(wxNAND, (?wxOR_INVERT+1)). +-define(wxROP_NOTMASKPEN, ?wxNAND). +-define(wxBLIT_007700E6, ?wxNAND). +-define(wxOR, (?wxNAND+1)). +-define(wxROP_MERGEPEN, ?wxOR). +-define(wxBLIT_SRCPAINT, ?wxOR). +-define(wxSET, (?wxOR+1)). +-define(wxROP_WHITE, ?wxSET). +-define(wxBLIT_WHITENESS, ?wxSET). +% From "defs.h": wxAlignment +-define(wxALIGN_NOT, 0). +-define(wxALIGN_CENTER_HORIZONTAL, 256). +-define(wxALIGN_CENTRE_HORIZONTAL, ?wxALIGN_CENTER_HORIZONTAL). +-define(wxALIGN_LEFT, ?wxALIGN_NOT). +-define(wxALIGN_TOP, ?wxALIGN_NOT). +-define(wxALIGN_RIGHT, 512). +-define(wxALIGN_BOTTOM, 1024). +-define(wxALIGN_CENTER_VERTICAL, 2048). +-define(wxALIGN_CENTRE_VERTICAL, ?wxALIGN_CENTER_VERTICAL). +-define(wxALIGN_CENTER, (?wxALIGN_CENTER_HORIZONTAL bor ?wxALIGN_CENTER_VERTICAL)). +-define(wxALIGN_CENTRE, ?wxALIGN_CENTER). +-define(wxALIGN_MASK, 3840). +% From "defs.h": wxBackgroundStyle +-define(wxBG_STYLE_SYSTEM, 0). +-define(wxBG_STYLE_COLOUR, 1). +-define(wxBG_STYLE_CUSTOM, 2). +% From "defs.h": wxBorder +-define(wxBORDER_DEFAULT, 0). +-define(wxBORDER_NONE, 2097152). +-define(wxBORDER_STATIC, 16777216). +-define(wxBORDER_SIMPLE, 33554432). +-define(wxBORDER_RAISED, 67108864). +-define(wxBORDER_SUNKEN, 134217728). +-define(wxBORDER_DOUBLE, 268435456). +-define(wxBORDER_THEME, 268435456). +-define(wxBORDER_MASK, 522190848). +% From "defs.h": wxDataFormatId +-define(wxDF_INVALID, 0). +-define(wxDF_TEXT, 1). +-define(wxDF_BITMAP, 2). +-define(wxDF_METAFILE, 3). +-define(wxDF_SYLK, 4). +-define(wxDF_DIF, 5). +-define(wxDF_TIFF, 6). +-define(wxDF_OEMTEXT, 7). +-define(wxDF_DIB, 8). +-define(wxDF_PALETTE, 9). +-define(wxDF_PENDATA, 10). +-define(wxDF_RIFF, 11). +-define(wxDF_WAVE, 12). +-define(wxDF_UNICODETEXT, 13). +-define(wxDF_ENHMETAFILE, 14). +-define(wxDF_FILENAME, 15). +-define(wxDF_LOCALE, 16). +-define(wxDF_PRIVATE, 20). +-define(wxDF_HTML, 30). +-define(wxDF_MAX, 31). +% From "defs.h": wxDirection +-define(wxLEFT, 16). +-define(wxRIGHT, 32). +-define(wxUP, 64). +-define(wxDOWN, 128). +-define(wxTOP, ?wxUP). +-define(wxBOTTOM, ?wxDOWN). +-define(wxNORTH, ?wxUP). +-define(wxSOUTH, ?wxDOWN). +-define(wxWEST, ?wxLEFT). +-define(wxEAST, ?wxRIGHT). +-define(wxALL, (?wxUP bor ?wxDOWN bor ?wxRIGHT bor ?wxLEFT)). +% From "defs.h": wxDuplexMode +-define(wxDUPLEX_SIMPLEX, 0). +-define(wxDUPLEX_HORIZONTAL, 1). +-define(wxDUPLEX_VERTICAL, 2). +% From "defs.h": wxGeometryCentre +-define(wxCENTRE, 1). +-define(wxCENTER, ?wxCENTRE). +% From "defs.h": wxHitTest +-define(wxHT_NOWHERE, 0). +-define(wxHT_SCROLLBAR_FIRST, ?wxHT_NOWHERE). +-define(wxHT_SCROLLBAR_ARROW_LINE_1, (?wxHT_NOWHERE+1)). +-define(wxHT_SCROLLBAR_ARROW_LINE_2, (?wxHT_NOWHERE+2)). +-define(wxHT_SCROLLBAR_ARROW_PAGE_1, (?wxHT_NOWHERE+3)). +-define(wxHT_SCROLLBAR_ARROW_PAGE_2, (?wxHT_NOWHERE+4)). +-define(wxHT_SCROLLBAR_THUMB, (?wxHT_NOWHERE+5)). +-define(wxHT_SCROLLBAR_BAR_1, (?wxHT_NOWHERE+6)). +-define(wxHT_SCROLLBAR_BAR_2, (?wxHT_NOWHERE+7)). +-define(wxHT_SCROLLBAR_LAST, (?wxHT_NOWHERE+8)). +-define(wxHT_WINDOW_OUTSIDE, (?wxHT_NOWHERE+9)). +-define(wxHT_WINDOW_INSIDE, (?wxHT_NOWHERE+10)). +-define(wxHT_WINDOW_VERT_SCROLLBAR, (?wxHT_NOWHERE+11)). +-define(wxHT_WINDOW_HORZ_SCROLLBAR, (?wxHT_NOWHERE+12)). +-define(wxHT_WINDOW_CORNER, (?wxHT_NOWHERE+13)). +-define(wxHT_MAX, (?wxHT_NOWHERE+14)). +% From "defs.h": wxItemKind +-define(wxITEM_SEPARATOR, -1). +-define(wxITEM_NORMAL, 0). +-define(wxITEM_CHECK, 1). +-define(wxITEM_RADIO, 2). +-define(wxITEM_MAX, 3). +% From "defs.h": wxKeyCode +-define(WXK_BACK, 8). +-define(WXK_TAB, 9). +-define(WXK_RETURN, 13). +-define(WXK_ESCAPE, 27). +-define(WXK_SPACE, 32). +-define(WXK_DELETE, 127). +-define(WXK_START, 300). +-define(WXK_LBUTTON, 301). +-define(WXK_RBUTTON, 302). +-define(WXK_CANCEL, 303). +-define(WXK_MBUTTON, 304). +-define(WXK_CLEAR, 305). +-define(WXK_SHIFT, 306). +-define(WXK_ALT, 307). +-define(WXK_CONTROL, 308). +-define(WXK_MENU, 309). +-define(WXK_PAUSE, 310). +-define(WXK_CAPITAL, 311). +-define(WXK_END, 312). +-define(WXK_HOME, 313). +-define(WXK_LEFT, 314). +-define(WXK_UP, 315). +-define(WXK_RIGHT, 316). +-define(WXK_DOWN, 317). +-define(WXK_SELECT, 318). +-define(WXK_PRINT, 319). +-define(WXK_EXECUTE, 320). +-define(WXK_SNAPSHOT, 321). +-define(WXK_INSERT, 322). +-define(WXK_HELP, 323). +-define(WXK_NUMPAD0, 324). +-define(WXK_NUMPAD1, 325). +-define(WXK_NUMPAD2, 326). +-define(WXK_NUMPAD3, 327). +-define(WXK_NUMPAD4, 328). +-define(WXK_NUMPAD5, 329). +-define(WXK_NUMPAD6, 330). +-define(WXK_NUMPAD7, 331). +-define(WXK_NUMPAD8, 332). +-define(WXK_NUMPAD9, 333). +-define(WXK_MULTIPLY, 334). +-define(WXK_ADD, 335). +-define(WXK_SEPARATOR, 336). +-define(WXK_SUBTRACT, 337). +-define(WXK_DECIMAL, 338). +-define(WXK_DIVIDE, 339). +-define(WXK_F1, 340). +-define(WXK_F2, 341). +-define(WXK_F3, 342). +-define(WXK_F4, 343). +-define(WXK_F5, 344). +-define(WXK_F6, 345). +-define(WXK_F7, 346). +-define(WXK_F8, 347). +-define(WXK_F9, 348). +-define(WXK_F10, 349). +-define(WXK_F11, 350). +-define(WXK_F12, 351). +-define(WXK_F13, 352). +-define(WXK_F14, 353). +-define(WXK_F15, 354). +-define(WXK_F16, 355). +-define(WXK_F17, 356). +-define(WXK_F18, 357). +-define(WXK_F19, 358). +-define(WXK_F20, 359). +-define(WXK_F21, 360). +-define(WXK_F22, 361). +-define(WXK_F23, 362). +-define(WXK_F24, 363). +-define(WXK_NUMLOCK, 364). +-define(WXK_SCROLL, 365). +-define(WXK_PAGEUP, 366). +-define(WXK_PAGEDOWN, 367). +-define(WXK_NUMPAD_SPACE, 368). +-define(WXK_NUMPAD_TAB, 369). +-define(WXK_NUMPAD_ENTER, 370). +-define(WXK_NUMPAD_F1, 371). +-define(WXK_NUMPAD_F2, 372). +-define(WXK_NUMPAD_F3, 373). +-define(WXK_NUMPAD_F4, 374). +-define(WXK_NUMPAD_HOME, 375). +-define(WXK_NUMPAD_LEFT, 376). +-define(WXK_NUMPAD_UP, 377). +-define(WXK_NUMPAD_RIGHT, 378). +-define(WXK_NUMPAD_DOWN, 379). +-define(WXK_NUMPAD_PAGEUP, 380). +-define(WXK_NUMPAD_PAGEDOWN, 381). +-define(WXK_NUMPAD_END, 382). +-define(WXK_NUMPAD_BEGIN, 383). +-define(WXK_NUMPAD_INSERT, 384). +-define(WXK_NUMPAD_DELETE, 385). +-define(WXK_NUMPAD_EQUAL, 386). +-define(WXK_NUMPAD_MULTIPLY, 387). +-define(WXK_NUMPAD_ADD, 388). +-define(WXK_NUMPAD_SEPARATOR, 389). +-define(WXK_NUMPAD_SUBTRACT, 390). +-define(WXK_NUMPAD_DECIMAL, 391). +-define(WXK_NUMPAD_DIVIDE, 392). +-define(WXK_WINDOWS_LEFT, 393). +-define(WXK_WINDOWS_RIGHT, 394). +-define(WXK_WINDOWS_MENU, 395). +-define(WXK_COMMAND, 396). +-define(WXK_SPECIAL1, 193). +-define(WXK_SPECIAL2, 194). +-define(WXK_SPECIAL3, 195). +-define(WXK_SPECIAL4, 196). +-define(WXK_SPECIAL5, 197). +-define(WXK_SPECIAL6, 198). +-define(WXK_SPECIAL7, 199). +-define(WXK_SPECIAL8, 200). +-define(WXK_SPECIAL9, 201). +-define(WXK_SPECIAL10, 202). +-define(WXK_SPECIAL11, 203). +-define(WXK_SPECIAL12, 204). +-define(WXK_SPECIAL13, 205). +-define(WXK_SPECIAL14, 206). +-define(WXK_SPECIAL15, 207). +-define(WXK_SPECIAL16, 208). +-define(WXK_SPECIAL17, 209). +-define(WXK_SPECIAL18, 210). +-define(WXK_SPECIAL19, 211). +-define(WXK_SPECIAL20, 212). +% From "defs.h": wxKeyModifier +-define(wxMOD_NONE, 0). +-define(wxMOD_ALT, 1). +-define(wxMOD_CONTROL, 2). +-define(wxMOD_ALTGR, (?wxMOD_ALT bor ?wxMOD_CONTROL)). +-define(wxMOD_SHIFT, 4). +-define(wxMOD_META, 8). +-define(wxMOD_WIN, ?wxMOD_META). +-define(wxMOD_CMD, wxe_util:get_const(wxMOD_CMD)). +-define(wxMOD_ALL, 65535). +% From "defs.h": wxNotificationOptions +-define(wxNOTIFY_NONE, 0). +-define(wxNOTIFY_ONCE, 1). +-define(wxNOTIFY_REPEAT, 2). +% From "defs.h": wxOrientation +-define(wxHORIZONTAL, 4). +-define(wxVERTICAL, 8). +-define(wxBOTH, (?wxVERTICAL bor ?wxHORIZONTAL)). +% From "defs.h": wxPaperSize +-define(wxPAPER_NONE, 0). +-define(wxPAPER_LETTER, 1). +-define(wxPAPER_LEGAL, 2). +-define(wxPAPER_A4, 3). +-define(wxPAPER_CSHEET, 4). +-define(wxPAPER_DSHEET, 5). +-define(wxPAPER_ESHEET, 6). +-define(wxPAPER_LETTERSMALL, 7). +-define(wxPAPER_TABLOID, 8). +-define(wxPAPER_LEDGER, 9). +-define(wxPAPER_STATEMENT, 10). +-define(wxPAPER_EXECUTIVE, 11). +-define(wxPAPER_A3, 12). +-define(wxPAPER_A4SMALL, 13). +-define(wxPAPER_A5, 14). +-define(wxPAPER_B4, 15). +-define(wxPAPER_B5, 16). +-define(wxPAPER_FOLIO, 17). +-define(wxPAPER_QUARTO, 18). +-define(wxPAPER_10X14, 19). +-define(wxPAPER_11X17, 20). +-define(wxPAPER_NOTE, 21). +-define(wxPAPER_ENV_9, 22). +-define(wxPAPER_ENV_10, 23). +-define(wxPAPER_ENV_11, 24). +-define(wxPAPER_ENV_12, 25). +-define(wxPAPER_ENV_14, 26). +-define(wxPAPER_ENV_DL, 27). +-define(wxPAPER_ENV_C5, 28). +-define(wxPAPER_ENV_C3, 29). +-define(wxPAPER_ENV_C4, 30). +-define(wxPAPER_ENV_C6, 31). +-define(wxPAPER_ENV_C65, 32). +-define(wxPAPER_ENV_B4, 33). +-define(wxPAPER_ENV_B5, 34). +-define(wxPAPER_ENV_B6, 35). +-define(wxPAPER_ENV_ITALY, 36). +-define(wxPAPER_ENV_MONARCH, 37). +-define(wxPAPER_ENV_PERSONAL, 38). +-define(wxPAPER_FANFOLD_US, 39). +-define(wxPAPER_FANFOLD_STD_GERMAN, 40). +-define(wxPAPER_FANFOLD_LGL_GERMAN, 41). +-define(wxPAPER_ISO_B4, 42). +-define(wxPAPER_JAPANESE_POSTCARD, 43). +-define(wxPAPER_9X11, 44). +-define(wxPAPER_10X11, 45). +-define(wxPAPER_15X11, 46). +-define(wxPAPER_ENV_INVITE, 47). +-define(wxPAPER_LETTER_EXTRA, 48). +-define(wxPAPER_LEGAL_EXTRA, 49). +-define(wxPAPER_TABLOID_EXTRA, 50). +-define(wxPAPER_A4_EXTRA, 51). +-define(wxPAPER_LETTER_TRANSVERSE, 52). +-define(wxPAPER_A4_TRANSVERSE, 53). +-define(wxPAPER_LETTER_EXTRA_TRANSVERSE, 54). +-define(wxPAPER_A_PLUS, 55). +-define(wxPAPER_B_PLUS, 56). +-define(wxPAPER_LETTER_PLUS, 57). +-define(wxPAPER_A4_PLUS, 58). +-define(wxPAPER_A5_TRANSVERSE, 59). +-define(wxPAPER_B5_TRANSVERSE, 60). +-define(wxPAPER_A3_EXTRA, 61). +-define(wxPAPER_A5_EXTRA, 62). +-define(wxPAPER_B5_EXTRA, 63). +-define(wxPAPER_A2, 64). +-define(wxPAPER_A3_TRANSVERSE, 65). +-define(wxPAPER_A3_EXTRA_TRANSVERSE, 66). +-define(wxPAPER_DBL_JAPANESE_POSTCARD, 67). +-define(wxPAPER_A6, 68). +-define(wxPAPER_JENV_KAKU2, 69). +-define(wxPAPER_JENV_KAKU3, 70). +-define(wxPAPER_JENV_CHOU3, 71). +-define(wxPAPER_JENV_CHOU4, 72). +-define(wxPAPER_LETTER_ROTATED, 73). +-define(wxPAPER_A3_ROTATED, 74). +-define(wxPAPER_A4_ROTATED, 75). +-define(wxPAPER_A5_ROTATED, 76). +-define(wxPAPER_B4_JIS_ROTATED, 77). +-define(wxPAPER_B5_JIS_ROTATED, 78). +-define(wxPAPER_JAPANESE_POSTCARD_ROTATED, 79). +-define(wxPAPER_DBL_JAPANESE_POSTCARD_ROTATED, 80). +-define(wxPAPER_A6_ROTATED, 81). +-define(wxPAPER_JENV_KAKU2_ROTATED, 82). +-define(wxPAPER_JENV_KAKU3_ROTATED, 83). +-define(wxPAPER_JENV_CHOU3_ROTATED, 84). +-define(wxPAPER_JENV_CHOU4_ROTATED, 85). +-define(wxPAPER_B6_JIS, 86). +-define(wxPAPER_B6_JIS_ROTATED, 87). +-define(wxPAPER_12X11, 88). +-define(wxPAPER_JENV_YOU4, 89). +-define(wxPAPER_JENV_YOU4_ROTATED, 90). +-define(wxPAPER_P16K, 91). +-define(wxPAPER_P32K, 92). +-define(wxPAPER_P32KBIG, 93). +-define(wxPAPER_PENV_1, 94). +-define(wxPAPER_PENV_2, 95). +-define(wxPAPER_PENV_3, 96). +-define(wxPAPER_PENV_4, 97). +-define(wxPAPER_PENV_5, 98). +-define(wxPAPER_PENV_6, 99). +-define(wxPAPER_PENV_7, 100). +-define(wxPAPER_PENV_8, 101). +-define(wxPAPER_PENV_9, 102). +-define(wxPAPER_PENV_10, 103). +-define(wxPAPER_P16K_ROTATED, 104). +-define(wxPAPER_P32K_ROTATED, 105). +-define(wxPAPER_P32KBIG_ROTATED, 106). +-define(wxPAPER_PENV_1_ROTATED, 107). +-define(wxPAPER_PENV_2_ROTATED, 108). +-define(wxPAPER_PENV_3_ROTATED, 109). +-define(wxPAPER_PENV_4_ROTATED, 110). +-define(wxPAPER_PENV_5_ROTATED, 111). +-define(wxPAPER_PENV_6_ROTATED, 112). +-define(wxPAPER_PENV_7_ROTATED, 113). +-define(wxPAPER_PENV_8_ROTATED, 114). +-define(wxPAPER_PENV_9_ROTATED, 115). +-define(wxPAPER_PENV_10_ROTATED, 116). +% From "defs.h": wxPrintMode +-define(wxPRINT_MODE_NONE, 0). +-define(wxPRINT_MODE_PREVIEW, 1). +-define(wxPRINT_MODE_FILE, 2). +-define(wxPRINT_MODE_PRINTER, 3). +-define(wxPRINT_MODE_STREAM, 4). +% From "defs.h": wxStretch +-define(wxSTRETCH_NOT, 0). +-define(wxSHRINK, 4096). +-define(wxGROW, 8192). +-define(wxEXPAND, ?wxGROW). +-define(wxSHAPED, 16384). +-define(wxFIXED_MINSIZE, 32768). +-define(wxRESERVE_SPACE_EVEN_IF_HIDDEN, 2). +-define(wxTILE, 49152). +-define(wxADJUST_MINSIZE, 0). +% From "defs.h": wxUpdateUI +-define(wxUPDATE_UI_NONE, 0). +-define(wxUPDATE_UI_RECURSE, 1). +-define(wxUPDATE_UI_FROMIDLE, 2). +% From "dialog.h" -define(wxDEFAULT_DIALOG_STYLE, (?wxCAPTION bor ?wxSYSTEM_MENU bor ?wxCLOSE_BOX)). -define(wxDIALOG_NO_PARENT, 1). -% From define::From dirctrlg.h +% From "dirctrlg.h" +-define(wxDIRCTRL_DIR_ONLY, 16). +-define(wxDIRCTRL_SELECT_FIRST, 32). +-define(wxDIRCTRL_SHOW_FILTERS, 64). +-define(wxDIRCTRL_3D_INTERNAL, 128). +-define(wxDIRCTRL_EDIT_LABELS, 256). +% From "dirctrlg.h" -define(wxID_FILTERLISTCTRL, 7001). -define(wxID_TREECTRL, 7000). -% From define::From dirdlg.h +% From "dirdlg.h" -define(wxDD_DEFAULT_STYLE, (?wxDEFAULT_DIALOG_STYLE bor ?wxRESIZE_BORDER)). -define(wxDD_NEW_DIR_BUTTON, 0). -define(wxDD_DIR_MUST_EXIST, 512). -define(wxDD_CHANGE_DIR, 256). -% From define::From dirdlgg.h -% From define::From filedlg.h +% From "dirdlgg.h" +% From "dnd.h" +-define(wxDrag_CopyOnly, 0). +-define(wxDrag_AllowMove, 1). +-define(wxDrag_DefaultMove, 3). +% From "dnd.h": wxDragResult +-define(wxDragError, 0). +-define(wxDragNone, 1). +-define(wxDragCopy, 2). +-define(wxDragMove, 3). +-define(wxDragLink, 4). +-define(wxDragCancel, 5). +% From "event.h" +-define(wxMOUSE_BTN_ANY, -1). +-define(wxMOUSE_BTN_NONE, 0). +-define(wxMOUSE_BTN_LEFT, 1). +-define(wxMOUSE_BTN_MIDDLE, 2). +-define(wxMOUSE_BTN_RIGHT, 3). +% From "event.h" +-define(wxJOYSTICK1, 0). +-define(wxJOYSTICK2, 1). +% From "event.h" +-define(wxJOY_BUTTON_ANY, -1). +-define(wxJOY_BUTTON1, 1). +-define(wxJOY_BUTTON2, 2). +-define(wxJOY_BUTTON3, 4). +-define(wxJOY_BUTTON4, 8). +% From "event.h" +% From "event.h": Propagation_state +-define(wxEVENT_PROPAGATE_NONE, 0). +-define(wxEVENT_PROPAGATE_MAX, ?INT_MAX). +% From "event.h": wxIdleMode +-define(wxIDLE_PROCESS_ALL, 0). +-define(wxIDLE_PROCESS_SPECIFIED, 1). +% From "event.h": wxUpdateUIMode +-define(wxUPDATE_UI_PROCESS_ALL, 0). +-define(wxUPDATE_UI_PROCESS_SPECIFIED, 1). +% From "fdrepdlg.h": wxFindReplaceDialogStyles +-define(wxFR_REPLACEDIALOG, 1). +-define(wxFR_NOUPDOWN, 2). +-define(wxFR_NOMATCHCASE, 4). +-define(wxFR_NOWHOLEWORD, 8). +% From "fdrepdlg.h": wxFindReplaceFlags +-define(wxFR_DOWN, 1). +-define(wxFR_WHOLEWORD, 2). +-define(wxFR_MATCHCASE, 4). +% From "filedlg.h" +-define(wxFD_OPEN, 1). +-define(wxFD_SAVE, 2). +-define(wxFD_OVERWRITE_PROMPT, 4). +-define(wxFD_FILE_MUST_EXIST, 16). +-define(wxFD_MULTIPLE, 32). +-define(wxFD_CHANGE_DIR, 128). +-define(wxFD_PREVIEW, 256). +% From "filedlg.h" -define(wxFD_DEFAULT_STYLE, ?wxFD_OPEN). -% From define::From filepicker.h +% From "filepicker.h" -define(wxDIRP_DEFAULT_STYLE, ?wxDIRP_DIR_MUST_EXIST). -define(wxDIRP_USE_TEXTCTRL, ?wxPB_USE_TEXTCTRL). -define(wxFLP_DEFAULT_STYLE, (?wxFLP_OPEN bor ?wxFLP_FILE_MUST_EXIST)). @@ -529,30 +1550,300 @@ -define(wxFLP_OVERWRITE_PROMPT, 4096). -define(wxFLP_SAVE, 2048). -define(wxFLP_OPEN, 1024). -% From define::From fontpicker.h +% From "font.h" +-define(wxFONTFLAG_DEFAULT, 0). +-define(wxFONTFLAG_ITALIC, 1). +-define(wxFONTFLAG_SLANT, 2). +-define(wxFONTFLAG_LIGHT, 4). +-define(wxFONTFLAG_BOLD, 8). +-define(wxFONTFLAG_ANTIALIASED, 16). +-define(wxFONTFLAG_NOT_ANTIALIASED, 32). +-define(wxFONTFLAG_UNDERLINED, 64). +-define(wxFONTFLAG_STRIKETHROUGH, 128). +-define(wxFONTFLAG_MASK, (?wxFONTFLAG_ITALIC bor ?wxFONTFLAG_SLANT bor ?wxFONTFLAG_LIGHT bor ?wxFONTFLAG_BOLD bor ?wxFONTFLAG_ANTIALIASED bor ?wxFONTFLAG_NOT_ANTIALIASED bor ?wxFONTFLAG_UNDERLINED bor ?wxFONTFLAG_STRIKETHROUGH)). +% From "font.h": wxFontFamily +-define(wxFONTFAMILY_DEFAULT, ?wxDEFAULT). +-define(wxFONTFAMILY_DECORATIVE, ?wxDECORATIVE). +-define(wxFONTFAMILY_ROMAN, ?wxROMAN). +-define(wxFONTFAMILY_SCRIPT, ?wxSCRIPT). +-define(wxFONTFAMILY_SWISS, ?wxSWISS). +-define(wxFONTFAMILY_MODERN, ?wxMODERN). +-define(wxFONTFAMILY_TELETYPE, ?wxTELETYPE). +-define(wxFONTFAMILY_MAX, (?wxTELETYPE+1)). +-define(wxFONTFAMILY_UNKNOWN, ?wxFONTFAMILY_MAX). +% From "font.h": wxFontStyle +-define(wxFONTSTYLE_NORMAL, ?wxNORMAL). +-define(wxFONTSTYLE_ITALIC, ?wxITALIC). +-define(wxFONTSTYLE_SLANT, ?wxSLANT). +-define(wxFONTSTYLE_MAX, (?wxSLANT+1)). +% From "font.h": wxFontWeight +-define(wxFONTWEIGHT_NORMAL, ?wxNORMAL). +-define(wxFONTWEIGHT_LIGHT, ?wxLIGHT). +-define(wxFONTWEIGHT_BOLD, ?wxBOLD). +-define(wxFONTWEIGHT_MAX, (?wxBOLD+1)). +% From "fontenc.h": wxFontEncoding +-define(wxFONTENCODING_SYSTEM, -1). +-define(wxFONTENCODING_DEFAULT, 0). +-define(wxFONTENCODING_ISO8859_1, 1). +-define(wxFONTENCODING_ISO8859_2, 2). +-define(wxFONTENCODING_ISO8859_3, 3). +-define(wxFONTENCODING_ISO8859_4, 4). +-define(wxFONTENCODING_ISO8859_5, 5). +-define(wxFONTENCODING_ISO8859_6, 6). +-define(wxFONTENCODING_ISO8859_7, 7). +-define(wxFONTENCODING_ISO8859_8, 8). +-define(wxFONTENCODING_ISO8859_9, 9). +-define(wxFONTENCODING_ISO8859_10, 10). +-define(wxFONTENCODING_ISO8859_11, 11). +-define(wxFONTENCODING_ISO8859_12, 12). +-define(wxFONTENCODING_ISO8859_13, 13). +-define(wxFONTENCODING_ISO8859_14, 14). +-define(wxFONTENCODING_ISO8859_15, 15). +-define(wxFONTENCODING_ISO8859_MAX, 16). +-define(wxFONTENCODING_KOI8, 17). +-define(wxFONTENCODING_KOI8_U, 18). +-define(wxFONTENCODING_ALTERNATIVE, 19). +-define(wxFONTENCODING_BULGARIAN, 20). +-define(wxFONTENCODING_CP437, 21). +-define(wxFONTENCODING_CP850, 22). +-define(wxFONTENCODING_CP852, 23). +-define(wxFONTENCODING_CP855, 24). +-define(wxFONTENCODING_CP866, 25). +-define(wxFONTENCODING_CP874, 26). +-define(wxFONTENCODING_CP932, 27). +-define(wxFONTENCODING_CP936, 28). +-define(wxFONTENCODING_CP949, 29). +-define(wxFONTENCODING_CP950, 30). +-define(wxFONTENCODING_CP1250, 31). +-define(wxFONTENCODING_CP1251, 32). +-define(wxFONTENCODING_CP1252, 33). +-define(wxFONTENCODING_CP1253, 34). +-define(wxFONTENCODING_CP1254, 35). +-define(wxFONTENCODING_CP1255, 36). +-define(wxFONTENCODING_CP1256, 37). +-define(wxFONTENCODING_CP1257, 38). +-define(wxFONTENCODING_CP12_MAX, 39). +-define(wxFONTENCODING_UTF7, 40). +-define(wxFONTENCODING_UTF8, 41). +-define(wxFONTENCODING_EUC_JP, 42). +-define(wxFONTENCODING_UTF16BE, 43). +-define(wxFONTENCODING_UTF16LE, 44). +-define(wxFONTENCODING_UTF32BE, 45). +-define(wxFONTENCODING_UTF32LE, 46). +-define(wxFONTENCODING_MACROMAN, 47). +-define(wxFONTENCODING_MACJAPANESE, 48). +-define(wxFONTENCODING_MACCHINESETRAD, 49). +-define(wxFONTENCODING_MACKOREAN, 50). +-define(wxFONTENCODING_MACARABIC, 51). +-define(wxFONTENCODING_MACHEBREW, 52). +-define(wxFONTENCODING_MACGREEK, 53). +-define(wxFONTENCODING_MACCYRILLIC, 54). +-define(wxFONTENCODING_MACDEVANAGARI, 55). +-define(wxFONTENCODING_MACGURMUKHI, 56). +-define(wxFONTENCODING_MACGUJARATI, 57). +-define(wxFONTENCODING_MACORIYA, 58). +-define(wxFONTENCODING_MACBENGALI, 59). +-define(wxFONTENCODING_MACTAMIL, 60). +-define(wxFONTENCODING_MACTELUGU, 61). +-define(wxFONTENCODING_MACKANNADA, 62). +-define(wxFONTENCODING_MACMALAJALAM, 63). +-define(wxFONTENCODING_MACSINHALESE, 64). +-define(wxFONTENCODING_MACBURMESE, 65). +-define(wxFONTENCODING_MACKHMER, 66). +-define(wxFONTENCODING_MACTHAI, 67). +-define(wxFONTENCODING_MACLAOTIAN, 68). +-define(wxFONTENCODING_MACGEORGIAN, 69). +-define(wxFONTENCODING_MACARMENIAN, 70). +-define(wxFONTENCODING_MACCHINESESIMP, 71). +-define(wxFONTENCODING_MACTIBETAN, 72). +-define(wxFONTENCODING_MACMONGOLIAN, 73). +-define(wxFONTENCODING_MACETHIOPIC, 74). +-define(wxFONTENCODING_MACCENTRALEUR, 75). +-define(wxFONTENCODING_MACVIATNAMESE, 76). +-define(wxFONTENCODING_MACARABICEXT, 77). +-define(wxFONTENCODING_MACSYMBOL, 78). +-define(wxFONTENCODING_MACDINGBATS, 79). +-define(wxFONTENCODING_MACTURKISH, 80). +-define(wxFONTENCODING_MACCROATIAN, 81). +-define(wxFONTENCODING_MACICELANDIC, 82). +-define(wxFONTENCODING_MACROMANIAN, 83). +-define(wxFONTENCODING_MACCELTIC, 84). +-define(wxFONTENCODING_MACGAELIC, 85). +-define(wxFONTENCODING_MACKEYBOARD, 86). +-define(wxFONTENCODING_MAX, 87). +-define(wxFONTENCODING_MACMIN, ?wxFONTENCODING_MACROMAN). +-define(wxFONTENCODING_MACMAX, ?wxFONTENCODING_MACKEYBOARD). +-define(wxFONTENCODING_UTF16, wxe_util:get_const(wxFONTENCODING_UTF16)). +-define(wxFONTENCODING_UTF32, wxe_util:get_const(wxFONTENCODING_UTF32)). +-define(wxFONTENCODING_UNICODE, ?wxFONTENCODING_UTF32). +-define(wxFONTENCODING_GB2312, ?wxFONTENCODING_CP936). +-define(wxFONTENCODING_BIG5, ?wxFONTENCODING_CP950). +-define(wxFONTENCODING_SHIFT_JIS, ?wxFONTENCODING_CP932). +% From "fontpicker.h" -define(wxFNTP_MAXPOINT_SIZE, 100). -define(wxFNTP_DEFAULT_STYLE, (?wxFNTP_FONTDESC_AS_LABEL bor ?wxFNTP_USEFONT_FOR_LABEL)). -define(wxFNTP_USE_TEXTCTRL, ?wxPB_USE_TEXTCTRL). -define(wxFNTP_USEFONT_FOR_LABEL, 16). -define(wxFNTP_FONTDESC_AS_LABEL, 8). -% From define::From frame.h +% From "frame.h" -define(wxFRAME_SHAPED, 16). -define(wxFRAME_FLOAT_ON_PARENT, 8). -define(wxFRAME_TOOL_WINDOW, 4). -define(wxFRAME_NO_TASKBAR, 2). -% From define::From gauge.h --define(wxGAUGE_EMULATE_INDETERMINATE_MODE, 1). +% From "framemanager.h": wxAuiButtonId +-define(wxAUI_BUTTON_CLOSE, 101). +-define(wxAUI_BUTTON_MAXIMIZE_RESTORE, 102). +-define(wxAUI_BUTTON_MINIMIZE, 103). +-define(wxAUI_BUTTON_PIN, 104). +-define(wxAUI_BUTTON_OPTIONS, 105). +-define(wxAUI_BUTTON_WINDOWLIST, 106). +-define(wxAUI_BUTTON_LEFT, 107). +-define(wxAUI_BUTTON_RIGHT, 108). +-define(wxAUI_BUTTON_UP, 109). +-define(wxAUI_BUTTON_DOWN, 110). +-define(wxAUI_BUTTON_CUSTOM1, 201). +-define(wxAUI_BUTTON_CUSTOM2, 202). +-define(wxAUI_BUTTON_CUSTOM3, 203). +% From "framemanager.h": wxAuiManagerDock +-define(wxAUI_DOCK_NONE, 0). +-define(wxAUI_DOCK_TOP, 1). +-define(wxAUI_DOCK_RIGHT, 2). +-define(wxAUI_DOCK_BOTTOM, 3). +-define(wxAUI_DOCK_LEFT, 4). +-define(wxAUI_DOCK_CENTER, 5). +-define(wxAUI_DOCK_CENTRE, ?wxAUI_DOCK_CENTER). +% From "framemanager.h": wxAuiManagerOption +-define(wxAUI_MGR_ALLOW_FLOATING, 1). +-define(wxAUI_MGR_ALLOW_ACTIVE_PANE, 2). +-define(wxAUI_MGR_TRANSPARENT_DRAG, 4). +-define(wxAUI_MGR_TRANSPARENT_HINT, 8). +-define(wxAUI_MGR_VENETIAN_BLINDS_HINT, 16). +-define(wxAUI_MGR_RECTANGLE_HINT, 32). +-define(wxAUI_MGR_HINT_FADE, 64). +-define(wxAUI_MGR_NO_VENETIAN_BLINDS_FADE, 128). +-define(wxAUI_MGR_LIVE_RESIZE, 256). +-define(wxAUI_MGR_DEFAULT, (?wxAUI_MGR_ALLOW_FLOATING bor ?wxAUI_MGR_TRANSPARENT_HINT bor ?wxAUI_MGR_HINT_FADE bor ?wxAUI_MGR_NO_VENETIAN_BLINDS_FADE)). +% From "framemanager.h": wxAuiPaneButtonState +-define(wxAUI_BUTTON_STATE_NORMAL, 0). +-define(wxAUI_BUTTON_STATE_HOVER, 2). +-define(wxAUI_BUTTON_STATE_PRESSED, 4). +-define(wxAUI_BUTTON_STATE_DISABLED, 8). +-define(wxAUI_BUTTON_STATE_HIDDEN, 16). +-define(wxAUI_BUTTON_STATE_CHECKED, 32). +% From "framemanager.h": wxAuiPaneDockArtGradients +-define(wxAUI_GRADIENT_NONE, 0). +-define(wxAUI_GRADIENT_VERTICAL, 1). +-define(wxAUI_GRADIENT_HORIZONTAL, 2). +% From "framemanager.h": wxAuiPaneDockArtSetting +-define(wxAUI_DOCKART_SASH_SIZE, 0). +-define(wxAUI_DOCKART_CAPTION_SIZE, 1). +-define(wxAUI_DOCKART_GRIPPER_SIZE, 2). +-define(wxAUI_DOCKART_PANE_BORDER_SIZE, 3). +-define(wxAUI_DOCKART_PANE_BUTTON_SIZE, 4). +-define(wxAUI_DOCKART_BACKGROUND_COLOUR, 5). +-define(wxAUI_DOCKART_SASH_COLOUR, 6). +-define(wxAUI_DOCKART_ACTIVE_CAPTION_COLOUR, 7). +-define(wxAUI_DOCKART_ACTIVE_CAPTION_GRADIENT_COLOUR, 8). +-define(wxAUI_DOCKART_INACTIVE_CAPTION_COLOUR, 9). +-define(wxAUI_DOCKART_INACTIVE_CAPTION_GRADIENT_COLOUR, 10). +-define(wxAUI_DOCKART_ACTIVE_CAPTION_TEXT_COLOUR, 11). +-define(wxAUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR, 12). +-define(wxAUI_DOCKART_BORDER_COLOUR, 13). +-define(wxAUI_DOCKART_GRIPPER_COLOUR, 14). +-define(wxAUI_DOCKART_CAPTION_FONT, 15). +-define(wxAUI_DOCKART_GRADIENT_TYPE, 16). +% From "framemanager.h": wxAuiPaneInsertLevel +-define(wxAUI_INSERT_PANE, 0). +-define(wxAUI_INSERT_ROW, 1). +-define(wxAUI_INSERT_DOCK, 2). +% From "gauge.h" +-define(wxGAUGE_EMULATE_INDETERMINATE_MODE, wxe_util:get_const(wxGAUGE_EMULATE_INDETERMINATE_MODE)). -define(wxGA_SMOOTH, 32). -define(wxGA_VERTICAL, ?wxVERTICAL). -define(wxGA_HORIZONTAL, ?wxHORIZONTAL). -% From define::From gdicmn.h +% From "gdicmn.h" -define(wxGetDisplayDepth, ?wxDisplayDepth). -% From define::From generic_2laywin.h +% From "gdicmn.h": wxBitmapType +-define(wxBITMAP_TYPE_INVALID, 0). +-define(wxBITMAP_TYPE_BMP, 1). +-define(wxBITMAP_TYPE_BMP_RESOURCE, 2). +-define(wxBITMAP_TYPE_RESOURCE, ?wxBITMAP_TYPE_BMP_RESOURCE). +-define(wxBITMAP_TYPE_ICO, (?wxBITMAP_TYPE_BMP_RESOURCE+1)). +-define(wxBITMAP_TYPE_ICO_RESOURCE, (?wxBITMAP_TYPE_BMP_RESOURCE+2)). +-define(wxBITMAP_TYPE_CUR, (?wxBITMAP_TYPE_BMP_RESOURCE+3)). +-define(wxBITMAP_TYPE_CUR_RESOURCE, (?wxBITMAP_TYPE_BMP_RESOURCE+4)). +-define(wxBITMAP_TYPE_XBM, (?wxBITMAP_TYPE_BMP_RESOURCE+5)). +-define(wxBITMAP_TYPE_XBM_DATA, (?wxBITMAP_TYPE_BMP_RESOURCE+6)). +-define(wxBITMAP_TYPE_XPM, (?wxBITMAP_TYPE_BMP_RESOURCE+7)). +-define(wxBITMAP_TYPE_XPM_DATA, (?wxBITMAP_TYPE_BMP_RESOURCE+8)). +-define(wxBITMAP_TYPE_TIF, (?wxBITMAP_TYPE_BMP_RESOURCE+9)). +-define(wxBITMAP_TYPE_TIF_RESOURCE, (?wxBITMAP_TYPE_BMP_RESOURCE+10)). +-define(wxBITMAP_TYPE_GIF, (?wxBITMAP_TYPE_BMP_RESOURCE+11)). +-define(wxBITMAP_TYPE_GIF_RESOURCE, (?wxBITMAP_TYPE_BMP_RESOURCE+12)). +-define(wxBITMAP_TYPE_PNG, (?wxBITMAP_TYPE_BMP_RESOURCE+13)). +-define(wxBITMAP_TYPE_PNG_RESOURCE, (?wxBITMAP_TYPE_BMP_RESOURCE+14)). +-define(wxBITMAP_TYPE_JPEG, (?wxBITMAP_TYPE_BMP_RESOURCE+15)). +-define(wxBITMAP_TYPE_JPEG_RESOURCE, (?wxBITMAP_TYPE_BMP_RESOURCE+16)). +-define(wxBITMAP_TYPE_PNM, (?wxBITMAP_TYPE_BMP_RESOURCE+17)). +-define(wxBITMAP_TYPE_PNM_RESOURCE, (?wxBITMAP_TYPE_BMP_RESOURCE+18)). +-define(wxBITMAP_TYPE_PCX, (?wxBITMAP_TYPE_BMP_RESOURCE+19)). +-define(wxBITMAP_TYPE_PCX_RESOURCE, (?wxBITMAP_TYPE_BMP_RESOURCE+20)). +-define(wxBITMAP_TYPE_PICT, (?wxBITMAP_TYPE_BMP_RESOURCE+21)). +-define(wxBITMAP_TYPE_PICT_RESOURCE, (?wxBITMAP_TYPE_BMP_RESOURCE+22)). +-define(wxBITMAP_TYPE_ICON, (?wxBITMAP_TYPE_BMP_RESOURCE+23)). +-define(wxBITMAP_TYPE_ICON_RESOURCE, (?wxBITMAP_TYPE_BMP_RESOURCE+24)). +-define(wxBITMAP_TYPE_ANI, (?wxBITMAP_TYPE_BMP_RESOURCE+25)). +-define(wxBITMAP_TYPE_IFF, (?wxBITMAP_TYPE_BMP_RESOURCE+26)). +-define(wxBITMAP_TYPE_TGA, (?wxBITMAP_TYPE_BMP_RESOURCE+27)). +-define(wxBITMAP_TYPE_MACCURSOR, (?wxBITMAP_TYPE_BMP_RESOURCE+28)). +-define(wxBITMAP_TYPE_MACCURSOR_RESOURCE, (?wxBITMAP_TYPE_BMP_RESOURCE+29)). +-define(wxBITMAP_TYPE_ANY, 50). +% From "gdicmn.h": wxStockCursor +-define(wxCURSOR_NONE, 0). +-define(wxCURSOR_ARROW, 1). +-define(wxCURSOR_RIGHT_ARROW, 2). +-define(wxCURSOR_BULLSEYE, 3). +-define(wxCURSOR_CHAR, 4). +-define(wxCURSOR_CROSS, 5). +-define(wxCURSOR_HAND, 6). +-define(wxCURSOR_IBEAM, 7). +-define(wxCURSOR_LEFT_BUTTON, 8). +-define(wxCURSOR_MAGNIFIER, 9). +-define(wxCURSOR_MIDDLE_BUTTON, 10). +-define(wxCURSOR_NO_ENTRY, 11). +-define(wxCURSOR_PAINT_BRUSH, 12). +-define(wxCURSOR_PENCIL, 13). +-define(wxCURSOR_POINT_LEFT, 14). +-define(wxCURSOR_POINT_RIGHT, 15). +-define(wxCURSOR_QUESTION_ARROW, 16). +-define(wxCURSOR_RIGHT_BUTTON, 17). +-define(wxCURSOR_SIZENESW, 18). +-define(wxCURSOR_SIZENS, 19). +-define(wxCURSOR_SIZENWSE, 20). +-define(wxCURSOR_SIZEWE, 21). +-define(wxCURSOR_SIZING, 22). +-define(wxCURSOR_SPRAYCAN, 23). +-define(wxCURSOR_WAIT, 24). +-define(wxCURSOR_WATCH, 25). +-define(wxCURSOR_BLANK, 26). +-define(wxCURSOR_DEFAULT, 27). +-define(wxCURSOR_ARROWWAIT, 28). +-define(wxCURSOR_MAX, 29). +% From "generic_2laywin.h" -define(wxLAYOUT_QUERY, 256). -define(wxLAYOUT_MRU_LENGTH, 16). -define(wxLAYOUT_LENGTH_X, 0). -define(wxLAYOUT_LENGTH_Y, 8). -% From define::From generic_2sashwin.h +% From "generic_2laywin.h": wxLayoutAlignment +-define(wxLAYOUT_NONE, 0). +-define(wxLAYOUT_TOP, 1). +-define(wxLAYOUT_LEFT, 2). +-define(wxLAYOUT_RIGHT, 3). +-define(wxLAYOUT_BOTTOM, 4). +% From "generic_2laywin.h": wxLayoutOrientation +-define(wxLAYOUT_HORIZONTAL, 0). +-define(wxLAYOUT_VERTICAL, 1). +% From "generic_2sashwin.h" -define(wxSW_3D, (?wxSW_3DSASH bor ?wxSW_3DBORDER)). -define(wxSW_3DBORDER, 128). -define(wxSW_3DSASH, 64). @@ -561,27 +1852,137 @@ -define(wxSASH_DRAG_LEFT_DOWN, 2). -define(wxSASH_DRAG_DRAGGING, 1). -define(wxSASH_DRAG_NONE, 0). -% From define::From generic_2splash.h +% From "generic_2sashwin.h": wxSashEdgePosition +-define(wxSASH_TOP, 0). +-define(wxSASH_RIGHT, 1). +-define(wxSASH_BOTTOM, 2). +-define(wxSASH_LEFT, 3). +-define(wxSASH_NONE, 100). +% From "generic_2splash.h" -define(wxSPLASH_NO_TIMEOUT, 0). -define(wxSPLASH_TIMEOUT, 4). -define(wxSPLASH_NO_CENTRE, 0). -define(wxSPLASH_CENTRE_ON_SCREEN, 2). -define(wxSPLASH_CENTRE_ON_PARENT, 1). -% From define::From hash.h +% From "generic_2splitter.h" +-define(wxSPLIT_DRAG_NONE, 0). +-define(wxSPLIT_DRAG_DRAGGING, 1). +-define(wxSPLIT_DRAG_LEFT_DOWN, 2). +% From "generic_2splitter.h": wxSplitMode +-define(wxSPLIT_HORIZONTAL, 1). +-define(wxSPLIT_VERTICAL, 2). +% From "glcanvas.h" +-define(WX_GL_RGBA, 1). +-define(WX_GL_BUFFER_SIZE, 2). +-define(WX_GL_LEVEL, 3). +-define(WX_GL_DOUBLEBUFFER, 4). +-define(WX_GL_STEREO, 5). +-define(WX_GL_AUX_BUFFERS, 6). +-define(WX_GL_MIN_RED, 7). +-define(WX_GL_MIN_GREEN, 8). +-define(WX_GL_MIN_BLUE, 9). +-define(WX_GL_MIN_ALPHA, 10). +-define(WX_GL_DEPTH_SIZE, 11). +-define(WX_GL_STENCIL_SIZE, 12). +-define(WX_GL_MIN_ACCUM_RED, 13). +-define(WX_GL_MIN_ACCUM_GREEN, 14). +-define(WX_GL_MIN_ACCUM_BLUE, 15). +-define(WX_GL_MIN_ACCUM_ALPHA, 16). +% From "hash.h" -define(wxHASH_SIZE_DEFAULT, 1000). -% From define::From htmlwin.h +% From "htmlwin.h" -define(wxHW_DEFAULT_STYLE, ?wxHW_SCROLLBAR_AUTO). -define(wxHW_NO_SELECTION, 8). -define(wxHW_SCROLLBAR_AUTO, 4). -define(wxHW_SCROLLBAR_NEVER, 2). -% From define::From imaglist.h +% From "htmlwin.h": wxHtmlOpeningStatus +-define(wxHTML_OPEN, 0). +-define(wxHTML_BLOCK, 1). +-define(wxHTML_REDIRECT, 2). +% From "htmprint.h" +-define(wxPAGE_ODD, 0). +-define(wxPAGE_EVEN, 1). +-define(wxPAGE_ALL, 2). +% From "imagbmp.h" +-define(wxBMP_24BPP, 24). +-define(wxBMP_8BPP, 8). +-define(wxBMP_8BPP_GREY, 9). +-define(wxBMP_8BPP_GRAY, ?wxBMP_8BPP_GREY). +-define(wxBMP_8BPP_RED, 10). +-define(wxBMP_8BPP_PALETTE, 11). +-define(wxBMP_4BPP, 4). +-define(wxBMP_1BPP, 1). +-define(wxBMP_1BPP_BW, 2). +% From "image.h" +-define(wxIMAGE_RESOLUTION_INCHES, 1). +-define(wxIMAGE_RESOLUTION_CM, 2). +% From "image.h" +-define(wxIMAGE_QUALITY_NORMAL, 0). +-define(wxIMAGE_QUALITY_HIGH, 1). +% From "imaglist.h" +-define(wxIMAGE_LIST_NORMAL, 0). +-define(wxIMAGE_LIST_SMALL, 1). +-define(wxIMAGE_LIST_STATE, 2). +% From "imaglist.h" -define(wxIMAGELIST_DRAW_FOCUSED, 8). -define(wxIMAGELIST_DRAW_SELECTED, 4). -define(wxIMAGELIST_DRAW_TRANSPARENT, 2). -define(wxIMAGELIST_DRAW_NORMAL, 1). -% From define::From layout.h +% From "intl.h": wxLayoutDirection +-define(wxLayout_Default, 0). +-define(wxLayout_LeftToRight, 1). +-define(wxLayout_RightToLeft, 2). +% From "layout.h" -define(wxLAYOUT_DEFAULT_MARGIN, 0). -% From define::From listbase.h +% From "layout.h": wxEdge +-define(wxLeft, 0). +-define(wxTop, 1). +-define(wxRight, 2). +-define(wxBottom, 3). +-define(wxWidth, 4). +-define(wxHeight, 5). +-define(wxCentre, 6). +-define(wxCenter, ?wxCentre). +-define(wxCentreX, (?wxCentre+1)). +-define(wxCentreY, (?wxCentre+2)). +% From "layout.h": wxRelationship +-define(wxUnconstrained, 0). +-define(wxAsIs, 1). +-define(wxPercentOf, 2). +-define(wxAbove, 3). +-define(wxBelow, 4). +-define(wxLeftOf, 5). +-define(wxRightOf, 6). +-define(wxSameAs, 7). +-define(wxAbsolute, 8). +% From "list.h": wxKeyType +-define(wxKEY_NONE, 0). +-define(wxKEY_INTEGER, 1). +-define(wxKEY_STRING, 2). +% From "listbase.h" +-define(wxLIST_NEXT_ABOVE, 0). +-define(wxLIST_NEXT_ALL, 1). +-define(wxLIST_NEXT_BELOW, 2). +-define(wxLIST_NEXT_LEFT, 3). +-define(wxLIST_NEXT_RIGHT, 4). +% From "listbase.h" +-define(wxLIST_ALIGN_DEFAULT, 0). +-define(wxLIST_ALIGN_LEFT, 1). +-define(wxLIST_ALIGN_TOP, 2). +-define(wxLIST_ALIGN_SNAP_TO_GRID, 3). +% From "listbase.h" +-define(wxLIST_AUTOSIZE, -1). +-define(wxLIST_AUTOSIZE_USEHEADER, -2). +% From "listbase.h" +-define(wxLIST_RECT_BOUNDS, 0). +-define(wxLIST_RECT_ICON, 1). +-define(wxLIST_RECT_LABEL, 2). +% From "listbase.h" +-define(wxLIST_FIND_UP, 0). +-define(wxLIST_FIND_DOWN, 1). +-define(wxLIST_FIND_LEFT, 2). +-define(wxLIST_FIND_RIGHT, 3). +% From "listbase.h" -define(wxLIST_HITTEST_ONITEM, (?wxLIST_HITTEST_ONITEMICON bor ?wxLIST_HITTEST_ONITEMLABEL bor ?wxLIST_HITTEST_ONITEMSTATEICON)). -define(wxLIST_HITTEST_TORIGHT, 2048). -define(wxLIST_HITTEST_TOLEFT, 1024). @@ -629,20 +2030,31 @@ -define(wxLC_ICON, 4). -define(wxLC_HRULES, 2). -define(wxLC_VRULES, 1). -% From define::From listbook.h +% From "listbase.h": wxListColumnFormat +-define(wxLIST_FORMAT_LEFT, 0). +-define(wxLIST_FORMAT_RIGHT, 1). +-define(wxLIST_FORMAT_CENTRE, 2). +-define(wxLIST_FORMAT_CENTER, ?wxLIST_FORMAT_CENTRE). +% From "listbook.h" -define(wxLB_ALIGN_MASK, ?wxBK_ALIGN_MASK). -define(wxLB_RIGHT, ?wxBK_RIGHT). -define(wxLB_LEFT, ?wxBK_LEFT). -define(wxLB_BOTTOM, ?wxBK_BOTTOM). -define(wxLB_TOP, ?wxBK_TOP). -define(wxLB_DEFAULT, ?wxBK_DEFAULT). -% From define::From log.h +% From "log.h" -define(wxTRACE_OleCalls, ?wxEmptyString). -define(wxTraceRefCount, 8). -define(wxTraceResAlloc, 4). -define(wxTraceMessages, 2). -define(wxTraceMemAlloc, 1). -% From define::From notebook.h +% From "notebook.h" +-define(wxNB_HITTEST_NOWHERE, ?wxBK_HITTEST_NOWHERE). +-define(wxNB_HITTEST_ONICON, ?wxBK_HITTEST_ONICON). +-define(wxNB_HITTEST_ONLABEL, ?wxBK_HITTEST_ONLABEL). +-define(wxNB_HITTEST_ONITEM, ?wxBK_HITTEST_ONITEM). +-define(wxNB_HITTEST_ONPAGE, ?wxBK_HITTEST_ONPAGE). +% From "notebook.h" -define(wxNB_FLAT, 2048). -define(wxNB_NOPAGETHEME, 1024). -define(wxNB_MULTILINE, 512). @@ -652,9 +2064,9 @@ -define(wxNB_BOTTOM, ?wxBK_BOTTOM). -define(wxNB_TOP, ?wxBK_TOP). -define(wxNB_DEFAULT, ?wxBK_DEFAULT). -% From define::From pickerbase.h +% From "pickerbase.h" -define(wxPB_USE_TEXTCTRL, 2). -% From define::From prntbase.h +% From "prntbase.h" -define(wxID_PREVIEW_GOTO, 8). -define(wxID_PREVIEW_LAST, 7). -define(wxID_PREVIEW_FIRST, 6). @@ -671,7 +2083,11 @@ -define(wxPREVIEW_NEXT, 4). -define(wxPREVIEW_PREVIOUS, 2). -define(wxPREVIEW_PRINT, 1). -% From define::From progdlg.h +% From "prntbase.h": wxPrinterError +-define(wxPRINTER_NO_ERROR, 0). +-define(wxPRINTER_CANCELLED, 1). +-define(wxPRINTER_ERROR, 2). +% From "progdlg.h" -define(wxPD_CAN_SKIP, 128). -define(wxPD_REMAINING_TIME, 64). -define(wxPD_SMOOTH, 32). @@ -680,9 +2096,121 @@ -define(wxPD_AUTO_HIDE, 4). -define(wxPD_APP_MODAL, 2). -define(wxPD_CAN_ABORT, 1). -% From define::From scrolwin.h +% From "region.h": wxRegionContain +-define(wxOutRegion, 0). +-define(wxPartRegion, 1). +-define(wxInRegion, 2). +% From "region.h": wxRegionOp +-define(wxRGN_AND, 0). +-define(wxRGN_COPY, 1). +-define(wxRGN_DIFF, 2). +-define(wxRGN_OR, 3). +-define(wxRGN_XOR, 4). +% From "scrolwin.h" -define(wxScrolledWindowStyle, (?wxHSCROLL bor ?wxVSCROLL)). -% From define::From slider.h +% From "settings.h": wxSystemColour +-define(wxSYS_COLOUR_SCROLLBAR, 0). +-define(wxSYS_COLOUR_BACKGROUND, 1). +-define(wxSYS_COLOUR_DESKTOP, ?wxSYS_COLOUR_BACKGROUND). +-define(wxSYS_COLOUR_ACTIVECAPTION, (?wxSYS_COLOUR_BACKGROUND+1)). +-define(wxSYS_COLOUR_INACTIVECAPTION, (?wxSYS_COLOUR_BACKGROUND+2)). +-define(wxSYS_COLOUR_MENU, (?wxSYS_COLOUR_BACKGROUND+3)). +-define(wxSYS_COLOUR_WINDOW, (?wxSYS_COLOUR_BACKGROUND+4)). +-define(wxSYS_COLOUR_WINDOWFRAME, (?wxSYS_COLOUR_BACKGROUND+5)). +-define(wxSYS_COLOUR_MENUTEXT, (?wxSYS_COLOUR_BACKGROUND+6)). +-define(wxSYS_COLOUR_WINDOWTEXT, (?wxSYS_COLOUR_BACKGROUND+7)). +-define(wxSYS_COLOUR_CAPTIONTEXT, (?wxSYS_COLOUR_BACKGROUND+8)). +-define(wxSYS_COLOUR_ACTIVEBORDER, (?wxSYS_COLOUR_BACKGROUND+9)). +-define(wxSYS_COLOUR_INACTIVEBORDER, (?wxSYS_COLOUR_BACKGROUND+10)). +-define(wxSYS_COLOUR_APPWORKSPACE, (?wxSYS_COLOUR_BACKGROUND+11)). +-define(wxSYS_COLOUR_HIGHLIGHT, (?wxSYS_COLOUR_BACKGROUND+12)). +-define(wxSYS_COLOUR_HIGHLIGHTTEXT, (?wxSYS_COLOUR_BACKGROUND+13)). +-define(wxSYS_COLOUR_BTNFACE, (?wxSYS_COLOUR_BACKGROUND+14)). +-define(wxSYS_COLOUR_3DFACE, ?wxSYS_COLOUR_BTNFACE). +-define(wxSYS_COLOUR_BTNSHADOW, (?wxSYS_COLOUR_BTNFACE+1)). +-define(wxSYS_COLOUR_3DSHADOW, ?wxSYS_COLOUR_BTNSHADOW). +-define(wxSYS_COLOUR_GRAYTEXT, (?wxSYS_COLOUR_BTNSHADOW+1)). +-define(wxSYS_COLOUR_BTNTEXT, (?wxSYS_COLOUR_BTNSHADOW+2)). +-define(wxSYS_COLOUR_INACTIVECAPTIONTEXT, (?wxSYS_COLOUR_BTNSHADOW+3)). +-define(wxSYS_COLOUR_BTNHIGHLIGHT, (?wxSYS_COLOUR_BTNSHADOW+4)). +-define(wxSYS_COLOUR_BTNHILIGHT, ?wxSYS_COLOUR_BTNHIGHLIGHT). +-define(wxSYS_COLOUR_3DHIGHLIGHT, ?wxSYS_COLOUR_BTNHIGHLIGHT). +-define(wxSYS_COLOUR_3DHILIGHT, ?wxSYS_COLOUR_BTNHIGHLIGHT). +-define(wxSYS_COLOUR_3DDKSHADOW, (?wxSYS_COLOUR_BTNHIGHLIGHT+1)). +-define(wxSYS_COLOUR_3DLIGHT, (?wxSYS_COLOUR_BTNHIGHLIGHT+2)). +-define(wxSYS_COLOUR_INFOTEXT, (?wxSYS_COLOUR_BTNHIGHLIGHT+3)). +-define(wxSYS_COLOUR_INFOBK, (?wxSYS_COLOUR_BTNHIGHLIGHT+4)). +-define(wxSYS_COLOUR_LISTBOX, (?wxSYS_COLOUR_BTNHIGHLIGHT+5)). +-define(wxSYS_COLOUR_HOTLIGHT, (?wxSYS_COLOUR_BTNHIGHLIGHT+6)). +-define(wxSYS_COLOUR_GRADIENTACTIVECAPTION, (?wxSYS_COLOUR_BTNHIGHLIGHT+7)). +-define(wxSYS_COLOUR_GRADIENTINACTIVECAPTION, (?wxSYS_COLOUR_BTNHIGHLIGHT+8)). +-define(wxSYS_COLOUR_MENUHILIGHT, (?wxSYS_COLOUR_BTNHIGHLIGHT+9)). +-define(wxSYS_COLOUR_MENUBAR, (?wxSYS_COLOUR_BTNHIGHLIGHT+10)). +-define(wxSYS_COLOUR_LISTBOXTEXT, (?wxSYS_COLOUR_BTNHIGHLIGHT+11)). +-define(wxSYS_COLOUR_MAX, (?wxSYS_COLOUR_BTNHIGHLIGHT+12)). +% From "settings.h": wxSystemFeature +-define(wxSYS_CAN_DRAW_FRAME_DECORATIONS, 1). +-define(wxSYS_CAN_ICONIZE_FRAME, 2). +-define(wxSYS_TABLET_PRESENT, 3). +% From "settings.h": wxSystemFont +-define(wxSYS_OEM_FIXED_FONT, 10). +-define(wxSYS_ANSI_FIXED_FONT, 11). +-define(wxSYS_ANSI_VAR_FONT, 12). +-define(wxSYS_SYSTEM_FONT, 13). +-define(wxSYS_DEVICE_DEFAULT_FONT, 14). +-define(wxSYS_DEFAULT_PALETTE, 15). +-define(wxSYS_SYSTEM_FIXED_FONT, 16). +-define(wxSYS_DEFAULT_GUI_FONT, 17). +-define(wxSYS_ICONTITLE_FONT, ?wxSYS_DEFAULT_GUI_FONT). +% From "settings.h": wxSystemMetric +-define(wxSYS_MOUSE_BUTTONS, 1). +-define(wxSYS_BORDER_X, 2). +-define(wxSYS_BORDER_Y, 3). +-define(wxSYS_CURSOR_X, 4). +-define(wxSYS_CURSOR_Y, 5). +-define(wxSYS_DCLICK_X, 6). +-define(wxSYS_DCLICK_Y, 7). +-define(wxSYS_DRAG_X, 8). +-define(wxSYS_DRAG_Y, 9). +-define(wxSYS_EDGE_X, 10). +-define(wxSYS_EDGE_Y, 11). +-define(wxSYS_HSCROLL_ARROW_X, 12). +-define(wxSYS_HSCROLL_ARROW_Y, 13). +-define(wxSYS_HTHUMB_X, 14). +-define(wxSYS_ICON_X, 15). +-define(wxSYS_ICON_Y, 16). +-define(wxSYS_ICONSPACING_X, 17). +-define(wxSYS_ICONSPACING_Y, 18). +-define(wxSYS_WINDOWMIN_X, 19). +-define(wxSYS_WINDOWMIN_Y, 20). +-define(wxSYS_SCREEN_X, 21). +-define(wxSYS_SCREEN_Y, 22). +-define(wxSYS_FRAMESIZE_X, 23). +-define(wxSYS_FRAMESIZE_Y, 24). +-define(wxSYS_SMALLICON_X, 25). +-define(wxSYS_SMALLICON_Y, 26). +-define(wxSYS_HSCROLL_Y, 27). +-define(wxSYS_VSCROLL_X, 28). +-define(wxSYS_VSCROLL_ARROW_X, 29). +-define(wxSYS_VSCROLL_ARROW_Y, 30). +-define(wxSYS_VTHUMB_Y, 31). +-define(wxSYS_CAPTION_Y, 32). +-define(wxSYS_MENU_Y, 33). +-define(wxSYS_NETWORK_PRESENT, 34). +-define(wxSYS_PENWINDOWS_PRESENT, 35). +-define(wxSYS_SHOW_SOUNDS, 36). +-define(wxSYS_SWAP_BUTTONS, 37). +% From "settings.h": wxSystemScreenType +-define(wxSYS_SCREEN_NONE, 0). +-define(wxSYS_SCREEN_TINY, 1). +-define(wxSYS_SCREEN_PDA, 2). +-define(wxSYS_SCREEN_SMALL, 3). +-define(wxSYS_SCREEN_DESKTOP, 4). +% From "sizer.h": wxFlexSizerGrowMode +-define(wxFLEX_GROWMODE_NONE, 0). +-define(wxFLEX_GROWMODE_SPECIFIED, 1). +-define(wxFLEX_GROWMODE_ALL, 2). +% From "slider.h" -define(wxSL_INVERSE, 4096). -define(wxSL_SELRANGE, 2048). -define(wxSL_BOTH, 1024). @@ -695,7 +2223,7 @@ -define(wxSL_TICKS, 16). -define(wxSL_VERTICAL, ?wxVERTICAL). -define(wxSL_HORIZONTAL, ?wxHORIZONTAL). -% From define::From splitter.h +% From "splitter.h" -define(wxSP_3D, (?wxSP_3DBORDER bor ?wxSP_3DSASH)). -define(wxSP_BORDER, ?wxSP_3DBORDER). -define(wxSP_NO_XP_THEME, 1024). @@ -705,11 +2233,11 @@ -define(wxSP_PERMIT_UNSPLIT, 64). -define(wxSP_NOSASH, 16). -define(wxSP_NOBORDER, 0). -% From define::From statusbr.h +% From "statusbr.h" -define(wxSB_RAISED, 2). -define(wxSB_FLAT, 1). -define(wxSB_NORMAL, 0). -% From define::From stc.h +% From "stc.h" -define(wxSTC_CMD_WORDRIGHTENDEXTEND, 2442). -define(wxSTC_CMD_WORDRIGHTEND, 2441). -define(wxSTC_CMD_WORDLEFTENDEXTEND, 2440). @@ -2045,7 +3573,11 @@ -define(wxSTC_START, 2000). -define(wxSTC_INVALID_POSITION, -1). -define(wxSTC_USE_POPUP, 1). -% From define::From textctrl.h +% From "tbarbase.h": wxToolBarToolStyle +-define(wxTOOL_STYLE_BUTTON, 1). +-define(wxTOOL_STYLE_SEPARATOR, 2). +-define(wxTOOL_STYLE_CONTROL, 3). +% From "textctrl.h" -define(wxTEXT_ATTR_TABS, 1024). -define(wxTEXT_ATTR_RIGHT_INDENT, 512). -define(wxTEXT_ATTR_LEFT_INDENT, 256). @@ -2080,11 +3612,51 @@ -define(wxTE_AUTO_SCROLL, 8). -define(wxTE_NO_VSCROLL, 2). -define(wxHAS_TEXT_WINDOW_STREAM, 0). -% From define::From textdlgg.h +% From "textctrl.h": wxTextAttrAlignment +-define(wxTEXT_ALIGNMENT_DEFAULT, 0). +-define(wxTEXT_ALIGNMENT_LEFT, 1). +-define(wxTEXT_ALIGNMENT_CENTRE, 2). +-define(wxTEXT_ALIGNMENT_CENTER, ?wxTEXT_ALIGNMENT_CENTRE). +-define(wxTEXT_ALIGNMENT_RIGHT, (?wxTEXT_ALIGNMENT_CENTRE+1)). +-define(wxTEXT_ALIGNMENT_JUSTIFIED, (?wxTEXT_ALIGNMENT_CENTRE+2)). +% From "textctrl.h": wxTextCtrlHitTestResult +-define(wxTE_HT_UNKNOWN, -2). +-define(wxTE_HT_BEFORE, -1). +-define(wxTE_HT_ON_TEXT, 0). +-define(wxTE_HT_BELOW, 1). +-define(wxTE_HT_BEYOND, 2). +% From "textdlgg.h" -define(wxTextEntryDialogStyle, (?wxOK bor ?wxCANCEL bor ?wxCENTRE bor ?wxWS_EX_VALIDATE_RECURSIVELY)). -% From define::From toolbook.h +% From "toolbar.h" +-define(wxTB_HORIZONTAL, ?wxHORIZONTAL). +-define(wxTB_TOP, ?wxTB_HORIZONTAL). +-define(wxTB_VERTICAL, ?wxVERTICAL). +-define(wxTB_LEFT, ?wxTB_VERTICAL). +-define(wxTB_3DBUTTONS, 16). +-define(wxTB_FLAT, 32). +-define(wxTB_DOCKABLE, 64). +-define(wxTB_NOICONS, 128). +-define(wxTB_TEXT, 256). +-define(wxTB_NODIVIDER, 512). +-define(wxTB_NOALIGN, 1024). +-define(wxTB_HORZ_LAYOUT, 2048). +-define(wxTB_HORZ_TEXT, (?wxTB_HORZ_LAYOUT bor ?wxTB_TEXT)). +-define(wxTB_NO_TOOLTIPS, 4096). +-define(wxTB_BOTTOM, 8192). +-define(wxTB_RIGHT, 16384). +% From "toolbook.h" -define(wxBK_BUTTONBAR, 256). -% From define::From toplevel.h +% From "toplevel.h" +-define(wxFULLSCREEN_NOMENUBAR, 1). +-define(wxFULLSCREEN_NOTOOLBAR, 2). +-define(wxFULLSCREEN_NOSTATUSBAR, 4). +-define(wxFULLSCREEN_NOBORDER, 8). +-define(wxFULLSCREEN_NOCAPTION, 16). +-define(wxFULLSCREEN_ALL, (?wxFULLSCREEN_NOMENUBAR bor ?wxFULLSCREEN_NOTOOLBAR bor ?wxFULLSCREEN_NOSTATUSBAR bor ?wxFULLSCREEN_NOBORDER bor ?wxFULLSCREEN_NOCAPTION)). +% From "toplevel.h" +-define(wxUSER_ATTENTION_INFO, 1). +-define(wxUSER_ATTENTION_ERROR, 2). +% From "toplevel.h" -define(wxTOPLEVEL_EX_DIALOG, 8). -define(wxDEFAULT_FRAME_STYLE, (?wxSYSTEM_MENU bor ?wxRESIZE_BORDER bor ?wxMINIMIZE_BOX bor ?wxMAXIMIZE_BOX bor ?wxCLOSE_BOX bor ?wxCAPTION bor ?wxCLIP_CHILDREN)). -define(wxRESIZE_BORDER, 64). @@ -2098,8 +3670,8 @@ -define(wxMINIMIZE, ?wxICONIZE). -define(wxICONIZE, 16384). -define(wxSTAY_ON_TOP, 32768). -% From define::From treebase.h --define(wxTR_DEFAULT_STYLE, (?wxTR_HAS_BUTTONS bor ?wxTR_LINES_AT_ROOT)). +% From "treebase.h" +-define(wxTR_DEFAULT_STYLE, wxe_util:get_const(wxTR_DEFAULT_STYLE)). -define(wxTR_FULL_ROW_HIGHLIGHT, 8192). -define(wxTR_HIDE_ROOT, 2048). -define(wxTR_ROW_LINES, 1024). @@ -2113,1416 +3685,37 @@ -define(wxTR_NO_LINES, 4). -define(wxTR_HAS_BUTTONS, 1). -define(wxTR_NO_BUTTONS, 0). -% From define::From valtext.h --define(wxFILTER_EXCLUDE_CHAR_LIST, 128). --define(wxFILTER_INCLUDE_CHAR_LIST, 64). --define(wxFILTER_EXCLUDE_LIST, 32). --define(wxFILTER_INCLUDE_LIST, 16). --define(wxFILTER_NUMERIC, 8). --define(wxFILTER_ALPHANUMERIC, 4). --define(wxFILTER_ALPHA, 2). --define(wxFILTER_ASCII, 1). --define(wxFILTER_NONE, 0). -% From define::From version.h --define(wxBETA_NUMBER, wxe_util:get_const(wxBETA_NUMBER)). --define(wxSUBRELEASE_NUMBER, wxe_util:get_const(wxSUBRELEASE_NUMBER)). --define(wxRELEASE_NUMBER, wxe_util:get_const(wxRELEASE_NUMBER)). --define(wxMINOR_VERSION, wxe_util:get_const(wxMINOR_VERSION)). --define(wxMAJOR_VERSION, wxe_util:get_const(wxMAJOR_VERSION)). -% From class wxAuiManager --define(wxAuiManager_actionNone, 0). --define(wxAuiManager_actionResize, 1). --define(wxAuiManager_actionClickButton, 2). --define(wxAuiManager_actionClickCaption, 3). --define(wxAuiManager_actionDragToolbarPane, 4). --define(wxAuiManager_actionDragFloatingPane, 5). -% From wxAuiPaneInfo::wxAuiPaneState --define(wxAuiPaneInfo_optionFloating, 1). --define(wxAuiPaneInfo_optionHidden, 2). --define(wxAuiPaneInfo_optionLeftDockable, 4). --define(wxAuiPaneInfo_optionRightDockable, 8). --define(wxAuiPaneInfo_optionTopDockable, 16). --define(wxAuiPaneInfo_optionBottomDockable, 32). --define(wxAuiPaneInfo_optionFloatable, 64). --define(wxAuiPaneInfo_optionMovable, 128). --define(wxAuiPaneInfo_optionResizable, 256). --define(wxAuiPaneInfo_optionPaneBorder, 512). --define(wxAuiPaneInfo_optionCaption, 1024). --define(wxAuiPaneInfo_optionGripper, 2048). --define(wxAuiPaneInfo_optionDestroyOnClose, 4096). --define(wxAuiPaneInfo_optionToolbar, 8192). --define(wxAuiPaneInfo_optionActive, 16384). --define(wxAuiPaneInfo_optionGripperTop, 32768). --define(wxAuiPaneInfo_optionMaximized, 65536). --define(wxAuiPaneInfo_optionDockFixed, 131072). --define(wxAuiPaneInfo_buttonClose, 2097152). --define(wxAuiPaneInfo_buttonMaximize, 4194304). --define(wxAuiPaneInfo_buttonMinimize, 8388608). --define(wxAuiPaneInfo_buttonPin, 16777216). --define(wxAuiPaneInfo_buttonCustom1, 67108864). --define(wxAuiPaneInfo_buttonCustom2, 134217728). --define(wxAuiPaneInfo_buttonCustom3, 268435456). --define(wxAuiPaneInfo_savedHiddenState, 1073741824). --define(wxAuiPaneInfo_actionPane, 2147483648). -% From wxBitmap::Representation --define(wxBitmap_Pixmap, 0). --define(wxBitmap_Pixbuf, 1). -% From class wxChoicebook --define(wxChoicebook_SetSelection_SendEvent, 1). -% From wxDateTime::Calendar --define(wxDateTime_Gregorian, 0). --define(wxDateTime_Julian, 1). -% From wxDateTime::Country --define(wxDateTime_Country_Unknown, 0). --define(wxDateTime_Country_Default, 1). --define(wxDateTime_Country_WesternEurope_Start, 2). --define(wxDateTime_Country_EEC, ?Country_WesternEurope_Start). --define(wxDateTime_France, (?Country_WesternEurope_Start+1)). --define(wxDateTime_Germany, (?Country_WesternEurope_Start+2)). --define(wxDateTime_UK, (?Country_WesternEurope_Start+3)). --define(wxDateTime_Country_WesternEurope_End, ?UK). --define(wxDateTime_Russia, (?UK+1)). --define(wxDateTime_USA, (?UK+2)). -% From wxDateTime::GregorianAdoption --define(wxDateTime_Gr_Unknown, 0). --define(wxDateTime_Gr_Standard, 1). --define(wxDateTime_Gr_Alaska, 2). --define(wxDateTime_Gr_Albania, 3). --define(wxDateTime_Gr_Austria, ?Gr_Unknown). --define(wxDateTime_Gr_Austria_Brixen, (?Gr_Unknown+1)). --define(wxDateTime_Gr_Austria_Salzburg, ?Gr_Austria_Brixen). --define(wxDateTime_Gr_Austria_Tyrol, ?Gr_Austria_Brixen). --define(wxDateTime_Gr_Austria_Carinthia, (?Gr_Austria_Brixen+1)). --define(wxDateTime_Gr_Austria_Styria, ?Gr_Austria_Carinthia). --define(wxDateTime_Gr_Belgium, (?Gr_Austria_Carinthia+1)). --define(wxDateTime_Gr_Bulgaria, ?Gr_Unknown). --define(wxDateTime_Gr_Bulgaria_1, (?Gr_Unknown+1)). --define(wxDateTime_Gr_Bulgaria_2, (?Gr_Unknown+2)). --define(wxDateTime_Gr_Bulgaria_3, (?Gr_Unknown+3)). --define(wxDateTime_Gr_Canada, ?Gr_Unknown). --define(wxDateTime_Gr_China, ?Gr_Unknown). --define(wxDateTime_Gr_China_1, (?Gr_Unknown+1)). --define(wxDateTime_Gr_China_2, (?Gr_Unknown+2)). --define(wxDateTime_Gr_Czechoslovakia, (?Gr_Unknown+3)). --define(wxDateTime_Gr_Denmark, (?Gr_Unknown+4)). --define(wxDateTime_Gr_Egypt, (?Gr_Unknown+5)). --define(wxDateTime_Gr_Estonia, (?Gr_Unknown+6)). --define(wxDateTime_Gr_Finland, (?Gr_Unknown+7)). --define(wxDateTime_Gr_France, (?Gr_Unknown+8)). --define(wxDateTime_Gr_France_Alsace, (?Gr_Unknown+9)). --define(wxDateTime_Gr_France_Lorraine, (?Gr_Unknown+10)). --define(wxDateTime_Gr_France_Strasbourg, (?Gr_Unknown+11)). --define(wxDateTime_Gr_Germany, ?Gr_Unknown). --define(wxDateTime_Gr_Germany_Catholic, (?Gr_Unknown+1)). --define(wxDateTime_Gr_Germany_Prussia, (?Gr_Unknown+2)). --define(wxDateTime_Gr_Germany_Protestant, (?Gr_Unknown+3)). --define(wxDateTime_Gr_GreatBritain, (?Gr_Unknown+4)). --define(wxDateTime_Gr_Greece, (?Gr_Unknown+5)). --define(wxDateTime_Gr_Hungary, (?Gr_Unknown+6)). --define(wxDateTime_Gr_Ireland, ?Gr_GreatBritain). --define(wxDateTime_Gr_Italy, ?Gr_Standard). --define(wxDateTime_Gr_Japan, ?Gr_Unknown). --define(wxDateTime_Gr_Japan_1, (?Gr_Unknown+1)). --define(wxDateTime_Gr_Japan_2, (?Gr_Unknown+2)). --define(wxDateTime_Gr_Japan_3, (?Gr_Unknown+3)). --define(wxDateTime_Gr_Latvia, (?Gr_Unknown+4)). --define(wxDateTime_Gr_Lithuania, (?Gr_Unknown+5)). --define(wxDateTime_Gr_Luxemburg, (?Gr_Unknown+6)). --define(wxDateTime_Gr_Netherlands, ?Gr_Belgium). --define(wxDateTime_Gr_Netherlands_Groningen, (?Gr_Belgium+1)). --define(wxDateTime_Gr_Netherlands_Gelderland, (?Gr_Belgium+2)). --define(wxDateTime_Gr_Netherlands_Utrecht, (?Gr_Belgium+3)). --define(wxDateTime_Gr_Netherlands_Friesland, (?Gr_Belgium+4)). --define(wxDateTime_Gr_Norway, ?Gr_Denmark). --define(wxDateTime_Gr_Poland, ?Gr_Standard). --define(wxDateTime_Gr_Portugal, ?Gr_Standard). --define(wxDateTime_Gr_Romania, (?Gr_Standard+1)). --define(wxDateTime_Gr_Russia, (?Gr_Standard+2)). --define(wxDateTime_Gr_Scotland, ?Gr_GreatBritain). --define(wxDateTime_Gr_Spain, ?Gr_Standard). --define(wxDateTime_Gr_Sweden, ?Gr_Finland). --define(wxDateTime_Gr_Switzerland, ?Gr_Unknown). --define(wxDateTime_Gr_Switzerland_Catholic, (?Gr_Unknown+1)). --define(wxDateTime_Gr_Switzerland_Protestant, (?Gr_Unknown+2)). --define(wxDateTime_Gr_Turkey, (?Gr_Unknown+3)). --define(wxDateTime_Gr_USA, ?Gr_GreatBritain). --define(wxDateTime_Gr_Wales, ?Gr_GreatBritain). --define(wxDateTime_Gr_Yugoslavia, (?Gr_GreatBritain+1)). -% From wxDateTime::Month --define(wxDateTime_Jan, 0). --define(wxDateTime_Feb, 1). --define(wxDateTime_Mar, 2). --define(wxDateTime_Apr, 3). --define(wxDateTime_May, 4). --define(wxDateTime_Jun, 5). --define(wxDateTime_Jul, 6). --define(wxDateTime_Aug, 7). --define(wxDateTime_Sep, 8). --define(wxDateTime_Oct, 9). --define(wxDateTime_Nov, 10). --define(wxDateTime_Dec, 11). --define(wxDateTime_Inv_Month, 12). -% From wxDateTime::NameFlags --define(wxDateTime_Name_Full, 1). --define(wxDateTime_Name_Abbr, 2). -% From wxDateTime::TZ --define(wxDateTime_Local, 0). --define(wxDateTime_GMT_12, 1). --define(wxDateTime_GMT_11, 2). --define(wxDateTime_GMT_10, 3). --define(wxDateTime_GMT_9, 4). --define(wxDateTime_GMT_8, 5). --define(wxDateTime_GMT_7, 6). --define(wxDateTime_GMT_6, 7). --define(wxDateTime_GMT_5, 8). --define(wxDateTime_GMT_4, 9). --define(wxDateTime_GMT_3, 10). --define(wxDateTime_GMT_2, 11). --define(wxDateTime_GMT_1, 12). --define(wxDateTime_GMT0, 13). --define(wxDateTime_GMT1, 14). --define(wxDateTime_GMT2, 15). --define(wxDateTime_GMT3, 16). --define(wxDateTime_GMT4, 17). --define(wxDateTime_GMT5, 18). --define(wxDateTime_GMT6, 19). --define(wxDateTime_GMT7, 20). --define(wxDateTime_GMT8, 21). --define(wxDateTime_GMT9, 22). --define(wxDateTime_GMT10, 23). --define(wxDateTime_GMT11, 24). --define(wxDateTime_GMT12, 25). --define(wxDateTime_GMT13, 26). --define(wxDateTime_WET, ?GMT0). --define(wxDateTime_WEST, ?GMT1). --define(wxDateTime_CET, ?GMT1). --define(wxDateTime_CEST, ?GMT2). --define(wxDateTime_EET, ?GMT2). --define(wxDateTime_EEST, ?GMT3). --define(wxDateTime_MSK, ?GMT3). --define(wxDateTime_MSD, ?GMT4). --define(wxDateTime_AST, ?GMT_4). --define(wxDateTime_ADT, ?GMT_3). --define(wxDateTime_EST, ?GMT_5). --define(wxDateTime_EDT, ?GMT_4). --define(wxDateTime_CST, ?GMT_6). --define(wxDateTime_CDT, ?GMT_5). --define(wxDateTime_MST, ?GMT_7). --define(wxDateTime_MDT, ?GMT_6). --define(wxDateTime_PST, ?GMT_8). --define(wxDateTime_PDT, ?GMT_7). --define(wxDateTime_HST, ?GMT_10). --define(wxDateTime_AKST, ?GMT_9). --define(wxDateTime_AKDT, ?GMT_8). --define(wxDateTime_A_WST, ?GMT8). --define(wxDateTime_A_CST, ?GMT13+1). --define(wxDateTime_A_EST, ?GMT10). --define(wxDateTime_A_ESST, ?GMT11). --define(wxDateTime_NZST, ?GMT12). --define(wxDateTime_NZDT, ?GMT13). --define(wxDateTime_UTC, ?GMT0). -% From wxDateTime::WeekDay --define(wxDateTime_Sun, 0). --define(wxDateTime_Mon, 1). --define(wxDateTime_Tue, 2). --define(wxDateTime_Wed, 3). --define(wxDateTime_Thu, 4). --define(wxDateTime_Fri, 5). --define(wxDateTime_Sat, 6). --define(wxDateTime_Inv_WeekDay, 7). -% From wxDateTime::WeekFlags --define(wxDateTime_Default_First, 0). --define(wxDateTime_Monday_First, 1). --define(wxDateTime_Sunday_First, 2). -% From wxDateTime::Year --define(wxDateTime_Inv_Year, ?SHRT_MIN). -% From class wxDialog --define(wxDialog_ButtonSizerFlags, (?wxOK bor ?wxCANCEL bor ?wxYES bor ?wxNO bor ?wxHELP bor ?wxNO_DEFAULT)). -% From class wxGrid --define(wxGrid_wxGRID_CELLCTRL, 2000). --define(wxGrid_wxGRID_TOPCTRL, 2001). -% From class wxGrid --define(wxGrid_wxGRID_TEXTCTRL, 2100). --define(wxGrid_wxGRID_CHECKBOX, 2101). --define(wxGrid_wxGRID_CHOICE, 2102). --define(wxGrid_wxGRID_COMBOBOX, 2103). -% From wxGrid::CursorMode --define(wxGrid_WXGRID_CURSOR_SELECT_CELL, 0). --define(wxGrid_WXGRID_CURSOR_RESIZE_ROW, 1). --define(wxGrid_WXGRID_CURSOR_RESIZE_COL, 2). --define(wxGrid_WXGRID_CURSOR_SELECT_ROW, 3). --define(wxGrid_WXGRID_CURSOR_SELECT_COL, 4). --define(wxGrid_WXGRID_CURSOR_MOVE_COL, 5). -% From wxGrid::wxGridSelectionModes --define(wxGrid_wxGridSelectCells, 0). --define(wxGrid_wxGridSelectRows, 1). --define(wxGrid_wxGridSelectColumns, 2). -% From wxGridCellAttr::wxAttrKind --define(wxGridCellAttr_Any, 0). --define(wxGridCellAttr_Default, 1). --define(wxGridCellAttr_Cell, 2). --define(wxGridCellAttr_Row, 3). --define(wxGridCellAttr_Col, 4). --define(wxGridCellAttr_Merged, 5). -% From wxGridCellAttr::wxAttrOverflowMode --define(wxGridCellAttr_UnsetOverflow, -1). --define(wxGridCellAttr_Overflow, 0). --define(wxGridCellAttr_SingleCell, 1). -% From wxGridCellAttr::wxAttrReadMode --define(wxGridCellAttr_Unset, -1). --define(wxGridCellAttr_ReadWrite, 0). --define(wxGridCellAttr_ReadOnly, 1). -% From wxHelpEvent::Origin --define(wxHelpEvent_Origin_Unknown, 0). --define(wxHelpEvent_Origin_Keyboard, 1). --define(wxHelpEvent_Origin_HelpButton, 2). -% From wxHtmlEasyPrinting::FontMode --define(wxHtmlEasyPrinting_FontMode_Explicit, 0). --define(wxHtmlEasyPrinting_FontMode_Standard, 1). -% From wxHtmlWindow::ClipboardType --define(wxHtmlWindow_Primary, 0). --define(wxHtmlWindow_Secondary, 1). -% From class wxListbook --define(wxListbook_SetSelection_SendEvent, 1). -% From class wxNavigationKeyEvent --define(wxNavigationKeyEvent_IsBackward, 0). --define(wxNavigationKeyEvent_IsForward, 1). --define(wxNavigationKeyEvent_WinChange, 2). --define(wxNavigationKeyEvent_FromTab, 4). -% From class wxNotebook --define(wxNotebook_SetSelection_SendEvent, 1). -% From class wxProgressDialog --define(wxProgressDialog_Uncancelable, -1). --define(wxProgressDialog_Canceled, 0). --define(wxProgressDialog_Continue, 1). --define(wxProgressDialog_Finished, 2). -% From class wxSizerItem --define(wxSizerItem_Item_None, 0). --define(wxSizerItem_Item_Window, 1). --define(wxSizerItem_Item_Sizer, 2). --define(wxSizerItem_Item_Spacer, 3). --define(wxSizerItem_Item_Max, 4). -% From class wxTextCtrl --define(wxTextCtrl_SetValue_SendEvent, 1). --define(wxTextCtrl_SetValue_SelectionOnly, 2). -% From class wxToolbook --define(wxToolbook_SetSelection_SendEvent, 1). -% From class wxTreebook --define(wxTreebook_SetSelection_SendEvent, 1). -% From wxWindow::MoveKind --define(wxWindow_MoveBefore, 0). --define(wxWindow_MoveAfter, 1). -% From wxWindowGTK::ScrollDir --define(wxWindowGTK_ScrollDir_Horz, 0). --define(wxWindowGTK_ScrollDir_Vert, 1). --define(wxWindowGTK_ScrollDir_Max, 2). -% From wxWindowGTK::ScrollUnit --define(wxWindowGTK_ScrollUnit_Line, 0). --define(wxWindowGTK_ScrollUnit_Page, 1). --define(wxWindowGTK_ScrollUnit_Max, 2). --define(wxACCEL_NORMAL, 0). --define(wxACCEL_ALT, 1). --define(wxACCEL_CTRL, 2). --define(wxACCEL_SHIFT, 4). --define(wxACCEL_CMD, ?wxACCEL_CTRL). --define(wxPRINT_WINDOWS, 1). --define(wxPRINT_POSTSCRIPT, 2). --define(wxBK_HITTEST_NOWHERE, 1). --define(wxBK_HITTEST_ONICON, 2). --define(wxBK_HITTEST_ONLABEL, 4). --define(wxBK_HITTEST_ONITEM, (?wxBK_HITTEST_ONICON bor ?wxBK_HITTEST_ONLABEL)). --define(wxBK_HITTEST_ONPAGE, 8). --define(wxCAL_SUNDAY_FIRST, 0). --define(wxCAL_MONDAY_FIRST, 1). --define(wxCAL_SHOW_HOLIDAYS, 2). --define(wxCAL_NO_YEAR_CHANGE, 4). --define(wxCAL_NO_MONTH_CHANGE, 12). --define(wxCAL_SEQUENTIAL_MONTH_SELECTION, 16). --define(wxCAL_SHOW_SURROUNDING_WEEKS, 32). --define(wxDP_DEFAULT, 0). --define(wxDP_SPIN, 1). --define(wxDP_DROPDOWN, 2). --define(wxDP_SHOWCENTURY, 4). --define(wxDP_ALLOWNONE, 8). --define(wxDefaultCoord, -1). --define(wxDIRCTRL_DIR_ONLY, 16). --define(wxDIRCTRL_SELECT_FIRST, 32). --define(wxDIRCTRL_SHOW_FILTERS, 64). --define(wxDIRCTRL_3D_INTERNAL, 128). --define(wxDIRCTRL_EDIT_LABELS, 256). --define(wxDrag_CopyOnly, 0). --define(wxDrag_AllowMove, 1). --define(wxDrag_DefaultMove, 3). --define(wxMOUSE_BTN_ANY, -1). --define(wxMOUSE_BTN_NONE, 0). --define(wxMOUSE_BTN_LEFT, 1). --define(wxMOUSE_BTN_MIDDLE, 2). --define(wxMOUSE_BTN_RIGHT, 3). --define(wxFD_OPEN, 1). --define(wxFD_SAVE, 2). --define(wxFD_OVERWRITE_PROMPT, 4). --define(wxFD_FILE_MUST_EXIST, 16). --define(wxFD_MULTIPLE, 32). --define(wxFD_CHANGE_DIR, 128). --define(wxFD_PREVIEW, 256). --define(wxFONTFLAG_DEFAULT, 0). --define(wxFONTFLAG_ITALIC, 1). --define(wxFONTFLAG_SLANT, 2). --define(wxFONTFLAG_LIGHT, 4). --define(wxFONTFLAG_BOLD, 8). --define(wxFONTFLAG_ANTIALIASED, 16). --define(wxFONTFLAG_NOT_ANTIALIASED, 32). --define(wxFONTFLAG_UNDERLINED, 64). --define(wxFONTFLAG_STRIKETHROUGH, 128). --define(wxFONTFLAG_MASK, (?wxFONTFLAG_ITALIC bor ?wxFONTFLAG_SLANT bor ?wxFONTFLAG_LIGHT bor ?wxFONTFLAG_BOLD bor ?wxFONTFLAG_ANTIALIASED bor ?wxFONTFLAG_NOT_ANTIALIASED bor ?wxFONTFLAG_UNDERLINED bor ?wxFONTFLAG_STRIKETHROUGH)). --define(wxSPLIT_DRAG_NONE, 0). --define(wxSPLIT_DRAG_DRAGGING, 1). --define(wxSPLIT_DRAG_LEFT_DOWN, 2). --define(WX_GL_RGBA, 1). --define(WX_GL_BUFFER_SIZE, 2). --define(WX_GL_LEVEL, 3). --define(WX_GL_DOUBLEBUFFER, 4). --define(WX_GL_STEREO, 5). --define(WX_GL_AUX_BUFFERS, 6). --define(WX_GL_MIN_RED, 7). --define(WX_GL_MIN_GREEN, 8). --define(WX_GL_MIN_BLUE, 9). --define(WX_GL_MIN_ALPHA, 10). --define(WX_GL_DEPTH_SIZE, 11). --define(WX_GL_STENCIL_SIZE, 12). --define(WX_GL_MIN_ACCUM_RED, 13). --define(WX_GL_MIN_ACCUM_GREEN, 14). --define(WX_GL_MIN_ACCUM_BLUE, 15). --define(WX_GL_MIN_ACCUM_ALPHA, 16). --define(wxPAGE_ODD, 0). --define(wxPAGE_EVEN, 1). --define(wxPAGE_ALL, 2). --define(wxBMP_24BPP, 24). --define(wxBMP_8BPP, 8). --define(wxBMP_8BPP_GREY, 9). --define(wxBMP_8BPP_GRAY, ?wxBMP_8BPP_GREY). --define(wxBMP_8BPP_RED, 10). --define(wxBMP_8BPP_PALETTE, 11). --define(wxBMP_4BPP, 4). --define(wxBMP_1BPP, 1). --define(wxBMP_1BPP_BW, 2). --define(wxIMAGE_RESOLUTION_INCHES, 1). --define(wxIMAGE_RESOLUTION_CM, 2). --define(wxIMAGE_LIST_NORMAL, 0). --define(wxIMAGE_LIST_SMALL, 1). --define(wxIMAGE_LIST_STATE, 2). --define(wxLIST_NEXT_ABOVE, 0). --define(wxLIST_NEXT_ALL, 1). --define(wxLIST_NEXT_BELOW, 2). --define(wxLIST_NEXT_LEFT, 3). --define(wxLIST_NEXT_RIGHT, 4). --define(wxNB_HITTEST_NOWHERE, ?wxBK_HITTEST_NOWHERE). --define(wxNB_HITTEST_ONICON, ?wxBK_HITTEST_ONICON). --define(wxNB_HITTEST_ONLABEL, ?wxBK_HITTEST_ONLABEL). --define(wxNB_HITTEST_ONITEM, ?wxBK_HITTEST_ONITEM). --define(wxNB_HITTEST_ONPAGE, ?wxBK_HITTEST_ONPAGE). --define(wxTB_HORIZONTAL, ?wxHORIZONTAL). --define(wxTB_TOP, ?wxTB_HORIZONTAL). --define(wxTB_VERTICAL, ?wxVERTICAL). --define(wxTB_LEFT, ?wxTB_VERTICAL). --define(wxTB_3DBUTTONS, 16). --define(wxTB_FLAT, 32). --define(wxTB_DOCKABLE, 64). --define(wxTB_NOICONS, 128). --define(wxTB_TEXT, 256). --define(wxTB_NODIVIDER, 512). --define(wxTB_NOALIGN, 1024). --define(wxTB_HORZ_LAYOUT, 2048). --define(wxTB_HORZ_TEXT, (?wxTB_HORZ_LAYOUT bor ?wxTB_TEXT)). --define(wxTB_NO_TOOLTIPS, 4096). --define(wxTB_BOTTOM, 8192). --define(wxTB_RIGHT, 16384). --define(wxFULLSCREEN_NOMENUBAR, 1). --define(wxFULLSCREEN_NOTOOLBAR, 2). --define(wxFULLSCREEN_NOSTATUSBAR, 4). --define(wxFULLSCREEN_NOBORDER, 8). --define(wxFULLSCREEN_NOCAPTION, 16). --define(wxFULLSCREEN_ALL, (?wxFULLSCREEN_NOMENUBAR bor ?wxFULLSCREEN_NOTOOLBAR bor ?wxFULLSCREEN_NOSTATUSBAR bor ?wxFULLSCREEN_NOBORDER bor ?wxFULLSCREEN_NOCAPTION)). +% From "treebase.h": wxTreeItemIcon +-define(wxTreeItemIcon_Normal, 0). +-define(wxTreeItemIcon_Selected, 1). +-define(wxTreeItemIcon_Expanded, 2). +-define(wxTreeItemIcon_SelectedExpanded, 3). +-define(wxTreeItemIcon_Max, 4). +% From "utils.h" -define(wxEXEC_ASYNC, 0). -define(wxEXEC_SYNC, 1). -define(wxEXEC_NOHIDE, 2). -define(wxEXEC_MAKE_GROUP_LEADER, 4). -define(wxEXEC_NODISABLE, 8). --define(wxID_NONE, -3). --define(wxID_SEPARATOR, -2). --define(wxID_ANY, -1). --define(wxID_LOWEST, 4999). --define(wxID_OPEN, 5000). --define(wxID_CLOSE, 5001). --define(wxID_NEW, 5002). --define(wxID_SAVE, 5003). --define(wxID_SAVEAS, 5004). --define(wxID_REVERT, 5005). --define(wxID_EXIT, 5006). --define(wxID_UNDO, 5007). --define(wxID_REDO, 5008). --define(wxID_HELP, 5009). --define(wxID_PRINT, 5010). --define(wxID_PRINT_SETUP, 5011). --define(wxID_PAGE_SETUP, 5012). --define(wxID_PREVIEW, 5013). --define(wxID_ABOUT, 5014). --define(wxID_HELP_CONTENTS, 5015). --define(wxID_HELP_INDEX, 5016). --define(wxID_HELP_SEARCH, 5017). --define(wxID_HELP_COMMANDS, 5018). --define(wxID_HELP_PROCEDURES, 5019). --define(wxID_HELP_CONTEXT, 5020). --define(wxID_CLOSE_ALL, 5021). --define(wxID_PREFERENCES, 5022). --define(wxID_EDIT, 5030). --define(wxID_CUT, 5031). --define(wxID_COPY, 5032). --define(wxID_PASTE, 5033). --define(wxID_CLEAR, 5034). --define(wxID_FIND, 5035). --define(wxID_DUPLICATE, 5036). --define(wxID_SELECTALL, 5037). --define(wxID_DELETE, 5038). --define(wxID_REPLACE, 5039). --define(wxID_REPLACE_ALL, 5040). --define(wxID_PROPERTIES, 5041). --define(wxID_VIEW_DETAILS, 5042). --define(wxID_VIEW_LARGEICONS, 5043). --define(wxID_VIEW_SMALLICONS, 5044). --define(wxID_VIEW_LIST, 5045). --define(wxID_VIEW_SORTDATE, 5046). --define(wxID_VIEW_SORTNAME, 5047). --define(wxID_VIEW_SORTSIZE, 5048). --define(wxID_VIEW_SORTTYPE, 5049). --define(wxID_FILE, 5050). --define(wxID_FILE1, 5051). --define(wxID_FILE2, 5052). --define(wxID_FILE3, 5053). --define(wxID_FILE4, 5054). --define(wxID_FILE5, 5055). --define(wxID_FILE6, 5056). --define(wxID_FILE7, 5057). --define(wxID_FILE8, 5058). --define(wxID_FILE9, 5059). --define(wxID_OK, 5100). --define(wxID_CANCEL, 5101). --define(wxID_APPLY, 5102). --define(wxID_YES, 5103). --define(wxID_NO, 5104). --define(wxID_STATIC, 5105). --define(wxID_FORWARD, 5106). --define(wxID_BACKWARD, 5107). --define(wxID_DEFAULT, 5108). --define(wxID_MORE, 5109). --define(wxID_SETUP, 5110). --define(wxID_RESET, 5111). --define(wxID_CONTEXT_HELP, 5112). --define(wxID_YESTOALL, 5113). --define(wxID_NOTOALL, 5114). --define(wxID_ABORT, 5115). --define(wxID_RETRY, 5116). --define(wxID_IGNORE, 5117). --define(wxID_ADD, 5118). --define(wxID_REMOVE, 5119). --define(wxID_UP, 5120). --define(wxID_DOWN, 5121). --define(wxID_HOME, 5122). --define(wxID_REFRESH, 5123). --define(wxID_STOP, 5124). --define(wxID_INDEX, 5125). --define(wxID_BOLD, 5126). --define(wxID_ITALIC, 5127). --define(wxID_JUSTIFY_CENTER, 5128). --define(wxID_JUSTIFY_FILL, 5129). --define(wxID_JUSTIFY_RIGHT, 5130). --define(wxID_JUSTIFY_LEFT, 5131). --define(wxID_UNDERLINE, 5132). --define(wxID_INDENT, 5133). --define(wxID_UNINDENT, 5134). --define(wxID_ZOOM_100, 5135). --define(wxID_ZOOM_FIT, 5136). --define(wxID_ZOOM_IN, 5137). --define(wxID_ZOOM_OUT, 5138). --define(wxID_UNDELETE, 5139). --define(wxID_REVERT_TO_SAVED, 5140). --define(wxID_SYSTEM_MENU, 5200). --define(wxID_CLOSE_FRAME, 5201). --define(wxID_MOVE_FRAME, 5202). --define(wxID_RESIZE_FRAME, 5203). --define(wxID_MAXIMIZE_FRAME, 5204). --define(wxID_ICONIZE_FRAME, 5205). --define(wxID_RESTORE_FRAME, 5206). --define(wxID_FILEDLGG, 5900). --define(wxID_HIGHEST, 5999). --define(wxJOYSTICK1, 0). --define(wxJOYSTICK2, 1). --define(wxIMAGE_QUALITY_NORMAL, 0). --define(wxIMAGE_QUALITY_HIGH, 1). --define(wxLIST_ALIGN_DEFAULT, 0). --define(wxLIST_ALIGN_LEFT, 1). --define(wxLIST_ALIGN_TOP, 2). --define(wxLIST_ALIGN_SNAP_TO_GRID, 3). --define(wxUSER_ATTENTION_INFO, 1). --define(wxUSER_ATTENTION_ERROR, 2). +% From "utils.h" -define(wxBROWSER_NEW_WINDOW, 1). --define(wxDEFAULT, 70). --define(wxDECORATIVE, 71). --define(wxROMAN, 72). --define(wxSCRIPT, 73). --define(wxSWISS, 74). --define(wxMODERN, 75). --define(wxTELETYPE, 76). --define(wxVARIABLE, 80). --define(wxFIXED, 81). --define(wxNORMAL, 90). --define(wxLIGHT, 91). --define(wxBOLD, 92). --define(wxITALIC, 93). --define(wxSLANT, 94). --define(wxSOLID, 100). --define(wxDOT, 101). --define(wxLONG_DASH, 102). --define(wxSHORT_DASH, 103). --define(wxDOT_DASH, 104). --define(wxUSER_DASH, 105). --define(wxTRANSPARENT, 106). --define(wxSTIPPLE_MASK_OPAQUE, 107). --define(wxSTIPPLE_MASK, 108). --define(wxSTIPPLE, 110). --define(wxBDIAGONAL_HATCH, 111). --define(wxCROSSDIAG_HATCH, 112). --define(wxFDIAGONAL_HATCH, 113). --define(wxCROSS_HATCH, 114). --define(wxHORIZONTAL_HATCH, 115). --define(wxVERTICAL_HATCH, 116). --define(wxFIRST_HATCH, ?wxBDIAGONAL_HATCH). --define(wxLAST_HATCH, ?wxVERTICAL_HATCH). --define(wxJOIN_BEVEL, 120). --define(wxJOIN_MITER, 121). --define(wxJOIN_ROUND, 122). --define(wxCAP_ROUND, 130). --define(wxCAP_PROJECTING, 131). --define(wxCAP_BUTT, 132). --define(wxJOY_BUTTON_ANY, -1). --define(wxJOY_BUTTON1, 1). --define(wxJOY_BUTTON2, 2). --define(wxJOY_BUTTON3, 4). --define(wxJOY_BUTTON4, 8). --define(wxLIST_AUTOSIZE, -1). --define(wxLIST_AUTOSIZE_USEHEADER, -2). +% From "utils.h" -define(wxStrip_Mnemonics, 1). -define(wxStrip_Accel, 2). -define(wxStrip_All, (?wxStrip_Mnemonics bor ?wxStrip_Accel)). --define(wxFLOOD_SURFACE, 1). --define(wxFLOOD_BORDER, 2). --define(wxLIST_RECT_BOUNDS, 0). --define(wxLIST_RECT_ICON, 1). --define(wxLIST_RECT_LABEL, 2). --define(wxODDEVEN_RULE, 1). --define(wxWINDING_RULE, 2). --define(wxLIST_FIND_UP, 0). --define(wxLIST_FIND_DOWN, 1). --define(wxLIST_FIND_LEFT, 2). --define(wxLIST_FIND_RIGHT, 3). --define(wxTOOL_TOP, 1). --define(wxTOOL_BOTTOM, 2). --define(wxTOOL_LEFT, 3). --define(wxTOOL_RIGHT, 4). --define(wxMM_TEXT, 1). --define(wxMM_LOMETRIC, 2). --define(wxMM_HIMETRIC, 3). --define(wxMM_LOENGLISH, 4). --define(wxMM_HIENGLISH, 5). --define(wxMM_TWIPS, 6). --define(wxMM_ISOTROPIC, 7). --define(wxMM_ANISOTROPIC, 8). --define(wxMM_POINTS, 9). --define(wxMM_METRIC, 10). -% Type Propagation_state --define(wxEVENT_PROPAGATE_NONE, 0). --define(wxEVENT_PROPAGATE_MAX, ?INT_MAX). -% Type form_ops_t --define(wxCLEAR, 0). --define(wxROP_BLACK, ?wxCLEAR). --define(wxBLIT_BLACKNESS, ?wxCLEAR). --define(wxXOR, (?wxCLEAR+1)). --define(wxROP_XORPEN, ?wxXOR). --define(wxBLIT_SRCINVERT, ?wxXOR). --define(wxINVERT, (?wxXOR+1)). --define(wxROP_NOT, ?wxINVERT). --define(wxBLIT_DSTINVERT, ?wxINVERT). --define(wxOR_REVERSE, (?wxINVERT+1)). --define(wxROP_MERGEPENNOT, ?wxOR_REVERSE). --define(wxBLIT_00DD0228, ?wxOR_REVERSE). --define(wxAND_REVERSE, (?wxOR_REVERSE+1)). --define(wxROP_MASKPENNOT, ?wxAND_REVERSE). --define(wxBLIT_SRCERASE, ?wxAND_REVERSE). --define(wxCOPY, (?wxAND_REVERSE+1)). --define(wxROP_COPYPEN, ?wxCOPY). --define(wxBLIT_SRCCOPY, ?wxCOPY). --define(wxAND, (?wxCOPY+1)). --define(wxROP_MASKPEN, ?wxAND). --define(wxBLIT_SRCAND, ?wxAND). --define(wxAND_INVERT, (?wxAND+1)). --define(wxROP_MASKNOTPEN, ?wxAND_INVERT). --define(wxBLIT_00220326, ?wxAND_INVERT). --define(wxNO_OP, (?wxAND_INVERT+1)). --define(wxROP_NOP, ?wxNO_OP). --define(wxBLIT_00AA0029, ?wxNO_OP). --define(wxNOR, (?wxNO_OP+1)). --define(wxROP_NOTMERGEPEN, ?wxNOR). --define(wxBLIT_NOTSRCERASE, ?wxNOR). --define(wxEQUIV, (?wxNOR+1)). --define(wxROP_NOTXORPEN, ?wxEQUIV). --define(wxBLIT_00990066, ?wxEQUIV). --define(wxSRC_INVERT, (?wxEQUIV+1)). --define(wxROP_NOTCOPYPEN, ?wxSRC_INVERT). --define(wxBLIT_NOTSCRCOPY, ?wxSRC_INVERT). --define(wxOR_INVERT, (?wxSRC_INVERT+1)). --define(wxROP_MERGENOTPEN, ?wxOR_INVERT). --define(wxBLIT_MERGEPAINT, ?wxOR_INVERT). --define(wxNAND, (?wxOR_INVERT+1)). --define(wxROP_NOTMASKPEN, ?wxNAND). --define(wxBLIT_007700E6, ?wxNAND). --define(wxOR, (?wxNAND+1)). --define(wxROP_MERGEPEN, ?wxOR). --define(wxBLIT_SRCPAINT, ?wxOR). --define(wxSET, (?wxOR+1)). --define(wxROP_WHITE, ?wxSET). --define(wxBLIT_WHITENESS, ?wxSET). -% Type wxAlignment --define(wxALIGN_NOT, 0). --define(wxALIGN_CENTER_HORIZONTAL, 256). --define(wxALIGN_CENTRE_HORIZONTAL, ?wxALIGN_CENTER_HORIZONTAL). --define(wxALIGN_LEFT, ?wxALIGN_NOT). --define(wxALIGN_TOP, ?wxALIGN_NOT). --define(wxALIGN_RIGHT, 512). --define(wxALIGN_BOTTOM, 1024). --define(wxALIGN_CENTER_VERTICAL, 2048). --define(wxALIGN_CENTRE_VERTICAL, ?wxALIGN_CENTER_VERTICAL). --define(wxALIGN_CENTER, (?wxALIGN_CENTER_HORIZONTAL bor ?wxALIGN_CENTER_VERTICAL)). --define(wxALIGN_CENTRE, ?wxALIGN_CENTER). --define(wxALIGN_MASK, 3840). -% Type wxAuiButtonId --define(wxAUI_BUTTON_CLOSE, 101). --define(wxAUI_BUTTON_MAXIMIZE_RESTORE, 102). --define(wxAUI_BUTTON_MINIMIZE, 103). --define(wxAUI_BUTTON_PIN, 104). --define(wxAUI_BUTTON_OPTIONS, 105). --define(wxAUI_BUTTON_WINDOWLIST, 106). --define(wxAUI_BUTTON_LEFT, 107). --define(wxAUI_BUTTON_RIGHT, 108). --define(wxAUI_BUTTON_UP, 109). --define(wxAUI_BUTTON_DOWN, 110). --define(wxAUI_BUTTON_CUSTOM1, 201). --define(wxAUI_BUTTON_CUSTOM2, 202). --define(wxAUI_BUTTON_CUSTOM3, 203). -% Type wxAuiManagerDock --define(wxAUI_DOCK_NONE, 0). --define(wxAUI_DOCK_TOP, 1). --define(wxAUI_DOCK_RIGHT, 2). --define(wxAUI_DOCK_BOTTOM, 3). --define(wxAUI_DOCK_LEFT, 4). --define(wxAUI_DOCK_CENTER, 5). --define(wxAUI_DOCK_CENTRE, ?wxAUI_DOCK_CENTER). -% Type wxAuiManagerOption --define(wxAUI_MGR_ALLOW_FLOATING, 1). --define(wxAUI_MGR_ALLOW_ACTIVE_PANE, 2). --define(wxAUI_MGR_TRANSPARENT_DRAG, 4). --define(wxAUI_MGR_TRANSPARENT_HINT, 8). --define(wxAUI_MGR_VENETIAN_BLINDS_HINT, 16). --define(wxAUI_MGR_RECTANGLE_HINT, 32). --define(wxAUI_MGR_HINT_FADE, 64). --define(wxAUI_MGR_NO_VENETIAN_BLINDS_FADE, 128). --define(wxAUI_MGR_LIVE_RESIZE, 256). --define(wxAUI_MGR_DEFAULT, (?wxAUI_MGR_ALLOW_FLOATING bor ?wxAUI_MGR_TRANSPARENT_HINT bor ?wxAUI_MGR_HINT_FADE bor ?wxAUI_MGR_NO_VENETIAN_BLINDS_FADE)). -% Type wxAuiNotebookOption --define(wxAUI_NB_TOP, 1). --define(wxAUI_NB_LEFT, 2). --define(wxAUI_NB_RIGHT, 4). --define(wxAUI_NB_BOTTOM, 8). --define(wxAUI_NB_TAB_SPLIT, 16). --define(wxAUI_NB_TAB_MOVE, 32). --define(wxAUI_NB_TAB_EXTERNAL_MOVE, 64). --define(wxAUI_NB_TAB_FIXED_WIDTH, 128). --define(wxAUI_NB_SCROLL_BUTTONS, 256). --define(wxAUI_NB_WINDOWLIST_BUTTON, 512). --define(wxAUI_NB_CLOSE_BUTTON, 1024). --define(wxAUI_NB_CLOSE_ON_ACTIVE_TAB, 2048). --define(wxAUI_NB_CLOSE_ON_ALL_TABS, 4096). --define(wxAUI_NB_MIDDLE_CLICK_CLOSE, 8192). --define(wxAUI_NB_DEFAULT_STYLE, (?wxAUI_NB_TOP bor ?wxAUI_NB_TAB_SPLIT bor ?wxAUI_NB_TAB_MOVE bor ?wxAUI_NB_SCROLL_BUTTONS bor ?wxAUI_NB_CLOSE_ON_ACTIVE_TAB bor ?wxAUI_NB_MIDDLE_CLICK_CLOSE)). -% Type wxAuiPaneButtonState --define(wxAUI_BUTTON_STATE_NORMAL, 0). --define(wxAUI_BUTTON_STATE_HOVER, 2). --define(wxAUI_BUTTON_STATE_PRESSED, 4). --define(wxAUI_BUTTON_STATE_DISABLED, 8). --define(wxAUI_BUTTON_STATE_HIDDEN, 16). --define(wxAUI_BUTTON_STATE_CHECKED, 32). -% Type wxAuiPaneDockArtGradients --define(wxAUI_GRADIENT_NONE, 0). --define(wxAUI_GRADIENT_VERTICAL, 1). --define(wxAUI_GRADIENT_HORIZONTAL, 2). -% Type wxAuiPaneDockArtSetting --define(wxAUI_DOCKART_SASH_SIZE, 0). --define(wxAUI_DOCKART_CAPTION_SIZE, 1). --define(wxAUI_DOCKART_GRIPPER_SIZE, 2). --define(wxAUI_DOCKART_PANE_BORDER_SIZE, 3). --define(wxAUI_DOCKART_PANE_BUTTON_SIZE, 4). --define(wxAUI_DOCKART_BACKGROUND_COLOUR, 5). --define(wxAUI_DOCKART_SASH_COLOUR, 6). --define(wxAUI_DOCKART_ACTIVE_CAPTION_COLOUR, 7). --define(wxAUI_DOCKART_ACTIVE_CAPTION_GRADIENT_COLOUR, 8). --define(wxAUI_DOCKART_INACTIVE_CAPTION_COLOUR, 9). --define(wxAUI_DOCKART_INACTIVE_CAPTION_GRADIENT_COLOUR, 10). --define(wxAUI_DOCKART_ACTIVE_CAPTION_TEXT_COLOUR, 11). --define(wxAUI_DOCKART_INACTIVE_CAPTION_TEXT_COLOUR, 12). --define(wxAUI_DOCKART_BORDER_COLOUR, 13). --define(wxAUI_DOCKART_GRIPPER_COLOUR, 14). --define(wxAUI_DOCKART_CAPTION_FONT, 15). --define(wxAUI_DOCKART_GRADIENT_TYPE, 16). -% Type wxAuiPaneInsertLevel --define(wxAUI_INSERT_PANE, 0). --define(wxAUI_INSERT_ROW, 1). --define(wxAUI_INSERT_DOCK, 2). -% Type wxBackgroundStyle --define(wxBG_STYLE_SYSTEM, 0). --define(wxBG_STYLE_COLOUR, 1). --define(wxBG_STYLE_CUSTOM, 2). -% Type wxBitmapType --define(wxBITMAP_TYPE_INVALID, 0). --define(wxBITMAP_TYPE_BMP, 1). --define(wxBITMAP_TYPE_BMP_RESOURCE, 2). --define(wxBITMAP_TYPE_RESOURCE, ?wxBITMAP_TYPE_BMP_RESOURCE). --define(wxBITMAP_TYPE_ICO, (?wxBITMAP_TYPE_BMP_RESOURCE+1)). --define(wxBITMAP_TYPE_ICO_RESOURCE, (?wxBITMAP_TYPE_BMP_RESOURCE+2)). --define(wxBITMAP_TYPE_CUR, (?wxBITMAP_TYPE_BMP_RESOURCE+3)). --define(wxBITMAP_TYPE_CUR_RESOURCE, (?wxBITMAP_TYPE_BMP_RESOURCE+4)). --define(wxBITMAP_TYPE_XBM, (?wxBITMAP_TYPE_BMP_RESOURCE+5)). --define(wxBITMAP_TYPE_XBM_DATA, (?wxBITMAP_TYPE_BMP_RESOURCE+6)). --define(wxBITMAP_TYPE_XPM, (?wxBITMAP_TYPE_BMP_RESOURCE+7)). --define(wxBITMAP_TYPE_XPM_DATA, (?wxBITMAP_TYPE_BMP_RESOURCE+8)). --define(wxBITMAP_TYPE_TIF, (?wxBITMAP_TYPE_BMP_RESOURCE+9)). --define(wxBITMAP_TYPE_TIF_RESOURCE, (?wxBITMAP_TYPE_BMP_RESOURCE+10)). --define(wxBITMAP_TYPE_GIF, (?wxBITMAP_TYPE_BMP_RESOURCE+11)). --define(wxBITMAP_TYPE_GIF_RESOURCE, (?wxBITMAP_TYPE_BMP_RESOURCE+12)). --define(wxBITMAP_TYPE_PNG, (?wxBITMAP_TYPE_BMP_RESOURCE+13)). --define(wxBITMAP_TYPE_PNG_RESOURCE, (?wxBITMAP_TYPE_BMP_RESOURCE+14)). --define(wxBITMAP_TYPE_JPEG, (?wxBITMAP_TYPE_BMP_RESOURCE+15)). --define(wxBITMAP_TYPE_JPEG_RESOURCE, (?wxBITMAP_TYPE_BMP_RESOURCE+16)). --define(wxBITMAP_TYPE_PNM, (?wxBITMAP_TYPE_BMP_RESOURCE+17)). --define(wxBITMAP_TYPE_PNM_RESOURCE, (?wxBITMAP_TYPE_BMP_RESOURCE+18)). --define(wxBITMAP_TYPE_PCX, (?wxBITMAP_TYPE_BMP_RESOURCE+19)). --define(wxBITMAP_TYPE_PCX_RESOURCE, (?wxBITMAP_TYPE_BMP_RESOURCE+20)). --define(wxBITMAP_TYPE_PICT, (?wxBITMAP_TYPE_BMP_RESOURCE+21)). --define(wxBITMAP_TYPE_PICT_RESOURCE, (?wxBITMAP_TYPE_BMP_RESOURCE+22)). --define(wxBITMAP_TYPE_ICON, (?wxBITMAP_TYPE_BMP_RESOURCE+23)). --define(wxBITMAP_TYPE_ICON_RESOURCE, (?wxBITMAP_TYPE_BMP_RESOURCE+24)). --define(wxBITMAP_TYPE_ANI, (?wxBITMAP_TYPE_BMP_RESOURCE+25)). --define(wxBITMAP_TYPE_IFF, (?wxBITMAP_TYPE_BMP_RESOURCE+26)). --define(wxBITMAP_TYPE_TGA, (?wxBITMAP_TYPE_BMP_RESOURCE+27)). --define(wxBITMAP_TYPE_MACCURSOR, (?wxBITMAP_TYPE_BMP_RESOURCE+28)). --define(wxBITMAP_TYPE_MACCURSOR_RESOURCE, (?wxBITMAP_TYPE_BMP_RESOURCE+29)). --define(wxBITMAP_TYPE_ANY, 50). -% Type wxBorder --define(wxBORDER_DEFAULT, 0). --define(wxBORDER_NONE, 2097152). --define(wxBORDER_STATIC, 16777216). --define(wxBORDER_SIMPLE, 33554432). --define(wxBORDER_RAISED, 67108864). --define(wxBORDER_SUNKEN, 134217728). --define(wxBORDER_DOUBLE, 268435456). --define(wxBORDER_THEME, 268435456). --define(wxBORDER_MASK, 522190848). -% Type wxCalendarDateBorder --define(wxCAL_BORDER_NONE, 0). --define(wxCAL_BORDER_SQUARE, 1). --define(wxCAL_BORDER_ROUND, 2). -% Type wxCalendarHitTestResult --define(wxCAL_HITTEST_NOWHERE, 0). --define(wxCAL_HITTEST_HEADER, 1). --define(wxCAL_HITTEST_DAY, 2). --define(wxCAL_HITTEST_INCMONTH, 3). --define(wxCAL_HITTEST_DECMONTH, 4). --define(wxCAL_HITTEST_SURROUNDING_WEEK, 5). -% Type wxCheckBoxState --define(wxCHK_UNCHECKED, 0). --define(wxCHK_CHECKED, 1). --define(wxCHK_UNDETERMINED, 2). -% Type wxClientDataType --define(wxClientData_None, 0). --define(wxClientData_Object, 1). --define(wxClientData_Void, 2). -% Type wxDataFormatId --define(wxDF_INVALID, 0). --define(wxDF_TEXT, 1). --define(wxDF_BITMAP, 2). --define(wxDF_METAFILE, 3). --define(wxDF_SYLK, 4). --define(wxDF_DIF, 5). --define(wxDF_TIFF, 6). --define(wxDF_OEMTEXT, 7). --define(wxDF_DIB, 8). --define(wxDF_PALETTE, 9). --define(wxDF_PENDATA, 10). --define(wxDF_RIFF, 11). --define(wxDF_WAVE, 12). --define(wxDF_UNICODETEXT, 13). --define(wxDF_ENHMETAFILE, 14). --define(wxDF_FILENAME, 15). --define(wxDF_LOCALE, 16). --define(wxDF_PRIVATE, 20). --define(wxDF_HTML, 30). --define(wxDF_MAX, 31). -% Type wxDirection --define(wxLEFT, 16). --define(wxRIGHT, 32). --define(wxUP, 64). --define(wxDOWN, 128). --define(wxTOP, ?wxUP). --define(wxBOTTOM, ?wxDOWN). --define(wxNORTH, ?wxUP). --define(wxSOUTH, ?wxDOWN). --define(wxWEST, ?wxLEFT). --define(wxEAST, ?wxRIGHT). --define(wxALL, (?wxUP bor ?wxDOWN bor ?wxRIGHT bor ?wxLEFT)). -% Type wxDragResult --define(wxDragError, 0). --define(wxDragNone, 1). --define(wxDragCopy, 2). --define(wxDragMove, 3). --define(wxDragLink, 4). --define(wxDragCancel, 5). -% Type wxDuplexMode --define(wxDUPLEX_SIMPLEX, 0). --define(wxDUPLEX_HORIZONTAL, 1). --define(wxDUPLEX_VERTICAL, 2). -% Type wxEdge --define(wxLeft, 0). --define(wxTop, 1). --define(wxRight, 2). --define(wxBottom, 3). --define(wxWidth, 4). --define(wxHeight, 5). --define(wxCentre, 6). --define(wxCenter, ?wxCentre). --define(wxCentreX, (?wxCentre+1)). --define(wxCentreY, (?wxCentre+2)). -% Type wxFindReplaceDialogStyles --define(wxFR_REPLACEDIALOG, 1). --define(wxFR_NOUPDOWN, 2). --define(wxFR_NOMATCHCASE, 4). --define(wxFR_NOWHOLEWORD, 8). -% Type wxFindReplaceFlags --define(wxFR_DOWN, 1). --define(wxFR_WHOLEWORD, 2). --define(wxFR_MATCHCASE, 4). -% Type wxFlexSizerGrowMode --define(wxFLEX_GROWMODE_NONE, 0). --define(wxFLEX_GROWMODE_SPECIFIED, 1). --define(wxFLEX_GROWMODE_ALL, 2). -% Type wxFontEncoding --define(wxFONTENCODING_SYSTEM, -1). --define(wxFONTENCODING_DEFAULT, 0). --define(wxFONTENCODING_ISO8859_1, 1). --define(wxFONTENCODING_ISO8859_2, 2). --define(wxFONTENCODING_ISO8859_3, 3). --define(wxFONTENCODING_ISO8859_4, 4). --define(wxFONTENCODING_ISO8859_5, 5). --define(wxFONTENCODING_ISO8859_6, 6). --define(wxFONTENCODING_ISO8859_7, 7). --define(wxFONTENCODING_ISO8859_8, 8). --define(wxFONTENCODING_ISO8859_9, 9). --define(wxFONTENCODING_ISO8859_10, 10). --define(wxFONTENCODING_ISO8859_11, 11). --define(wxFONTENCODING_ISO8859_12, 12). --define(wxFONTENCODING_ISO8859_13, 13). --define(wxFONTENCODING_ISO8859_14, 14). --define(wxFONTENCODING_ISO8859_15, 15). --define(wxFONTENCODING_ISO8859_MAX, 16). --define(wxFONTENCODING_KOI8, 17). --define(wxFONTENCODING_KOI8_U, 18). --define(wxFONTENCODING_ALTERNATIVE, 19). --define(wxFONTENCODING_BULGARIAN, 20). --define(wxFONTENCODING_CP437, 21). --define(wxFONTENCODING_CP850, 22). --define(wxFONTENCODING_CP852, 23). --define(wxFONTENCODING_CP855, 24). --define(wxFONTENCODING_CP866, 25). --define(wxFONTENCODING_CP874, 26). --define(wxFONTENCODING_CP932, 27). --define(wxFONTENCODING_CP936, 28). --define(wxFONTENCODING_CP949, 29). --define(wxFONTENCODING_CP950, 30). --define(wxFONTENCODING_CP1250, 31). --define(wxFONTENCODING_CP1251, 32). --define(wxFONTENCODING_CP1252, 33). --define(wxFONTENCODING_CP1253, 34). --define(wxFONTENCODING_CP1254, 35). --define(wxFONTENCODING_CP1255, 36). --define(wxFONTENCODING_CP1256, 37). --define(wxFONTENCODING_CP1257, 38). --define(wxFONTENCODING_CP12_MAX, 39). --define(wxFONTENCODING_UTF7, 40). --define(wxFONTENCODING_UTF8, 41). --define(wxFONTENCODING_EUC_JP, 42). --define(wxFONTENCODING_UTF16BE, 43). --define(wxFONTENCODING_UTF16LE, 44). --define(wxFONTENCODING_UTF32BE, 45). --define(wxFONTENCODING_UTF32LE, 46). --define(wxFONTENCODING_MACROMAN, 47). --define(wxFONTENCODING_MACJAPANESE, 48). --define(wxFONTENCODING_MACCHINESETRAD, 49). --define(wxFONTENCODING_MACKOREAN, 50). --define(wxFONTENCODING_MACARABIC, 51). --define(wxFONTENCODING_MACHEBREW, 52). --define(wxFONTENCODING_MACGREEK, 53). --define(wxFONTENCODING_MACCYRILLIC, 54). --define(wxFONTENCODING_MACDEVANAGARI, 55). --define(wxFONTENCODING_MACGURMUKHI, 56). --define(wxFONTENCODING_MACGUJARATI, 57). --define(wxFONTENCODING_MACORIYA, 58). --define(wxFONTENCODING_MACBENGALI, 59). --define(wxFONTENCODING_MACTAMIL, 60). --define(wxFONTENCODING_MACTELUGU, 61). --define(wxFONTENCODING_MACKANNADA, 62). --define(wxFONTENCODING_MACMALAJALAM, 63). --define(wxFONTENCODING_MACSINHALESE, 64). --define(wxFONTENCODING_MACBURMESE, 65). --define(wxFONTENCODING_MACKHMER, 66). --define(wxFONTENCODING_MACTHAI, 67). --define(wxFONTENCODING_MACLAOTIAN, 68). --define(wxFONTENCODING_MACGEORGIAN, 69). --define(wxFONTENCODING_MACARMENIAN, 70). --define(wxFONTENCODING_MACCHINESESIMP, 71). --define(wxFONTENCODING_MACTIBETAN, 72). --define(wxFONTENCODING_MACMONGOLIAN, 73). --define(wxFONTENCODING_MACETHIOPIC, 74). --define(wxFONTENCODING_MACCENTRALEUR, 75). --define(wxFONTENCODING_MACVIATNAMESE, 76). --define(wxFONTENCODING_MACARABICEXT, 77). --define(wxFONTENCODING_MACSYMBOL, 78). --define(wxFONTENCODING_MACDINGBATS, 79). --define(wxFONTENCODING_MACTURKISH, 80). --define(wxFONTENCODING_MACCROATIAN, 81). --define(wxFONTENCODING_MACICELANDIC, 82). --define(wxFONTENCODING_MACROMANIAN, 83). --define(wxFONTENCODING_MACCELTIC, 84). --define(wxFONTENCODING_MACGAELIC, 85). --define(wxFONTENCODING_MACKEYBOARD, 86). --define(wxFONTENCODING_MAX, 87). --define(wxFONTENCODING_MACMIN, ?wxFONTENCODING_MACROMAN). --define(wxFONTENCODING_MACMAX, ?wxFONTENCODING_MACKEYBOARD). --define(wxFONTENCODING_UTF16, wxe_util:get_const(wxFONTENCODING_UTF16)). --define(wxFONTENCODING_UTF32, wxe_util:get_const(wxFONTENCODING_UTF32)). --define(wxFONTENCODING_UNICODE, ?wxFONTENCODING_UTF32). --define(wxFONTENCODING_GB2312, ?wxFONTENCODING_CP936). --define(wxFONTENCODING_BIG5, ?wxFONTENCODING_CP950). --define(wxFONTENCODING_SHIFT_JIS, ?wxFONTENCODING_CP932). -% Type wxFontFamily --define(wxFONTFAMILY_DEFAULT, ?wxDEFAULT). --define(wxFONTFAMILY_DECORATIVE, ?wxDECORATIVE). --define(wxFONTFAMILY_ROMAN, ?wxROMAN). --define(wxFONTFAMILY_SCRIPT, ?wxSCRIPT). --define(wxFONTFAMILY_SWISS, ?wxSWISS). --define(wxFONTFAMILY_MODERN, ?wxMODERN). --define(wxFONTFAMILY_TELETYPE, ?wxTELETYPE). --define(wxFONTFAMILY_MAX, (?wxTELETYPE+1)). --define(wxFONTFAMILY_UNKNOWN, ?wxFONTFAMILY_MAX). -% Type wxFontStyle --define(wxFONTSTYLE_NORMAL, ?wxNORMAL). --define(wxFONTSTYLE_ITALIC, ?wxITALIC). --define(wxFONTSTYLE_SLANT, ?wxSLANT). --define(wxFONTSTYLE_MAX, (?wxSLANT+1)). -% Type wxFontWeight --define(wxFONTWEIGHT_NORMAL, ?wxNORMAL). --define(wxFONTWEIGHT_LIGHT, ?wxLIGHT). --define(wxFONTWEIGHT_BOLD, ?wxBOLD). --define(wxFONTWEIGHT_MAX, (?wxBOLD+1)). -% Type wxGeometryCentre --define(wxCENTRE, 1). --define(wxCENTER, ?wxCENTRE). -% Type wxHitTest --define(wxHT_NOWHERE, 0). --define(wxHT_SCROLLBAR_FIRST, ?wxHT_NOWHERE). --define(wxHT_SCROLLBAR_ARROW_LINE_1, (?wxHT_NOWHERE+1)). --define(wxHT_SCROLLBAR_ARROW_LINE_2, (?wxHT_NOWHERE+2)). --define(wxHT_SCROLLBAR_ARROW_PAGE_1, (?wxHT_NOWHERE+3)). --define(wxHT_SCROLLBAR_ARROW_PAGE_2, (?wxHT_NOWHERE+4)). --define(wxHT_SCROLLBAR_THUMB, (?wxHT_NOWHERE+5)). --define(wxHT_SCROLLBAR_BAR_1, (?wxHT_NOWHERE+6)). --define(wxHT_SCROLLBAR_BAR_2, (?wxHT_NOWHERE+7)). --define(wxHT_SCROLLBAR_LAST, (?wxHT_NOWHERE+8)). --define(wxHT_WINDOW_OUTSIDE, (?wxHT_NOWHERE+9)). --define(wxHT_WINDOW_INSIDE, (?wxHT_NOWHERE+10)). --define(wxHT_WINDOW_VERT_SCROLLBAR, (?wxHT_NOWHERE+11)). --define(wxHT_WINDOW_HORZ_SCROLLBAR, (?wxHT_NOWHERE+12)). --define(wxHT_WINDOW_CORNER, (?wxHT_NOWHERE+13)). --define(wxHT_MAX, (?wxHT_NOWHERE+14)). -% Type wxHtmlOpeningStatus --define(wxHTML_OPEN, 0). --define(wxHTML_BLOCK, 1). --define(wxHTML_REDIRECT, 2). -% Type wxIdleMode --define(wxIDLE_PROCESS_ALL, 0). --define(wxIDLE_PROCESS_SPECIFIED, 1). -% Type wxItemKind --define(wxITEM_SEPARATOR, -1). --define(wxITEM_NORMAL, 0). --define(wxITEM_CHECK, 1). --define(wxITEM_RADIO, 2). --define(wxITEM_MAX, 3). -% Type wxKeyCode --define(WXK_BACK, 8). --define(WXK_TAB, 9). --define(WXK_RETURN, 13). --define(WXK_ESCAPE, 27). --define(WXK_SPACE, 32). --define(WXK_DELETE, 127). --define(WXK_START, 300). --define(WXK_LBUTTON, 301). --define(WXK_RBUTTON, 302). --define(WXK_CANCEL, 303). --define(WXK_MBUTTON, 304). --define(WXK_CLEAR, 305). --define(WXK_SHIFT, 306). --define(WXK_ALT, 307). --define(WXK_CONTROL, 308). --define(WXK_MENU, 309). --define(WXK_PAUSE, 310). --define(WXK_CAPITAL, 311). --define(WXK_END, 312). --define(WXK_HOME, 313). --define(WXK_LEFT, 314). --define(WXK_UP, 315). --define(WXK_RIGHT, 316). --define(WXK_DOWN, 317). --define(WXK_SELECT, 318). --define(WXK_PRINT, 319). --define(WXK_EXECUTE, 320). --define(WXK_SNAPSHOT, 321). --define(WXK_INSERT, 322). --define(WXK_HELP, 323). --define(WXK_NUMPAD0, 324). --define(WXK_NUMPAD1, 325). --define(WXK_NUMPAD2, 326). --define(WXK_NUMPAD3, 327). --define(WXK_NUMPAD4, 328). --define(WXK_NUMPAD5, 329). --define(WXK_NUMPAD6, 330). --define(WXK_NUMPAD7, 331). --define(WXK_NUMPAD8, 332). --define(WXK_NUMPAD9, 333). --define(WXK_MULTIPLY, 334). --define(WXK_ADD, 335). --define(WXK_SEPARATOR, 336). --define(WXK_SUBTRACT, 337). --define(WXK_DECIMAL, 338). --define(WXK_DIVIDE, 339). --define(WXK_F1, 340). --define(WXK_F2, 341). --define(WXK_F3, 342). --define(WXK_F4, 343). --define(WXK_F5, 344). --define(WXK_F6, 345). --define(WXK_F7, 346). --define(WXK_F8, 347). --define(WXK_F9, 348). --define(WXK_F10, 349). --define(WXK_F11, 350). --define(WXK_F12, 351). --define(WXK_F13, 352). --define(WXK_F14, 353). --define(WXK_F15, 354). --define(WXK_F16, 355). --define(WXK_F17, 356). --define(WXK_F18, 357). --define(WXK_F19, 358). --define(WXK_F20, 359). --define(WXK_F21, 360). --define(WXK_F22, 361). --define(WXK_F23, 362). --define(WXK_F24, 363). --define(WXK_NUMLOCK, 364). --define(WXK_SCROLL, 365). --define(WXK_PAGEUP, 366). --define(WXK_PAGEDOWN, 367). --define(WXK_NUMPAD_SPACE, 368). --define(WXK_NUMPAD_TAB, 369). --define(WXK_NUMPAD_ENTER, 370). --define(WXK_NUMPAD_F1, 371). --define(WXK_NUMPAD_F2, 372). --define(WXK_NUMPAD_F3, 373). --define(WXK_NUMPAD_F4, 374). --define(WXK_NUMPAD_HOME, 375). --define(WXK_NUMPAD_LEFT, 376). --define(WXK_NUMPAD_UP, 377). --define(WXK_NUMPAD_RIGHT, 378). --define(WXK_NUMPAD_DOWN, 379). --define(WXK_NUMPAD_PAGEUP, 380). --define(WXK_NUMPAD_PAGEDOWN, 381). --define(WXK_NUMPAD_END, 382). --define(WXK_NUMPAD_BEGIN, 383). --define(WXK_NUMPAD_INSERT, 384). --define(WXK_NUMPAD_DELETE, 385). --define(WXK_NUMPAD_EQUAL, 386). --define(WXK_NUMPAD_MULTIPLY, 387). --define(WXK_NUMPAD_ADD, 388). --define(WXK_NUMPAD_SEPARATOR, 389). --define(WXK_NUMPAD_SUBTRACT, 390). --define(WXK_NUMPAD_DECIMAL, 391). --define(WXK_NUMPAD_DIVIDE, 392). --define(WXK_WINDOWS_LEFT, 393). --define(WXK_WINDOWS_RIGHT, 394). --define(WXK_WINDOWS_MENU, 395). --define(WXK_COMMAND, 396). --define(WXK_SPECIAL1, 193). --define(WXK_SPECIAL2, 194). --define(WXK_SPECIAL3, 195). --define(WXK_SPECIAL4, 196). --define(WXK_SPECIAL5, 197). --define(WXK_SPECIAL6, 198). --define(WXK_SPECIAL7, 199). --define(WXK_SPECIAL8, 200). --define(WXK_SPECIAL9, 201). --define(WXK_SPECIAL10, 202). --define(WXK_SPECIAL11, 203). --define(WXK_SPECIAL12, 204). --define(WXK_SPECIAL13, 205). --define(WXK_SPECIAL14, 206). --define(WXK_SPECIAL15, 207). --define(WXK_SPECIAL16, 208). --define(WXK_SPECIAL17, 209). --define(WXK_SPECIAL18, 210). --define(WXK_SPECIAL19, 211). --define(WXK_SPECIAL20, 212). -% Type wxKeyModifier --define(wxMOD_NONE, 0). --define(wxMOD_ALT, 1). --define(wxMOD_CONTROL, 2). --define(wxMOD_ALTGR, (?wxMOD_ALT bor ?wxMOD_CONTROL)). --define(wxMOD_SHIFT, 4). --define(wxMOD_META, 8). --define(wxMOD_WIN, ?wxMOD_META). --define(wxMOD_CMD, wxe_util:get_const(wxMOD_CMD)). --define(wxMOD_ALL, 65535). -% Type wxKeyType --define(wxKEY_NONE, 0). --define(wxKEY_INTEGER, 1). --define(wxKEY_STRING, 2). -% Type wxKillError +% From "utils.h": wxKillError -define(wxKILL_OK, 0). -define(wxKILL_BAD_SIGNAL, 1). -define(wxKILL_ACCESS_DENIED, 2). -define(wxKILL_NO_PROCESS, 3). -define(wxKILL_ERROR, 4). -% Type wxKillFlags +% From "utils.h": wxKillFlags -define(wxKILL_NOCHILDREN, 0). -define(wxKILL_CHILDREN, 1). -% Type wxLayoutAlignment --define(wxLAYOUT_NONE, 0). --define(wxLAYOUT_TOP, 1). --define(wxLAYOUT_LEFT, 2). --define(wxLAYOUT_RIGHT, 3). --define(wxLAYOUT_BOTTOM, 4). -% Type wxLayoutDirection --define(wxLayout_Default, 0). --define(wxLayout_LeftToRight, 1). --define(wxLayout_RightToLeft, 2). -% Type wxLayoutOrientation --define(wxLAYOUT_HORIZONTAL, 0). --define(wxLAYOUT_VERTICAL, 1). -% Type wxListColumnFormat --define(wxLIST_FORMAT_LEFT, 0). --define(wxLIST_FORMAT_RIGHT, 1). --define(wxLIST_FORMAT_CENTRE, 2). --define(wxLIST_FORMAT_CENTER, ?wxLIST_FORMAT_CENTRE). -% Type wxNotificationOptions --define(wxNOTIFY_NONE, 0). --define(wxNOTIFY_ONCE, 1). --define(wxNOTIFY_REPEAT, 2). -% Type wxOrientation --define(wxHORIZONTAL, 4). --define(wxVERTICAL, 8). --define(wxBOTH, (?wxVERTICAL bor ?wxHORIZONTAL)). -% Type wxPaperSize --define(wxPAPER_NONE, 0). --define(wxPAPER_LETTER, 1). --define(wxPAPER_LEGAL, 2). --define(wxPAPER_A4, 3). --define(wxPAPER_CSHEET, 4). --define(wxPAPER_DSHEET, 5). --define(wxPAPER_ESHEET, 6). --define(wxPAPER_LETTERSMALL, 7). --define(wxPAPER_TABLOID, 8). --define(wxPAPER_LEDGER, 9). --define(wxPAPER_STATEMENT, 10). --define(wxPAPER_EXECUTIVE, 11). --define(wxPAPER_A3, 12). --define(wxPAPER_A4SMALL, 13). --define(wxPAPER_A5, 14). --define(wxPAPER_B4, 15). --define(wxPAPER_B5, 16). --define(wxPAPER_FOLIO, 17). --define(wxPAPER_QUARTO, 18). --define(wxPAPER_10X14, 19). --define(wxPAPER_11X17, 20). --define(wxPAPER_NOTE, 21). --define(wxPAPER_ENV_9, 22). --define(wxPAPER_ENV_10, 23). --define(wxPAPER_ENV_11, 24). --define(wxPAPER_ENV_12, 25). --define(wxPAPER_ENV_14, 26). --define(wxPAPER_ENV_DL, 27). --define(wxPAPER_ENV_C5, 28). --define(wxPAPER_ENV_C3, 29). --define(wxPAPER_ENV_C4, 30). --define(wxPAPER_ENV_C6, 31). --define(wxPAPER_ENV_C65, 32). --define(wxPAPER_ENV_B4, 33). --define(wxPAPER_ENV_B5, 34). --define(wxPAPER_ENV_B6, 35). --define(wxPAPER_ENV_ITALY, 36). --define(wxPAPER_ENV_MONARCH, 37). --define(wxPAPER_ENV_PERSONAL, 38). --define(wxPAPER_FANFOLD_US, 39). --define(wxPAPER_FANFOLD_STD_GERMAN, 40). --define(wxPAPER_FANFOLD_LGL_GERMAN, 41). --define(wxPAPER_ISO_B4, 42). --define(wxPAPER_JAPANESE_POSTCARD, 43). --define(wxPAPER_9X11, 44). --define(wxPAPER_10X11, 45). --define(wxPAPER_15X11, 46). --define(wxPAPER_ENV_INVITE, 47). --define(wxPAPER_LETTER_EXTRA, 48). --define(wxPAPER_LEGAL_EXTRA, 49). --define(wxPAPER_TABLOID_EXTRA, 50). --define(wxPAPER_A4_EXTRA, 51). --define(wxPAPER_LETTER_TRANSVERSE, 52). --define(wxPAPER_A4_TRANSVERSE, 53). --define(wxPAPER_LETTER_EXTRA_TRANSVERSE, 54). --define(wxPAPER_A_PLUS, 55). --define(wxPAPER_B_PLUS, 56). --define(wxPAPER_LETTER_PLUS, 57). --define(wxPAPER_A4_PLUS, 58). --define(wxPAPER_A5_TRANSVERSE, 59). --define(wxPAPER_B5_TRANSVERSE, 60). --define(wxPAPER_A3_EXTRA, 61). --define(wxPAPER_A5_EXTRA, 62). --define(wxPAPER_B5_EXTRA, 63). --define(wxPAPER_A2, 64). --define(wxPAPER_A3_TRANSVERSE, 65). --define(wxPAPER_A3_EXTRA_TRANSVERSE, 66). --define(wxPAPER_DBL_JAPANESE_POSTCARD, 67). --define(wxPAPER_A6, 68). --define(wxPAPER_JENV_KAKU2, 69). --define(wxPAPER_JENV_KAKU3, 70). --define(wxPAPER_JENV_CHOU3, 71). --define(wxPAPER_JENV_CHOU4, 72). --define(wxPAPER_LETTER_ROTATED, 73). --define(wxPAPER_A3_ROTATED, 74). --define(wxPAPER_A4_ROTATED, 75). --define(wxPAPER_A5_ROTATED, 76). --define(wxPAPER_B4_JIS_ROTATED, 77). --define(wxPAPER_B5_JIS_ROTATED, 78). --define(wxPAPER_JAPANESE_POSTCARD_ROTATED, 79). --define(wxPAPER_DBL_JAPANESE_POSTCARD_ROTATED, 80). --define(wxPAPER_A6_ROTATED, 81). --define(wxPAPER_JENV_KAKU2_ROTATED, 82). --define(wxPAPER_JENV_KAKU3_ROTATED, 83). --define(wxPAPER_JENV_CHOU3_ROTATED, 84). --define(wxPAPER_JENV_CHOU4_ROTATED, 85). --define(wxPAPER_B6_JIS, 86). --define(wxPAPER_B6_JIS_ROTATED, 87). --define(wxPAPER_12X11, 88). --define(wxPAPER_JENV_YOU4, 89). --define(wxPAPER_JENV_YOU4_ROTATED, 90). --define(wxPAPER_P16K, 91). --define(wxPAPER_P32K, 92). --define(wxPAPER_P32KBIG, 93). --define(wxPAPER_PENV_1, 94). --define(wxPAPER_PENV_2, 95). --define(wxPAPER_PENV_3, 96). --define(wxPAPER_PENV_4, 97). --define(wxPAPER_PENV_5, 98). --define(wxPAPER_PENV_6, 99). --define(wxPAPER_PENV_7, 100). --define(wxPAPER_PENV_8, 101). --define(wxPAPER_PENV_9, 102). --define(wxPAPER_PENV_10, 103). --define(wxPAPER_P16K_ROTATED, 104). --define(wxPAPER_P32K_ROTATED, 105). --define(wxPAPER_P32KBIG_ROTATED, 106). --define(wxPAPER_PENV_1_ROTATED, 107). --define(wxPAPER_PENV_2_ROTATED, 108). --define(wxPAPER_PENV_3_ROTATED, 109). --define(wxPAPER_PENV_4_ROTATED, 110). --define(wxPAPER_PENV_5_ROTATED, 111). --define(wxPAPER_PENV_6_ROTATED, 112). --define(wxPAPER_PENV_7_ROTATED, 113). --define(wxPAPER_PENV_8_ROTATED, 114). --define(wxPAPER_PENV_9_ROTATED, 115). --define(wxPAPER_PENV_10_ROTATED, 116). -% Type wxPrintBin --define(wxPRINTBIN_DEFAULT, 0). --define(wxPRINTBIN_ONLYONE, 1). --define(wxPRINTBIN_LOWER, 2). --define(wxPRINTBIN_MIDDLE, 3). --define(wxPRINTBIN_MANUAL, 4). --define(wxPRINTBIN_ENVELOPE, 5). --define(wxPRINTBIN_ENVMANUAL, 6). --define(wxPRINTBIN_AUTO, 7). --define(wxPRINTBIN_TRACTOR, 8). --define(wxPRINTBIN_SMALLFMT, 9). --define(wxPRINTBIN_LARGEFMT, 10). --define(wxPRINTBIN_LARGECAPACITY, 11). --define(wxPRINTBIN_CASSETTE, 12). --define(wxPRINTBIN_FORMSOURCE, 13). --define(wxPRINTBIN_USER, 14). -% Type wxPrintMode --define(wxPRINT_MODE_NONE, 0). --define(wxPRINT_MODE_PREVIEW, 1). --define(wxPRINT_MODE_FILE, 2). --define(wxPRINT_MODE_PRINTER, 3). --define(wxPRINT_MODE_STREAM, 4). -% Type wxPrinterError --define(wxPRINTER_NO_ERROR, 0). --define(wxPRINTER_CANCELLED, 1). --define(wxPRINTER_ERROR, 2). -% Type wxRegionContain --define(wxOutRegion, 0). --define(wxPartRegion, 1). --define(wxInRegion, 2). -% Type wxRegionOp --define(wxRGN_AND, 0). --define(wxRGN_COPY, 1). --define(wxRGN_DIFF, 2). --define(wxRGN_OR, 3). --define(wxRGN_XOR, 4). -% Type wxRelationship --define(wxUnconstrained, 0). --define(wxAsIs, 1). --define(wxPercentOf, 2). --define(wxAbove, 3). --define(wxBelow, 4). --define(wxLeftOf, 5). --define(wxRightOf, 6). --define(wxSameAs, 7). --define(wxAbsolute, 8). -% Type wxSashDragStatus --define(wxSASH_STATUS_OK, 0). --define(wxSASH_STATUS_OUT_OF_RANGE, 1). -% Type wxSashEdgePosition --define(wxSASH_TOP, 0). --define(wxSASH_RIGHT, 1). --define(wxSASH_BOTTOM, 2). --define(wxSASH_LEFT, 3). --define(wxSASH_NONE, 100). -% Type wxShutdownFlags +% From "utils.h": wxShutdownFlags -define(wxSHUTDOWN_POWEROFF, 0). -define(wxSHUTDOWN_REBOOT, 1). -% Type wxSignal +% From "utils.h": wxSignal -define(wxSIGNONE, 0). -define(wxSIGHUP, 1). -define(wxSIGINT, 2). @@ -3540,185 +3733,29 @@ -define(wxSIGPIPE, (?wxSIGABRT+7)). -define(wxSIGALRM, (?wxSIGABRT+8)). -define(wxSIGTERM, (?wxSIGABRT+9)). -% Type wxSplitMode --define(wxSPLIT_HORIZONTAL, 1). --define(wxSPLIT_VERTICAL, 2). -% Type wxStockCursor --define(wxCURSOR_NONE, 0). --define(wxCURSOR_ARROW, 1). --define(wxCURSOR_RIGHT_ARROW, 2). --define(wxCURSOR_BULLSEYE, 3). --define(wxCURSOR_CHAR, 4). --define(wxCURSOR_CROSS, 5). --define(wxCURSOR_HAND, 6). --define(wxCURSOR_IBEAM, 7). --define(wxCURSOR_LEFT_BUTTON, 8). --define(wxCURSOR_MAGNIFIER, 9). --define(wxCURSOR_MIDDLE_BUTTON, 10). --define(wxCURSOR_NO_ENTRY, 11). --define(wxCURSOR_PAINT_BRUSH, 12). --define(wxCURSOR_PENCIL, 13). --define(wxCURSOR_POINT_LEFT, 14). --define(wxCURSOR_POINT_RIGHT, 15). --define(wxCURSOR_QUESTION_ARROW, 16). --define(wxCURSOR_RIGHT_BUTTON, 17). --define(wxCURSOR_SIZENESW, 18). --define(wxCURSOR_SIZENS, 19). --define(wxCURSOR_SIZENWSE, 20). --define(wxCURSOR_SIZEWE, 21). --define(wxCURSOR_SIZING, 22). --define(wxCURSOR_SPRAYCAN, 23). --define(wxCURSOR_WAIT, 24). --define(wxCURSOR_WATCH, 25). --define(wxCURSOR_BLANK, 26). --define(wxCURSOR_DEFAULT, 27). --define(wxCURSOR_ARROWWAIT, 28). --define(wxCURSOR_MAX, 29). -% Type wxStretch --define(wxSTRETCH_NOT, 0). --define(wxSHRINK, 4096). --define(wxGROW, 8192). --define(wxEXPAND, ?wxGROW). --define(wxSHAPED, 16384). --define(wxFIXED_MINSIZE, 32768). --define(wxRESERVE_SPACE_EVEN_IF_HIDDEN, 2). --define(wxTILE, 49152). --define(wxADJUST_MINSIZE, 0). -% Type wxSystemColour --define(wxSYS_COLOUR_SCROLLBAR, 0). --define(wxSYS_COLOUR_BACKGROUND, 1). --define(wxSYS_COLOUR_DESKTOP, ?wxSYS_COLOUR_BACKGROUND). --define(wxSYS_COLOUR_ACTIVECAPTION, (?wxSYS_COLOUR_BACKGROUND+1)). --define(wxSYS_COLOUR_INACTIVECAPTION, (?wxSYS_COLOUR_BACKGROUND+2)). --define(wxSYS_COLOUR_MENU, (?wxSYS_COLOUR_BACKGROUND+3)). --define(wxSYS_COLOUR_WINDOW, (?wxSYS_COLOUR_BACKGROUND+4)). --define(wxSYS_COLOUR_WINDOWFRAME, (?wxSYS_COLOUR_BACKGROUND+5)). --define(wxSYS_COLOUR_MENUTEXT, (?wxSYS_COLOUR_BACKGROUND+6)). --define(wxSYS_COLOUR_WINDOWTEXT, (?wxSYS_COLOUR_BACKGROUND+7)). --define(wxSYS_COLOUR_CAPTIONTEXT, (?wxSYS_COLOUR_BACKGROUND+8)). --define(wxSYS_COLOUR_ACTIVEBORDER, (?wxSYS_COLOUR_BACKGROUND+9)). --define(wxSYS_COLOUR_INACTIVEBORDER, (?wxSYS_COLOUR_BACKGROUND+10)). --define(wxSYS_COLOUR_APPWORKSPACE, (?wxSYS_COLOUR_BACKGROUND+11)). --define(wxSYS_COLOUR_HIGHLIGHT, (?wxSYS_COLOUR_BACKGROUND+12)). --define(wxSYS_COLOUR_HIGHLIGHTTEXT, (?wxSYS_COLOUR_BACKGROUND+13)). --define(wxSYS_COLOUR_BTNFACE, (?wxSYS_COLOUR_BACKGROUND+14)). --define(wxSYS_COLOUR_3DFACE, ?wxSYS_COLOUR_BTNFACE). --define(wxSYS_COLOUR_BTNSHADOW, (?wxSYS_COLOUR_BTNFACE+1)). --define(wxSYS_COLOUR_3DSHADOW, ?wxSYS_COLOUR_BTNSHADOW). --define(wxSYS_COLOUR_GRAYTEXT, (?wxSYS_COLOUR_BTNSHADOW+1)). --define(wxSYS_COLOUR_BTNTEXT, (?wxSYS_COLOUR_BTNSHADOW+2)). --define(wxSYS_COLOUR_INACTIVECAPTIONTEXT, (?wxSYS_COLOUR_BTNSHADOW+3)). --define(wxSYS_COLOUR_BTNHIGHLIGHT, (?wxSYS_COLOUR_BTNSHADOW+4)). --define(wxSYS_COLOUR_BTNHILIGHT, ?wxSYS_COLOUR_BTNHIGHLIGHT). --define(wxSYS_COLOUR_3DHIGHLIGHT, ?wxSYS_COLOUR_BTNHIGHLIGHT). --define(wxSYS_COLOUR_3DHILIGHT, ?wxSYS_COLOUR_BTNHIGHLIGHT). --define(wxSYS_COLOUR_3DDKSHADOW, (?wxSYS_COLOUR_BTNHIGHLIGHT+1)). --define(wxSYS_COLOUR_3DLIGHT, (?wxSYS_COLOUR_BTNHIGHLIGHT+2)). --define(wxSYS_COLOUR_INFOTEXT, (?wxSYS_COLOUR_BTNHIGHLIGHT+3)). --define(wxSYS_COLOUR_INFOBK, (?wxSYS_COLOUR_BTNHIGHLIGHT+4)). --define(wxSYS_COLOUR_LISTBOX, (?wxSYS_COLOUR_BTNHIGHLIGHT+5)). --define(wxSYS_COLOUR_HOTLIGHT, (?wxSYS_COLOUR_BTNHIGHLIGHT+6)). --define(wxSYS_COLOUR_GRADIENTACTIVECAPTION, (?wxSYS_COLOUR_BTNHIGHLIGHT+7)). --define(wxSYS_COLOUR_GRADIENTINACTIVECAPTION, (?wxSYS_COLOUR_BTNHIGHLIGHT+8)). --define(wxSYS_COLOUR_MENUHILIGHT, (?wxSYS_COLOUR_BTNHIGHLIGHT+9)). --define(wxSYS_COLOUR_MENUBAR, (?wxSYS_COLOUR_BTNHIGHLIGHT+10)). --define(wxSYS_COLOUR_LISTBOXTEXT, (?wxSYS_COLOUR_BTNHIGHLIGHT+11)). --define(wxSYS_COLOUR_MAX, (?wxSYS_COLOUR_BTNHIGHLIGHT+12)). -% Type wxSystemFeature --define(wxSYS_CAN_DRAW_FRAME_DECORATIONS, 1). --define(wxSYS_CAN_ICONIZE_FRAME, 2). --define(wxSYS_TABLET_PRESENT, 3). -% Type wxSystemFont --define(wxSYS_OEM_FIXED_FONT, 10). --define(wxSYS_ANSI_FIXED_FONT, 11). --define(wxSYS_ANSI_VAR_FONT, 12). --define(wxSYS_SYSTEM_FONT, 13). --define(wxSYS_DEVICE_DEFAULT_FONT, 14). --define(wxSYS_DEFAULT_PALETTE, 15). --define(wxSYS_SYSTEM_FIXED_FONT, 16). --define(wxSYS_DEFAULT_GUI_FONT, 17). --define(wxSYS_ICONTITLE_FONT, ?wxSYS_DEFAULT_GUI_FONT). -% Type wxSystemMetric --define(wxSYS_MOUSE_BUTTONS, 1). --define(wxSYS_BORDER_X, 2). --define(wxSYS_BORDER_Y, 3). --define(wxSYS_CURSOR_X, 4). --define(wxSYS_CURSOR_Y, 5). --define(wxSYS_DCLICK_X, 6). --define(wxSYS_DCLICK_Y, 7). --define(wxSYS_DRAG_X, 8). --define(wxSYS_DRAG_Y, 9). --define(wxSYS_EDGE_X, 10). --define(wxSYS_EDGE_Y, 11). --define(wxSYS_HSCROLL_ARROW_X, 12). --define(wxSYS_HSCROLL_ARROW_Y, 13). --define(wxSYS_HTHUMB_X, 14). --define(wxSYS_ICON_X, 15). --define(wxSYS_ICON_Y, 16). --define(wxSYS_ICONSPACING_X, 17). --define(wxSYS_ICONSPACING_Y, 18). --define(wxSYS_WINDOWMIN_X, 19). --define(wxSYS_WINDOWMIN_Y, 20). --define(wxSYS_SCREEN_X, 21). --define(wxSYS_SCREEN_Y, 22). --define(wxSYS_FRAMESIZE_X, 23). --define(wxSYS_FRAMESIZE_Y, 24). --define(wxSYS_SMALLICON_X, 25). --define(wxSYS_SMALLICON_Y, 26). --define(wxSYS_HSCROLL_Y, 27). --define(wxSYS_VSCROLL_X, 28). --define(wxSYS_VSCROLL_ARROW_X, 29). --define(wxSYS_VSCROLL_ARROW_Y, 30). --define(wxSYS_VTHUMB_Y, 31). --define(wxSYS_CAPTION_Y, 32). --define(wxSYS_MENU_Y, 33). --define(wxSYS_NETWORK_PRESENT, 34). --define(wxSYS_PENWINDOWS_PRESENT, 35). --define(wxSYS_SHOW_SOUNDS, 36). --define(wxSYS_SWAP_BUTTONS, 37). -% Type wxSystemScreenType --define(wxSYS_SCREEN_NONE, 0). --define(wxSYS_SCREEN_TINY, 1). --define(wxSYS_SCREEN_PDA, 2). --define(wxSYS_SCREEN_SMALL, 3). --define(wxSYS_SCREEN_DESKTOP, 4). -% Type wxTextAttrAlignment --define(wxTEXT_ALIGNMENT_DEFAULT, 0). --define(wxTEXT_ALIGNMENT_LEFT, 1). --define(wxTEXT_ALIGNMENT_CENTRE, 2). --define(wxTEXT_ALIGNMENT_CENTER, ?wxTEXT_ALIGNMENT_CENTRE). --define(wxTEXT_ALIGNMENT_RIGHT, (?wxTEXT_ALIGNMENT_CENTRE+1)). --define(wxTEXT_ALIGNMENT_JUSTIFIED, (?wxTEXT_ALIGNMENT_CENTRE+2)). -% Type wxTextCtrlHitTestResult --define(wxTE_HT_UNKNOWN, -2). --define(wxTE_HT_BEFORE, -1). --define(wxTE_HT_ON_TEXT, 0). --define(wxTE_HT_BELOW, 1). --define(wxTE_HT_BEYOND, 2). -% Type wxToolBarToolStyle --define(wxTOOL_STYLE_BUTTON, 1). --define(wxTOOL_STYLE_SEPARATOR, 2). --define(wxTOOL_STYLE_CONTROL, 3). -% Type wxTreeItemIcon --define(wxTreeItemIcon_Normal, 0). --define(wxTreeItemIcon_Selected, 1). --define(wxTreeItemIcon_Expanded, 2). --define(wxTreeItemIcon_SelectedExpanded, 3). --define(wxTreeItemIcon_Max, 4). -% Type wxUpdateUI --define(wxUPDATE_UI_NONE, 0). --define(wxUPDATE_UI_RECURSE, 1). --define(wxUPDATE_UI_FROMIDLE, 2). -% Type wxUpdateUIMode --define(wxUPDATE_UI_PROCESS_ALL, 0). --define(wxUPDATE_UI_PROCESS_SPECIFIED, 1). -% Type wxWindowVariant +% From "valtext.h" +-define(wxFILTER_EXCLUDE_CHAR_LIST, 128). +-define(wxFILTER_INCLUDE_CHAR_LIST, 64). +-define(wxFILTER_EXCLUDE_LIST, 32). +-define(wxFILTER_INCLUDE_LIST, 16). +-define(wxFILTER_NUMERIC, 8). +-define(wxFILTER_ALPHANUMERIC, 4). +-define(wxFILTER_ALPHA, 2). +-define(wxFILTER_ASCII, 1). +-define(wxFILTER_NONE, 0). +% From "version.h" +-define(wxBETA_NUMBER, wxe_util:get_const(wxBETA_NUMBER)). +-define(wxSUBRELEASE_NUMBER, wxe_util:get_const(wxSUBRELEASE_NUMBER)). +-define(wxRELEASE_NUMBER, wxe_util:get_const(wxRELEASE_NUMBER)). +-define(wxMINOR_VERSION, wxe_util:get_const(wxMINOR_VERSION)). +-define(wxMAJOR_VERSION, wxe_util:get_const(wxMAJOR_VERSION)). +% From "window.h": wxWindowVariant -define(wxWINDOW_VARIANT_NORMAL, 0). -define(wxWINDOW_VARIANT_SMALL, 1). -define(wxWINDOW_VARIANT_MINI, 2). -define(wxWINDOW_VARIANT_LARGE, 3). -define(wxWINDOW_VARIANT_MAX, 4). -% Type wxXmlResourceFlags +% From "xmlres.h": wxXmlResourceFlags -define(wxXRC_USE_LOCALE, 1). -define(wxXRC_NO_SUBCLASSING, 2). -define(wxXRC_NO_RELOADING, 4). diff --git a/lib/wx/src/gen/gl.erl b/lib/wx/src/gen/gl.erl index d789f1b72f..62d0ff6aed 100644 --- a/lib/wx/src/gen/gl.erl +++ b/lib/wx/src/gen/gl.erl @@ -20,15 +20,15 @@ %% This file is generated DO NOT EDIT -%% @doc Standard OpenGL api. +%% @doc Standard OpenGL api. %% See <a href="http://www.opengl.org/sdk/docs/man/">www.opengl.org</a> %% -%% Booleans are represented by integers 0 and 1. +%% Booleans are represented by integers 0 and 1. %% @type wx_mem(). see wx.erl on memory allocation functions %% @type enum(). An integer defined in gl.hrl %% @type offset(). An integer which is an offset in an array -%% @type clamp(). A float clamped between 0.0 - 1.0 +%% @type clamp(). A float clamped between 0.0 - 1.0 -module(gl). -compile(inline). @@ -216,7 +216,7 @@ stencilClearTagEXT/2]). -%% API +%% API %% @spec (Op::enum(),Value::float()) -> ok %% @doc See <a href="http://www.opengl.org/sdk/docs/man/xhtml/glAccum.xml">external</a> documentation. diff --git a/lib/wx/src/gen/gl_debug.hrl b/lib/wx/src/gen/gl_debug.hrl index 68225197cf..0b8086f24e 100644 --- a/lib/wx/src/gen/gl_debug.hrl +++ b/lib/wx/src/gen/gl_debug.hrl @@ -17,7 +17,7 @@ %% %CopyrightEnd% %% This file is generated DO NOT EDIT -gldebug_table() -> +gldebug_table() -> [ {5037, {gl, accum, 0}}, {5038, {gl, alphaFunc, 0}}, diff --git a/lib/wx/src/gen/glu.erl b/lib/wx/src/gen/glu.erl index ae4bac4e06..d410c4663d 100644 --- a/lib/wx/src/gen/glu.erl +++ b/lib/wx/src/gen/glu.erl @@ -20,15 +20,15 @@ %% This file is generated DO NOT EDIT -%% @doc A part of the standard OpenGL Utility api. +%% @doc A part of the standard OpenGL Utility api. %% See <a href="http://www.opengl.org/sdk/docs/man/">www.opengl.org</a> %% -%% Booleans are represented by integers 0 and 1. +%% Booleans are represented by integers 0 and 1. %% @type wx_mem(). see wx.erl on memory allocation functions %% @type enum(). An integer defined in gl.hrl %% @type offset(). An integer which is an offset in an array -%% @type clamp(). A float clamped between 0.0 - 1.0 +%% @type clamp(). A float clamped between 0.0 - 1.0 -module(glu). -compile(inline). @@ -60,7 +60,7 @@ scaleImage/9,sphere/4,unProject/6,unProject4/9]). -%% API +%% API %% @spec (Vec3, [Vec3]) -> {Triangles, VertexPos} %% Vec3 = {float(),float(),float()} @@ -69,8 +69,8 @@ %% @doc General purpose polygon triangulation. %% The first argument is the normal and the second a list of %% vertex positions. Returned is a list of indecies of the vertices -%% and a binary (64bit native float) containing an array of -%% vertex positions, it starts with the vertices in Vs and +%% and a binary (64bit native float) containing an array of +%% vertex positions, it starts with the vertices in Vs and %% may contain newly created vertices in the end. tesselate({Nx,Ny,Nz}, Vs) -> wxe_util:call(5000, <<(length(Vs)):32/native,0:32, diff --git a/lib/wx/src/gen/wxe_debug.hrl b/lib/wx/src/gen/wxe_debug.hrl index 68a3b4ccd8..a3416b75c8 100644 --- a/lib/wx/src/gen/wxe_debug.hrl +++ b/lib/wx/src/gen/wxe_debug.hrl @@ -770,2512 +770,2512 @@ wxdebug_table() -> {882, {wxControlWithItems, clear, 0}}, {883, {wxControlWithItems, delete, 1}}, {884, {wxControlWithItems, findString, 2}}, - {886, {wxControlWithItems, getClientData, 1}}, - {888, {wxControlWithItems, setClientData, 2}}, - {889, {wxControlWithItems, getCount, 0}}, - {890, {wxControlWithItems, getSelection, 0}}, - {891, {wxControlWithItems, getString, 1}}, - {892, {wxControlWithItems, getStringSelection, 0}}, - {893, {wxControlWithItems, insert_2, 2}}, - {894, {wxControlWithItems, insert_3, 3}}, - {895, {wxControlWithItems, isEmpty, 0}}, - {896, {wxControlWithItems, select, 1}}, - {897, {wxControlWithItems, setSelection, 1}}, - {898, {wxControlWithItems, setString, 2}}, - {899, {wxControlWithItems, setStringSelection, 1}}, - {902, {wxMenu, new_2, 2}}, - {903, {wxMenu, new_1, 1}}, - {905, {wxMenu, destruct, 0}}, - {906, {wxMenu, append_3, 3}}, - {907, {wxMenu, append_1, 1}}, - {908, {wxMenu, append_4_0, 4}}, - {909, {wxMenu, append_4_1, 4}}, - {910, {wxMenu, appendCheckItem, 3}}, - {911, {wxMenu, appendRadioItem, 3}}, - {912, {wxMenu, appendSeparator, 0}}, - {913, {wxMenu, break, 0}}, - {914, {wxMenu, check, 2}}, - {915, {wxMenu, delete_1_0, 1}}, - {916, {wxMenu, delete_1_1, 1}}, - {917, {wxMenu, destroy_1_0, 1}}, - {918, {wxMenu, destroy_1_1, 1}}, - {919, {wxMenu, enable, 2}}, - {920, {wxMenu, findItem_1, 1}}, - {921, {wxMenu, findItem_2, 2}}, - {922, {wxMenu, findItemByPosition, 1}}, - {923, {wxMenu, getHelpString, 1}}, - {924, {wxMenu, getLabel, 1}}, - {925, {wxMenu, getMenuItemCount, 0}}, - {926, {wxMenu, getMenuItems, 0}}, - {928, {wxMenu, getTitle, 0}}, - {929, {wxMenu, insert_2, 2}}, - {930, {wxMenu, insert_3, 3}}, - {931, {wxMenu, insert_5_1, 5}}, - {932, {wxMenu, insert_5_0, 5}}, - {933, {wxMenu, insertCheckItem, 4}}, - {934, {wxMenu, insertRadioItem, 4}}, - {935, {wxMenu, insertSeparator, 1}}, - {936, {wxMenu, isChecked, 1}}, - {937, {wxMenu, isEnabled, 1}}, - {938, {wxMenu, prepend_1, 1}}, - {939, {wxMenu, prepend_2, 2}}, - {940, {wxMenu, prepend_4_1, 4}}, - {941, {wxMenu, prepend_4_0, 4}}, - {942, {wxMenu, prependCheckItem, 3}}, - {943, {wxMenu, prependRadioItem, 3}}, - {944, {wxMenu, prependSeparator, 0}}, - {945, {wxMenu, remove_1_0, 1}}, - {946, {wxMenu, remove_1_1, 1}}, - {947, {wxMenu, setHelpString, 2}}, - {948, {wxMenu, setLabel, 2}}, - {949, {wxMenu, setTitle, 1}}, - {950, {wxMenuItem, new, 1}}, - {952, {wxMenuItem, destruct, 0}}, - {953, {wxMenuItem, check, 1}}, - {954, {wxMenuItem, enable, 1}}, - {955, {wxMenuItem, getBitmap, 0}}, - {956, {wxMenuItem, getHelp, 0}}, - {957, {wxMenuItem, getId, 0}}, - {958, {wxMenuItem, getKind, 0}}, - {959, {wxMenuItem, getLabel, 0}}, - {960, {wxMenuItem, getLabelFromText, 1}}, - {961, {wxMenuItem, getMenu, 0}}, - {962, {wxMenuItem, getText, 0}}, - {963, {wxMenuItem, getSubMenu, 0}}, - {964, {wxMenuItem, isCheckable, 0}}, - {965, {wxMenuItem, isChecked, 0}}, - {966, {wxMenuItem, isEnabled, 0}}, - {967, {wxMenuItem, isSeparator, 0}}, - {968, {wxMenuItem, isSubMenu, 0}}, - {969, {wxMenuItem, setBitmap, 1}}, - {970, {wxMenuItem, setHelp, 1}}, - {971, {wxMenuItem, setMenu, 1}}, - {972, {wxMenuItem, setSubMenu, 1}}, - {973, {wxMenuItem, setText, 1}}, - {974, {wxToolBar, addControl, 1}}, - {975, {wxToolBar, addSeparator, 0}}, - {976, {wxToolBar, addTool_5, 5}}, - {977, {wxToolBar, addTool_4_0, 4}}, - {978, {wxToolBar, addTool_1, 1}}, - {979, {wxToolBar, addTool_4_1, 4}}, - {980, {wxToolBar, addTool_3, 3}}, - {981, {wxToolBar, addTool_6, 6}}, - {982, {wxToolBar, addCheckTool, 4}}, - {983, {wxToolBar, addRadioTool, 4}}, - {984, {wxToolBar, deleteTool, 1}}, - {985, {wxToolBar, deleteToolByPos, 1}}, - {986, {wxToolBar, enableTool, 2}}, - {987, {wxToolBar, findById, 1}}, - {988, {wxToolBar, findControl, 1}}, - {989, {wxToolBar, findToolForPosition, 2}}, - {990, {wxToolBar, getToolSize, 0}}, - {991, {wxToolBar, getToolBitmapSize, 0}}, - {992, {wxToolBar, getMargins, 0}}, - {993, {wxToolBar, getToolEnabled, 1}}, - {994, {wxToolBar, getToolLongHelp, 1}}, - {995, {wxToolBar, getToolPacking, 0}}, - {996, {wxToolBar, getToolPos, 1}}, - {997, {wxToolBar, getToolSeparation, 0}}, - {998, {wxToolBar, getToolShortHelp, 1}}, - {999, {wxToolBar, getToolState, 1}}, - {1000, {wxToolBar, insertControl, 2}}, - {1001, {wxToolBar, insertSeparator, 1}}, - {1002, {wxToolBar, insertTool_5, 5}}, - {1003, {wxToolBar, insertTool_2, 2}}, - {1004, {wxToolBar, insertTool_4, 4}}, - {1005, {wxToolBar, realize, 0}}, - {1006, {wxToolBar, removeTool, 1}}, - {1007, {wxToolBar, setMargins, 2}}, - {1008, {wxToolBar, setToolBitmapSize, 1}}, - {1009, {wxToolBar, setToolLongHelp, 2}}, - {1010, {wxToolBar, setToolPacking, 1}}, - {1011, {wxToolBar, setToolShortHelp, 2}}, - {1012, {wxToolBar, setToolSeparation, 1}}, - {1013, {wxToolBar, toggleTool, 2}}, - {1015, {wxStatusBar, new_0, 0}}, - {1016, {wxStatusBar, new_2, 2}}, - {1018, {wxStatusBar, destruct, 0}}, - {1019, {wxStatusBar, create, 2}}, - {1020, {wxStatusBar, getFieldRect, 2}}, - {1021, {wxStatusBar, getFieldsCount, 0}}, - {1022, {wxStatusBar, getStatusText, 1}}, - {1023, {wxStatusBar, popStatusText, 1}}, - {1024, {wxStatusBar, pushStatusText, 2}}, - {1025, {wxStatusBar, setFieldsCount, 2}}, - {1026, {wxStatusBar, setMinHeight, 1}}, - {1027, {wxStatusBar, setStatusText, 2}}, - {1028, {wxStatusBar, setStatusWidths, 2}}, - {1029, {wxStatusBar, setStatusStyles, 2}}, - {1030, {wxBitmap, new_0, 0}}, - {1031, {wxBitmap, new_3, 3}}, - {1032, {wxBitmap, new_4, 4}}, - {1033, {wxBitmap, new_2_0, 2}}, - {1034, {wxBitmap, new_2_1, 2}}, - {1035, {wxBitmap, destruct, 0}}, - {1036, {wxBitmap, convertToImage, 0}}, - {1037, {wxBitmap, copyFromIcon, 1}}, - {1038, {wxBitmap, create, 3}}, - {1039, {wxBitmap, getDepth, 0}}, - {1040, {wxBitmap, getHeight, 0}}, - {1041, {wxBitmap, getPalette, 0}}, - {1042, {wxBitmap, getMask, 0}}, - {1043, {wxBitmap, getWidth, 0}}, - {1044, {wxBitmap, getSubBitmap, 1}}, - {1045, {wxBitmap, loadFile, 2}}, - {1046, {wxBitmap, ok, 0}}, - {1047, {wxBitmap, saveFile, 3}}, - {1048, {wxBitmap, setDepth, 1}}, - {1049, {wxBitmap, setHeight, 1}}, - {1050, {wxBitmap, setMask, 1}}, - {1051, {wxBitmap, setPalette, 1}}, - {1052, {wxBitmap, setWidth, 1}}, - {1053, {wxIcon, new_0, 0}}, - {1054, {wxIcon, new_2, 2}}, - {1055, {wxIcon, new_1, 1}}, - {1056, {wxIcon, copyFromBitmap, 1}}, - {1057, {wxIcon, 'Destroy', undefined}}, - {1058, {wxIconBundle, new_0, 0}}, - {1059, {wxIconBundle, new_2, 2}}, - {1060, {wxIconBundle, new_1_0, 1}}, - {1061, {wxIconBundle, new_1_1, 1}}, - {1062, {wxIconBundle, destruct, 0}}, - {1063, {wxIconBundle, addIcon_2, 2}}, - {1064, {wxIconBundle, addIcon_1, 1}}, - {1065, {wxIconBundle, getIcon_1_1, 1}}, - {1066, {wxIconBundle, getIcon_1_0, 1}}, - {1067, {wxCursor, new_0, 0}}, - {1068, {wxCursor, new_1_0, 1}}, - {1069, {wxCursor, new_1_1, 1}}, - {1070, {wxCursor, new_4, 4}}, - {1071, {wxCursor, destruct, 0}}, - {1072, {wxCursor, ok, 0}}, - {1073, {wxMask, new_0, 0}}, - {1074, {wxMask, new_2_1, 2}}, - {1075, {wxMask, new_2_0, 2}}, - {1076, {wxMask, new_1, 1}}, - {1077, {wxMask, destruct, 0}}, - {1078, {wxMask, create_2_1, 2}}, - {1079, {wxMask, create_2_0, 2}}, - {1080, {wxMask, create_1, 1}}, - {1081, {wxImage, new_0, 0}}, - {1082, {wxImage, new_3_0, 3}}, - {1083, {wxImage, new_4, 4}}, - {1084, {wxImage, new_5, 5}}, - {1085, {wxImage, new_2, 2}}, - {1086, {wxImage, new_3_1, 3}}, - {1087, {wxImage, blur, 1}}, - {1088, {wxImage, blurHorizontal, 1}}, - {1089, {wxImage, blurVertical, 1}}, - {1090, {wxImage, convertAlphaToMask, 1}}, - {1091, {wxImage, convertToGreyscale, 1}}, - {1092, {wxImage, convertToMono, 3}}, - {1093, {wxImage, copy, 0}}, - {1094, {wxImage, create_3, 3}}, - {1095, {wxImage, create_4, 4}}, - {1096, {wxImage, create_5, 5}}, - {1097, {wxImage, 'Destroy', 0}}, - {1098, {wxImage, findFirstUnusedColour, 4}}, - {1099, {wxImage, getImageExtWildcard, 0}}, - {1100, {wxImage, getAlpha_2, 2}}, - {1101, {wxImage, getAlpha_0, 0}}, - {1102, {wxImage, getBlue, 2}}, - {1103, {wxImage, getData, 0}}, - {1104, {wxImage, getGreen, 2}}, - {1105, {wxImage, getImageCount, 2}}, - {1106, {wxImage, getHeight, 0}}, - {1107, {wxImage, getMaskBlue, 0}}, - {1108, {wxImage, getMaskGreen, 0}}, - {1109, {wxImage, getMaskRed, 0}}, - {1110, {wxImage, getOrFindMaskColour, 3}}, - {1111, {wxImage, getPalette, 0}}, - {1112, {wxImage, getRed, 2}}, - {1113, {wxImage, getSubImage, 1}}, - {1114, {wxImage, getWidth, 0}}, - {1115, {wxImage, hasAlpha, 0}}, - {1116, {wxImage, hasMask, 0}}, - {1117, {wxImage, getOption, 1}}, - {1118, {wxImage, getOptionInt, 1}}, - {1119, {wxImage, hasOption, 1}}, - {1120, {wxImage, initAlpha, 0}}, - {1121, {wxImage, initStandardHandlers, 0}}, - {1122, {wxImage, isTransparent, 3}}, - {1123, {wxImage, loadFile_2, 2}}, - {1124, {wxImage, loadFile_3, 3}}, - {1125, {wxImage, ok, 0}}, - {1126, {wxImage, removeHandler, 1}}, - {1127, {wxImage, mirror, 1}}, - {1128, {wxImage, replace, 6}}, - {1129, {wxImage, rescale, 3}}, - {1130, {wxImage, resize, 3}}, - {1131, {wxImage, rotate, 3}}, - {1132, {wxImage, rotateHue, 1}}, - {1133, {wxImage, rotate90, 1}}, - {1134, {wxImage, saveFile_1, 1}}, - {1135, {wxImage, saveFile_2_0, 2}}, - {1136, {wxImage, saveFile_2_1, 2}}, - {1137, {wxImage, scale, 3}}, - {1138, {wxImage, size, 3}}, - {1139, {wxImage, setAlpha_3, 3}}, - {1140, {wxImage, setAlpha_2, 2}}, - {1141, {wxImage, setData_2, 2}}, - {1142, {wxImage, setData_4, 4}}, - {1143, {wxImage, setMask, 1}}, - {1144, {wxImage, setMaskColour, 3}}, - {1145, {wxImage, setMaskFromImage, 4}}, - {1146, {wxImage, setOption_2_1, 2}}, - {1147, {wxImage, setOption_2_0, 2}}, - {1148, {wxImage, setPalette, 1}}, - {1149, {wxImage, setRGB_5, 5}}, - {1150, {wxImage, setRGB_4, 4}}, - {1151, {wxImage, 'Destroy', undefined}}, - {1152, {wxBrush, new_0, 0}}, - {1153, {wxBrush, new_2, 2}}, - {1154, {wxBrush, new_1, 1}}, - {1156, {wxBrush, destruct, 0}}, - {1157, {wxBrush, getColour, 0}}, - {1158, {wxBrush, getStipple, 0}}, - {1159, {wxBrush, getStyle, 0}}, - {1160, {wxBrush, isHatch, 0}}, - {1161, {wxBrush, isOk, 0}}, - {1162, {wxBrush, setColour_1, 1}}, - {1163, {wxBrush, setColour_3, 3}}, - {1164, {wxBrush, setStipple, 1}}, - {1165, {wxBrush, setStyle, 1}}, - {1166, {wxPen, new_0, 0}}, - {1167, {wxPen, new_2, 2}}, - {1168, {wxPen, destruct, 0}}, - {1169, {wxPen, getCap, 0}}, - {1170, {wxPen, getColour, 0}}, - {1171, {wxPen, getJoin, 0}}, - {1172, {wxPen, getStyle, 0}}, - {1173, {wxPen, getWidth, 0}}, - {1174, {wxPen, isOk, 0}}, - {1175, {wxPen, setCap, 1}}, - {1176, {wxPen, setColour_1, 1}}, - {1177, {wxPen, setColour_3, 3}}, - {1178, {wxPen, setJoin, 1}}, - {1179, {wxPen, setStyle, 1}}, - {1180, {wxPen, setWidth, 1}}, - {1181, {wxRegion, new_0, 0}}, - {1182, {wxRegion, new_4, 4}}, - {1183, {wxRegion, new_2, 2}}, - {1184, {wxRegion, new_1_1, 1}}, - {1186, {wxRegion, new_1_0, 1}}, - {1188, {wxRegion, destruct, 0}}, - {1189, {wxRegion, clear, 0}}, - {1190, {wxRegion, contains_2, 2}}, - {1191, {wxRegion, contains_1_0, 1}}, - {1192, {wxRegion, contains_4, 4}}, - {1193, {wxRegion, contains_1_1, 1}}, - {1194, {wxRegion, convertToBitmap, 0}}, - {1195, {wxRegion, getBox, 0}}, - {1196, {wxRegion, intersect_4, 4}}, - {1197, {wxRegion, intersect_1_1, 1}}, - {1198, {wxRegion, intersect_1_0, 1}}, - {1199, {wxRegion, isEmpty, 0}}, - {1200, {wxRegion, subtract_4, 4}}, - {1201, {wxRegion, subtract_1_1, 1}}, - {1202, {wxRegion, subtract_1_0, 1}}, - {1203, {wxRegion, offset_2, 2}}, - {1204, {wxRegion, offset_1, 1}}, - {1205, {wxRegion, union_4, 4}}, - {1206, {wxRegion, union_1_2, 1}}, - {1207, {wxRegion, union_1_1, 1}}, - {1208, {wxRegion, union_1_0, 1}}, - {1209, {wxRegion, union_3, 3}}, - {1210, {wxRegion, xor_4, 4}}, - {1211, {wxRegion, xor_1_1, 1}}, - {1212, {wxRegion, xor_1_0, 1}}, - {1213, {wxAcceleratorTable, new_0, 0}}, - {1214, {wxAcceleratorTable, new_2, 2}}, - {1215, {wxAcceleratorTable, destruct, 0}}, - {1216, {wxAcceleratorTable, ok, 0}}, - {1217, {wxAcceleratorEntry, new_1_0, 1}}, - {1218, {wxAcceleratorEntry, new_1_1, 1}}, - {1219, {wxAcceleratorEntry, getCommand, 0}}, - {1220, {wxAcceleratorEntry, getFlags, 0}}, - {1221, {wxAcceleratorEntry, getKeyCode, 0}}, - {1222, {wxAcceleratorEntry, set, 4}}, - {1223, {wxAcceleratorEntry, 'Destroy', undefined}}, - {1228, {wxCaret, new_3, 3}}, - {1229, {wxCaret, new_2, 2}}, - {1231, {wxCaret, destruct, 0}}, - {1232, {wxCaret, create_3, 3}}, - {1233, {wxCaret, create_2, 2}}, - {1234, {wxCaret, getBlinkTime, 0}}, - {1236, {wxCaret, getPosition, 0}}, - {1238, {wxCaret, getSize, 0}}, - {1239, {wxCaret, getWindow, 0}}, - {1240, {wxCaret, hide, 0}}, - {1241, {wxCaret, isOk, 0}}, - {1242, {wxCaret, isVisible, 0}}, - {1243, {wxCaret, move_2, 2}}, - {1244, {wxCaret, move_1, 1}}, - {1245, {wxCaret, setBlinkTime, 1}}, - {1246, {wxCaret, setSize_2, 2}}, - {1247, {wxCaret, setSize_1, 1}}, - {1248, {wxCaret, show, 1}}, - {1249, {wxSizer, add_2_1, 2}}, - {1250, {wxSizer, add_2_0, 2}}, - {1251, {wxSizer, add_3, 3}}, - {1252, {wxSizer, add_2_3, 2}}, - {1253, {wxSizer, add_2_2, 2}}, - {1254, {wxSizer, addSpacer, 1}}, - {1255, {wxSizer, addStretchSpacer, 1}}, - {1256, {wxSizer, calcMin, 0}}, - {1257, {wxSizer, clear, 1}}, - {1258, {wxSizer, detach_1_2, 1}}, - {1259, {wxSizer, detach_1_1, 1}}, - {1260, {wxSizer, detach_1_0, 1}}, - {1261, {wxSizer, fit, 1}}, - {1262, {wxSizer, fitInside, 1}}, - {1263, {wxSizer, getChildren, 0}}, - {1264, {wxSizer, getItem_2_1, 2}}, - {1265, {wxSizer, getItem_2_0, 2}}, - {1266, {wxSizer, getItem_1, 1}}, - {1267, {wxSizer, getSize, 0}}, - {1268, {wxSizer, getPosition, 0}}, - {1269, {wxSizer, getMinSize, 0}}, - {1270, {wxSizer, hide_2_0, 2}}, - {1271, {wxSizer, hide_2_1, 2}}, - {1272, {wxSizer, hide_1, 1}}, - {1273, {wxSizer, insert_3_1, 3}}, - {1274, {wxSizer, insert_3_0, 3}}, - {1275, {wxSizer, insert_4, 4}}, - {1276, {wxSizer, insert_3_3, 3}}, - {1277, {wxSizer, insert_3_2, 3}}, - {1278, {wxSizer, insert_2, 2}}, - {1279, {wxSizer, insertSpacer, 2}}, - {1280, {wxSizer, insertStretchSpacer, 2}}, - {1281, {wxSizer, isShown_1_2, 1}}, - {1282, {wxSizer, isShown_1_1, 1}}, - {1283, {wxSizer, isShown_1_0, 1}}, - {1284, {wxSizer, layout, 0}}, - {1285, {wxSizer, prepend_2_1, 2}}, - {1286, {wxSizer, prepend_2_0, 2}}, - {1287, {wxSizer, prepend_3, 3}}, - {1288, {wxSizer, prepend_2_3, 2}}, - {1289, {wxSizer, prepend_2_2, 2}}, - {1290, {wxSizer, prepend_1, 1}}, - {1291, {wxSizer, prependSpacer, 1}}, - {1292, {wxSizer, prependStretchSpacer, 1}}, - {1293, {wxSizer, recalcSizes, 0}}, - {1294, {wxSizer, remove_1_1, 1}}, - {1295, {wxSizer, remove_1_0, 1}}, - {1296, {wxSizer, replace_3_1, 3}}, - {1297, {wxSizer, replace_3_0, 3}}, - {1298, {wxSizer, replace_2, 2}}, - {1299, {wxSizer, setDimension, 4}}, - {1300, {wxSizer, setMinSize_2, 2}}, - {1301, {wxSizer, setMinSize_1, 1}}, - {1302, {wxSizer, setItemMinSize_3_2, 3}}, - {1303, {wxSizer, setItemMinSize_2_2, 2}}, - {1304, {wxSizer, setItemMinSize_3_1, 3}}, - {1305, {wxSizer, setItemMinSize_2_1, 2}}, - {1306, {wxSizer, setItemMinSize_3_0, 3}}, - {1307, {wxSizer, setItemMinSize_2_0, 2}}, - {1308, {wxSizer, setSizeHints, 1}}, - {1309, {wxSizer, setVirtualSizeHints, 1}}, - {1310, {wxSizer, show_2_2, 2}}, - {1311, {wxSizer, show_2_1, 2}}, - {1312, {wxSizer, show_2_0, 2}}, - {1313, {wxSizer, show_1, 1}}, - {1314, {wxSizerFlags, new, 1}}, - {1315, {wxSizerFlags, align, 1}}, - {1316, {wxSizerFlags, border_2, 2}}, - {1317, {wxSizerFlags, border_1, 1}}, - {1318, {wxSizerFlags, center, 0}}, - {1319, {wxSizerFlags, centre, 0}}, - {1320, {wxSizerFlags, expand, 0}}, - {1321, {wxSizerFlags, left, 0}}, - {1322, {wxSizerFlags, proportion, 1}}, - {1323, {wxSizerFlags, right, 0}}, - {1324, {wxSizerFlags, 'Destroy', undefined}}, - {1325, {wxSizerItem, new_5_1, 5}}, - {1326, {wxSizerItem, new_2_1, 2}}, - {1327, {wxSizerItem, new_5_0, 5}}, - {1328, {wxSizerItem, new_2_0, 2}}, - {1329, {wxSizerItem, new_6, 6}}, - {1330, {wxSizerItem, new_3, 3}}, - {1331, {wxSizerItem, new_0, 0}}, - {1332, {wxSizerItem, destruct, 0}}, - {1333, {wxSizerItem, calcMin, 0}}, - {1334, {wxSizerItem, deleteWindows, 0}}, - {1335, {wxSizerItem, detachSizer, 0}}, - {1336, {wxSizerItem, getBorder, 0}}, - {1337, {wxSizerItem, getFlag, 0}}, - {1338, {wxSizerItem, getMinSize, 0}}, - {1339, {wxSizerItem, getPosition, 0}}, - {1340, {wxSizerItem, getProportion, 0}}, - {1341, {wxSizerItem, getRatio, 0}}, - {1342, {wxSizerItem, getRect, 0}}, - {1343, {wxSizerItem, getSize, 0}}, - {1344, {wxSizerItem, getSizer, 0}}, - {1345, {wxSizerItem, getSpacer, 0}}, - {1346, {wxSizerItem, getUserData, 0}}, - {1347, {wxSizerItem, getWindow, 0}}, - {1348, {wxSizerItem, isSizer, 0}}, - {1349, {wxSizerItem, isShown, 0}}, - {1350, {wxSizerItem, isSpacer, 0}}, - {1351, {wxSizerItem, isWindow, 0}}, - {1352, {wxSizerItem, setBorder, 1}}, - {1353, {wxSizerItem, setDimension, 2}}, - {1354, {wxSizerItem, setFlag, 1}}, - {1355, {wxSizerItem, setInitSize, 2}}, - {1356, {wxSizerItem, setMinSize_1, 1}}, - {1357, {wxSizerItem, setMinSize_2, 2}}, - {1358, {wxSizerItem, setProportion, 1}}, - {1359, {wxSizerItem, setRatio_2, 2}}, - {1360, {wxSizerItem, setRatio_1_1, 1}}, - {1361, {wxSizerItem, setRatio_1_0, 1}}, - {1362, {wxSizerItem, setSizer, 1}}, - {1363, {wxSizerItem, setSpacer_1, 1}}, - {1364, {wxSizerItem, setSpacer_2, 2}}, - {1365, {wxSizerItem, setWindow, 1}}, - {1366, {wxSizerItem, show, 1}}, - {1367, {wxBoxSizer, new, 1}}, - {1368, {wxBoxSizer, getOrientation, 0}}, - {1369, {wxBoxSizer, 'Destroy', undefined}}, - {1370, {wxStaticBoxSizer, new_2, 2}}, - {1371, {wxStaticBoxSizer, new_3, 3}}, - {1372, {wxStaticBoxSizer, getStaticBox, 0}}, - {1373, {wxStaticBoxSizer, 'Destroy', undefined}}, - {1374, {wxGridSizer, new_4, 4}}, - {1375, {wxGridSizer, new_2, 2}}, - {1376, {wxGridSizer, getCols, 0}}, - {1377, {wxGridSizer, getHGap, 0}}, - {1378, {wxGridSizer, getRows, 0}}, - {1379, {wxGridSizer, getVGap, 0}}, - {1380, {wxGridSizer, setCols, 1}}, - {1381, {wxGridSizer, setHGap, 1}}, - {1382, {wxGridSizer, setRows, 1}}, - {1383, {wxGridSizer, setVGap, 1}}, - {1384, {wxGridSizer, 'Destroy', undefined}}, - {1385, {wxFlexGridSizer, new_4, 4}}, - {1386, {wxFlexGridSizer, new_2, 2}}, - {1387, {wxFlexGridSizer, addGrowableCol, 2}}, - {1388, {wxFlexGridSizer, addGrowableRow, 2}}, - {1389, {wxFlexGridSizer, getFlexibleDirection, 0}}, - {1390, {wxFlexGridSizer, getNonFlexibleGrowMode, 0}}, - {1391, {wxFlexGridSizer, removeGrowableCol, 1}}, - {1392, {wxFlexGridSizer, removeGrowableRow, 1}}, - {1393, {wxFlexGridSizer, setFlexibleDirection, 1}}, - {1394, {wxFlexGridSizer, setNonFlexibleGrowMode, 1}}, - {1395, {wxFlexGridSizer, 'Destroy', undefined}}, - {1396, {wxGridBagSizer, new, 1}}, - {1397, {wxGridBagSizer, add_3_2, 3}}, - {1398, {wxGridBagSizer, add_3_1, 3}}, - {1399, {wxGridBagSizer, add_4, 4}}, - {1400, {wxGridBagSizer, add_1_0, 1}}, - {1401, {wxGridBagSizer, add_2_1, 2}}, - {1402, {wxGridBagSizer, add_2_0, 2}}, - {1403, {wxGridBagSizer, add_3_0, 3}}, - {1404, {wxGridBagSizer, add_1_1, 1}}, - {1405, {wxGridBagSizer, calcMin, 0}}, - {1406, {wxGridBagSizer, checkForIntersection_2, 2}}, - {1407, {wxGridBagSizer, checkForIntersection_3, 3}}, - {1408, {wxGridBagSizer, findItem_1_1, 1}}, - {1409, {wxGridBagSizer, findItem_1_0, 1}}, - {1410, {wxGridBagSizer, findItemAtPoint, 1}}, - {1411, {wxGridBagSizer, findItemAtPosition, 1}}, - {1412, {wxGridBagSizer, findItemWithData, 1}}, - {1413, {wxGridBagSizer, getCellSize, 2}}, - {1414, {wxGridBagSizer, getEmptyCellSize, 0}}, - {1415, {wxGridBagSizer, getItemPosition_1_2, 1}}, - {1416, {wxGridBagSizer, getItemPosition_1_1, 1}}, - {1417, {wxGridBagSizer, getItemPosition_1_0, 1}}, - {1418, {wxGridBagSizer, getItemSpan_1_2, 1}}, - {1419, {wxGridBagSizer, getItemSpan_1_1, 1}}, - {1420, {wxGridBagSizer, getItemSpan_1_0, 1}}, - {1421, {wxGridBagSizer, setEmptyCellSize, 1}}, - {1422, {wxGridBagSizer, setItemPosition_2_2, 2}}, - {1423, {wxGridBagSizer, setItemPosition_2_1, 2}}, - {1424, {wxGridBagSizer, setItemPosition_2_0, 2}}, - {1425, {wxGridBagSizer, setItemSpan_2_2, 2}}, - {1426, {wxGridBagSizer, setItemSpan_2_1, 2}}, - {1427, {wxGridBagSizer, setItemSpan_2_0, 2}}, - {1428, {wxGridBagSizer, 'Destroy', undefined}}, - {1429, {wxStdDialogButtonSizer, new, 0}}, - {1430, {wxStdDialogButtonSizer, addButton, 1}}, - {1431, {wxStdDialogButtonSizer, realize, 0}}, - {1432, {wxStdDialogButtonSizer, setAffirmativeButton, 1}}, - {1433, {wxStdDialogButtonSizer, setCancelButton, 1}}, - {1434, {wxStdDialogButtonSizer, setNegativeButton, 1}}, - {1435, {wxStdDialogButtonSizer, 'Destroy', undefined}}, - {1436, {wxFont, new_0, 0}}, - {1437, {wxFont, new_1, 1}}, - {1438, {wxFont, new_5, 5}}, - {1440, {wxFont, destruct, 0}}, - {1441, {wxFont, isFixedWidth, 0}}, - {1442, {wxFont, getDefaultEncoding, 0}}, - {1443, {wxFont, getFaceName, 0}}, - {1444, {wxFont, getFamily, 0}}, - {1445, {wxFont, getNativeFontInfoDesc, 0}}, - {1446, {wxFont, getNativeFontInfoUserDesc, 0}}, - {1447, {wxFont, getPointSize, 0}}, - {1448, {wxFont, getStyle, 0}}, - {1449, {wxFont, getUnderlined, 0}}, - {1450, {wxFont, getWeight, 0}}, - {1451, {wxFont, ok, 0}}, - {1452, {wxFont, setDefaultEncoding, 1}}, - {1453, {wxFont, setFaceName, 1}}, - {1454, {wxFont, setFamily, 1}}, - {1455, {wxFont, setPointSize, 1}}, - {1456, {wxFont, setStyle, 1}}, - {1457, {wxFont, setUnderlined, 1}}, - {1458, {wxFont, setWeight, 1}}, - {1459, {wxToolTip, enable, 1}}, - {1460, {wxToolTip, setDelay, 1}}, - {1461, {wxToolTip, new, 1}}, - {1462, {wxToolTip, setTip, 1}}, - {1463, {wxToolTip, getTip, 0}}, - {1464, {wxToolTip, getWindow, 0}}, - {1465, {wxToolTip, 'Destroy', undefined}}, - {1467, {wxButton, new_3, 3}}, - {1468, {wxButton, new_0, 0}}, - {1469, {wxButton, destruct, 0}}, - {1470, {wxButton, create, 3}}, - {1471, {wxButton, getDefaultSize, 0}}, - {1472, {wxButton, setDefault, 0}}, - {1473, {wxButton, setLabel, 1}}, - {1475, {wxBitmapButton, new_4, 4}}, - {1476, {wxBitmapButton, new_0, 0}}, - {1477, {wxBitmapButton, create, 4}}, - {1478, {wxBitmapButton, getBitmapDisabled, 0}}, - {1480, {wxBitmapButton, getBitmapFocus, 0}}, - {1482, {wxBitmapButton, getBitmapLabel, 0}}, - {1484, {wxBitmapButton, getBitmapSelected, 0}}, - {1486, {wxBitmapButton, setBitmapDisabled, 1}}, - {1487, {wxBitmapButton, setBitmapFocus, 1}}, - {1488, {wxBitmapButton, setBitmapLabel, 1}}, - {1489, {wxBitmapButton, setBitmapSelected, 1}}, - {1490, {wxBitmapButton, 'Destroy', undefined}}, - {1491, {wxToggleButton, new_0, 0}}, - {1492, {wxToggleButton, new_4, 4}}, - {1493, {wxToggleButton, create, 4}}, - {1494, {wxToggleButton, getValue, 0}}, - {1495, {wxToggleButton, setValue, 1}}, - {1496, {wxToggleButton, 'Destroy', undefined}}, - {1497, {wxCalendarCtrl, new_0, 0}}, - {1498, {wxCalendarCtrl, new_3, 3}}, - {1499, {wxCalendarCtrl, create, 3}}, - {1500, {wxCalendarCtrl, destruct, 0}}, - {1501, {wxCalendarCtrl, setDate, 1}}, - {1502, {wxCalendarCtrl, getDate, 0}}, - {1503, {wxCalendarCtrl, enableYearChange, 1}}, - {1504, {wxCalendarCtrl, enableMonthChange, 1}}, - {1505, {wxCalendarCtrl, enableHolidayDisplay, 1}}, - {1506, {wxCalendarCtrl, setHeaderColours, 2}}, - {1507, {wxCalendarCtrl, getHeaderColourFg, 0}}, - {1508, {wxCalendarCtrl, getHeaderColourBg, 0}}, - {1509, {wxCalendarCtrl, setHighlightColours, 2}}, - {1510, {wxCalendarCtrl, getHighlightColourFg, 0}}, - {1511, {wxCalendarCtrl, getHighlightColourBg, 0}}, - {1512, {wxCalendarCtrl, setHolidayColours, 2}}, - {1513, {wxCalendarCtrl, getHolidayColourFg, 0}}, - {1514, {wxCalendarCtrl, getHolidayColourBg, 0}}, - {1515, {wxCalendarCtrl, getAttr, 1}}, - {1516, {wxCalendarCtrl, setAttr, 2}}, - {1517, {wxCalendarCtrl, setHoliday, 1}}, - {1518, {wxCalendarCtrl, resetAttr, 1}}, - {1519, {wxCalendarCtrl, hitTest, 2}}, - {1520, {wxCalendarDateAttr, new_0, 0}}, - {1521, {wxCalendarDateAttr, new_2_1, 2}}, - {1522, {wxCalendarDateAttr, new_2_0, 2}}, - {1523, {wxCalendarDateAttr, setTextColour, 1}}, - {1524, {wxCalendarDateAttr, setBackgroundColour, 1}}, - {1525, {wxCalendarDateAttr, setBorderColour, 1}}, - {1526, {wxCalendarDateAttr, setFont, 1}}, - {1527, {wxCalendarDateAttr, setBorder, 1}}, - {1528, {wxCalendarDateAttr, setHoliday, 1}}, - {1529, {wxCalendarDateAttr, hasTextColour, 0}}, - {1530, {wxCalendarDateAttr, hasBackgroundColour, 0}}, - {1531, {wxCalendarDateAttr, hasBorderColour, 0}}, - {1532, {wxCalendarDateAttr, hasFont, 0}}, - {1533, {wxCalendarDateAttr, hasBorder, 0}}, - {1534, {wxCalendarDateAttr, isHoliday, 0}}, - {1535, {wxCalendarDateAttr, getTextColour, 0}}, - {1536, {wxCalendarDateAttr, getBackgroundColour, 0}}, - {1537, {wxCalendarDateAttr, getBorderColour, 0}}, - {1538, {wxCalendarDateAttr, getFont, 0}}, - {1539, {wxCalendarDateAttr, getBorder, 0}}, - {1540, {wxCalendarDateAttr, 'Destroy', undefined}}, - {1542, {wxCheckBox, new_4, 4}}, - {1543, {wxCheckBox, new_0, 0}}, - {1544, {wxCheckBox, create, 4}}, - {1545, {wxCheckBox, getValue, 0}}, - {1546, {wxCheckBox, get3StateValue, 0}}, - {1547, {wxCheckBox, is3rdStateAllowedForUser, 0}}, - {1548, {wxCheckBox, is3State, 0}}, - {1549, {wxCheckBox, isChecked, 0}}, - {1550, {wxCheckBox, setValue, 1}}, - {1551, {wxCheckBox, set3StateValue, 1}}, - {1552, {wxCheckBox, 'Destroy', undefined}}, - {1553, {wxCheckListBox, new_0, 0}}, - {1555, {wxCheckListBox, new_3, 3}}, - {1556, {wxCheckListBox, check, 2}}, - {1557, {wxCheckListBox, isChecked, 1}}, - {1558, {wxCheckListBox, 'Destroy', undefined}}, - {1561, {wxChoice, new_3, 3}}, - {1562, {wxChoice, new_0, 0}}, - {1564, {wxChoice, destruct, 0}}, - {1566, {wxChoice, create, 6}}, - {1567, {wxChoice, delete, 1}}, - {1568, {wxChoice, getColumns, 0}}, - {1569, {wxChoice, setColumns, 1}}, - {1570, {wxComboBox, new_0, 0}}, - {1572, {wxComboBox, new_3, 3}}, - {1573, {wxComboBox, destruct, 0}}, - {1575, {wxComboBox, create, 7}}, - {1576, {wxComboBox, canCopy, 0}}, - {1577, {wxComboBox, canCut, 0}}, - {1578, {wxComboBox, canPaste, 0}}, - {1579, {wxComboBox, canRedo, 0}}, - {1580, {wxComboBox, canUndo, 0}}, - {1581, {wxComboBox, copy, 0}}, - {1582, {wxComboBox, cut, 0}}, - {1583, {wxComboBox, getInsertionPoint, 0}}, - {1584, {wxComboBox, getLastPosition, 0}}, - {1585, {wxComboBox, getValue, 0}}, - {1586, {wxComboBox, paste, 0}}, - {1587, {wxComboBox, redo, 0}}, - {1588, {wxComboBox, replace, 3}}, - {1589, {wxComboBox, remove, 2}}, - {1590, {wxComboBox, setInsertionPoint, 1}}, - {1591, {wxComboBox, setInsertionPointEnd, 0}}, - {1592, {wxComboBox, setSelection_1, 1}}, - {1593, {wxComboBox, setSelection_2, 2}}, - {1594, {wxComboBox, setValue, 1}}, - {1595, {wxComboBox, undo, 0}}, - {1596, {wxGauge, new_0, 0}}, - {1597, {wxGauge, new_4, 4}}, - {1598, {wxGauge, create, 4}}, - {1599, {wxGauge, getBezelFace, 0}}, - {1600, {wxGauge, getRange, 0}}, - {1601, {wxGauge, getShadowWidth, 0}}, - {1602, {wxGauge, getValue, 0}}, - {1603, {wxGauge, isVertical, 0}}, - {1604, {wxGauge, setBezelFace, 1}}, - {1605, {wxGauge, setRange, 1}}, - {1606, {wxGauge, setShadowWidth, 1}}, - {1607, {wxGauge, setValue, 1}}, - {1608, {wxGauge, pulse, 0}}, - {1609, {wxGauge, 'Destroy', undefined}}, - {1610, {wxGenericDirCtrl, new_0, 0}}, - {1611, {wxGenericDirCtrl, new_2, 2}}, - {1612, {wxGenericDirCtrl, destruct, 0}}, - {1613, {wxGenericDirCtrl, create, 2}}, - {1614, {wxGenericDirCtrl, init, 0}}, - {1615, {wxGenericDirCtrl, collapseTree, 0}}, - {1616, {wxGenericDirCtrl, expandPath, 1}}, - {1617, {wxGenericDirCtrl, getDefaultPath, 0}}, - {1618, {wxGenericDirCtrl, getPath, 0}}, - {1619, {wxGenericDirCtrl, getFilePath, 0}}, - {1620, {wxGenericDirCtrl, getFilter, 0}}, - {1621, {wxGenericDirCtrl, getFilterIndex, 0}}, - {1622, {wxGenericDirCtrl, getRootId, 0}}, - {1623, {wxGenericDirCtrl, getTreeCtrl, 0}}, - {1624, {wxGenericDirCtrl, reCreateTree, 0}}, - {1625, {wxGenericDirCtrl, setDefaultPath, 1}}, - {1626, {wxGenericDirCtrl, setFilter, 1}}, - {1627, {wxGenericDirCtrl, setFilterIndex, 1}}, - {1628, {wxGenericDirCtrl, setPath, 1}}, - {1630, {wxStaticBox, new_4, 4}}, - {1631, {wxStaticBox, new_0, 0}}, - {1632, {wxStaticBox, create, 4}}, - {1633, {wxStaticBox, 'Destroy', undefined}}, - {1635, {wxStaticLine, new_2, 2}}, - {1636, {wxStaticLine, new_0, 0}}, - {1637, {wxStaticLine, create, 2}}, - {1638, {wxStaticLine, isVertical, 0}}, - {1639, {wxStaticLine, getDefaultSize, 0}}, - {1640, {wxStaticLine, 'Destroy', undefined}}, - {1643, {wxListBox, new_3, 3}}, - {1644, {wxListBox, new_0, 0}}, - {1646, {wxListBox, destruct, 0}}, - {1648, {wxListBox, create, 6}}, - {1649, {wxListBox, deselect, 1}}, - {1650, {wxListBox, getSelections, 1}}, - {1651, {wxListBox, insertItems, 2}}, - {1652, {wxListBox, isSelected, 1}}, - {1654, {wxListBox, set, 2}}, - {1655, {wxListBox, hitTest, 1}}, - {1656, {wxListBox, setFirstItem_1_0, 1}}, - {1657, {wxListBox, setFirstItem_1_1, 1}}, - {1658, {wxListCtrl, new_0, 0}}, - {1659, {wxListCtrl, new_2, 2}}, - {1660, {wxListCtrl, arrange, 1}}, - {1661, {wxListCtrl, assignImageList, 2}}, - {1662, {wxListCtrl, clearAll, 0}}, - {1663, {wxListCtrl, create, 2}}, - {1664, {wxListCtrl, deleteAllItems, 0}}, - {1665, {wxListCtrl, deleteColumn, 1}}, - {1666, {wxListCtrl, deleteItem, 1}}, - {1667, {wxListCtrl, editLabel, 1}}, - {1668, {wxListCtrl, ensureVisible, 1}}, - {1669, {wxListCtrl, findItem_3_0, 3}}, - {1670, {wxListCtrl, findItem_3_1, 3}}, - {1671, {wxListCtrl, getColumn, 2}}, - {1672, {wxListCtrl, getColumnCount, 0}}, - {1673, {wxListCtrl, getColumnWidth, 1}}, - {1674, {wxListCtrl, getCountPerPage, 0}}, - {1675, {wxListCtrl, getEditControl, 0}}, - {1676, {wxListCtrl, getImageList, 1}}, - {1677, {wxListCtrl, getItem, 1}}, - {1678, {wxListCtrl, getItemBackgroundColour, 1}}, - {1679, {wxListCtrl, getItemCount, 0}}, - {1680, {wxListCtrl, getItemData, 1}}, - {1681, {wxListCtrl, getItemFont, 1}}, - {1682, {wxListCtrl, getItemPosition, 2}}, - {1683, {wxListCtrl, getItemRect, 3}}, - {1684, {wxListCtrl, getItemSpacing, 0}}, - {1685, {wxListCtrl, getItemState, 2}}, - {1686, {wxListCtrl, getItemText, 1}}, - {1687, {wxListCtrl, getItemTextColour, 1}}, - {1688, {wxListCtrl, getNextItem, 2}}, - {1689, {wxListCtrl, getSelectedItemCount, 0}}, - {1690, {wxListCtrl, getTextColour, 0}}, - {1691, {wxListCtrl, getTopItem, 0}}, - {1692, {wxListCtrl, getViewRect, 0}}, - {1693, {wxListCtrl, hitTest, 2}}, - {1694, {wxListCtrl, insertColumn_2, 2}}, - {1695, {wxListCtrl, insertColumn_3, 3}}, - {1696, {wxListCtrl, insertItem_1, 1}}, - {1697, {wxListCtrl, insertItem_2_1, 2}}, - {1698, {wxListCtrl, insertItem_2_0, 2}}, - {1699, {wxListCtrl, insertItem_3, 3}}, - {1700, {wxListCtrl, refreshItem, 1}}, - {1701, {wxListCtrl, refreshItems, 2}}, - {1702, {wxListCtrl, scrollList, 2}}, - {1703, {wxListCtrl, setBackgroundColour, 1}}, - {1704, {wxListCtrl, setColumn, 2}}, - {1705, {wxListCtrl, setColumnWidth, 2}}, - {1706, {wxListCtrl, setImageList, 2}}, - {1707, {wxListCtrl, setItem_1, 1}}, - {1708, {wxListCtrl, setItem_4, 4}}, - {1709, {wxListCtrl, setItemBackgroundColour, 2}}, - {1710, {wxListCtrl, setItemCount, 1}}, - {1711, {wxListCtrl, setItemData, 2}}, - {1712, {wxListCtrl, setItemFont, 2}}, - {1713, {wxListCtrl, setItemImage, 3}}, - {1714, {wxListCtrl, setItemColumnImage, 3}}, - {1715, {wxListCtrl, setItemPosition, 2}}, - {1716, {wxListCtrl, setItemState, 3}}, - {1717, {wxListCtrl, setItemText, 2}}, - {1718, {wxListCtrl, setItemTextColour, 2}}, - {1719, {wxListCtrl, setSingleStyle, 2}}, - {1720, {wxListCtrl, setTextColour, 1}}, - {1721, {wxListCtrl, setWindowStyleFlag, 1}}, - {1722, {wxListCtrl, sortItems, 2}}, - {1723, {wxListCtrl, 'Destroy', undefined}}, - {1724, {wxListView, clearColumnImage, 1}}, - {1725, {wxListView, focus, 1}}, - {1726, {wxListView, getFirstSelected, 0}}, - {1727, {wxListView, getFocusedItem, 0}}, - {1728, {wxListView, getNextSelected, 1}}, - {1729, {wxListView, isSelected, 1}}, - {1730, {wxListView, select, 2}}, - {1731, {wxListView, setColumnImage, 2}}, - {1732, {wxListItem, new_0, 0}}, - {1733, {wxListItem, new_1, 1}}, - {1734, {wxListItem, destruct, 0}}, - {1735, {wxListItem, clear, 0}}, - {1736, {wxListItem, getAlign, 0}}, - {1737, {wxListItem, getBackgroundColour, 0}}, - {1738, {wxListItem, getColumn, 0}}, - {1739, {wxListItem, getFont, 0}}, - {1740, {wxListItem, getId, 0}}, - {1741, {wxListItem, getImage, 0}}, - {1742, {wxListItem, getMask, 0}}, - {1743, {wxListItem, getState, 0}}, - {1744, {wxListItem, getText, 0}}, - {1745, {wxListItem, getTextColour, 0}}, - {1746, {wxListItem, getWidth, 0}}, - {1747, {wxListItem, setAlign, 1}}, - {1748, {wxListItem, setBackgroundColour, 1}}, - {1749, {wxListItem, setColumn, 1}}, - {1750, {wxListItem, setFont, 1}}, - {1751, {wxListItem, setId, 1}}, - {1752, {wxListItem, setImage, 1}}, - {1753, {wxListItem, setMask, 1}}, - {1754, {wxListItem, setState, 1}}, - {1755, {wxListItem, setStateMask, 1}}, - {1756, {wxListItem, setText, 1}}, - {1757, {wxListItem, setTextColour, 1}}, - {1758, {wxListItem, setWidth, 1}}, - {1759, {wxImageList, new_0, 0}}, - {1760, {wxImageList, new_3, 3}}, - {1761, {wxImageList, add_1, 1}}, - {1762, {wxImageList, add_2_0, 2}}, - {1763, {wxImageList, add_2_1, 2}}, - {1764, {wxImageList, create, 3}}, - {1766, {wxImageList, draw, 5}}, - {1767, {wxImageList, getBitmap, 1}}, - {1768, {wxImageList, getIcon, 1}}, - {1769, {wxImageList, getImageCount, 0}}, - {1770, {wxImageList, getSize, 3}}, - {1771, {wxImageList, remove, 1}}, - {1772, {wxImageList, removeAll, 0}}, - {1773, {wxImageList, replace_2, 2}}, - {1774, {wxImageList, replace_3, 3}}, - {1775, {wxImageList, 'Destroy', undefined}}, - {1776, {wxTextAttr, new_0, 0}}, - {1777, {wxTextAttr, new_2, 2}}, - {1778, {wxTextAttr, getAlignment, 0}}, - {1779, {wxTextAttr, getBackgroundColour, 0}}, - {1780, {wxTextAttr, getFont, 0}}, - {1781, {wxTextAttr, getLeftIndent, 0}}, - {1782, {wxTextAttr, getLeftSubIndent, 0}}, - {1783, {wxTextAttr, getRightIndent, 0}}, - {1784, {wxTextAttr, getTabs, 0}}, - {1785, {wxTextAttr, getTextColour, 0}}, - {1786, {wxTextAttr, hasBackgroundColour, 0}}, - {1787, {wxTextAttr, hasFont, 0}}, - {1788, {wxTextAttr, hasTextColour, 0}}, - {1789, {wxTextAttr, getFlags, 0}}, - {1790, {wxTextAttr, isDefault, 0}}, - {1791, {wxTextAttr, setAlignment, 1}}, - {1792, {wxTextAttr, setBackgroundColour, 1}}, - {1793, {wxTextAttr, setFlags, 1}}, - {1794, {wxTextAttr, setFont, 2}}, - {1795, {wxTextAttr, setLeftIndent, 2}}, - {1796, {wxTextAttr, setRightIndent, 1}}, - {1797, {wxTextAttr, setTabs, 1}}, - {1798, {wxTextAttr, setTextColour, 1}}, - {1799, {wxTextAttr, 'Destroy', undefined}}, - {1801, {wxTextCtrl, new_3, 3}}, - {1802, {wxTextCtrl, new_0, 0}}, - {1804, {wxTextCtrl, destruct, 0}}, - {1805, {wxTextCtrl, appendText, 1}}, - {1806, {wxTextCtrl, canCopy, 0}}, - {1807, {wxTextCtrl, canCut, 0}}, - {1808, {wxTextCtrl, canPaste, 0}}, - {1809, {wxTextCtrl, canRedo, 0}}, - {1810, {wxTextCtrl, canUndo, 0}}, - {1811, {wxTextCtrl, clear, 0}}, - {1812, {wxTextCtrl, copy, 0}}, - {1813, {wxTextCtrl, create, 3}}, - {1814, {wxTextCtrl, cut, 0}}, - {1815, {wxTextCtrl, discardEdits, 0}}, - {1816, {wxTextCtrl, emulateKeyPress, 1}}, - {1817, {wxTextCtrl, getDefaultStyle, 0}}, - {1818, {wxTextCtrl, getInsertionPoint, 0}}, - {1819, {wxTextCtrl, getLastPosition, 0}}, - {1820, {wxTextCtrl, getLineLength, 1}}, - {1821, {wxTextCtrl, getLineText, 1}}, - {1822, {wxTextCtrl, getNumberOfLines, 0}}, - {1823, {wxTextCtrl, getRange, 2}}, - {1824, {wxTextCtrl, getSelection, 2}}, - {1825, {wxTextCtrl, getStringSelection, 0}}, - {1826, {wxTextCtrl, getStyle, 2}}, - {1827, {wxTextCtrl, getValue, 0}}, - {1828, {wxTextCtrl, isEditable, 0}}, - {1829, {wxTextCtrl, isModified, 0}}, - {1830, {wxTextCtrl, isMultiLine, 0}}, - {1831, {wxTextCtrl, isSingleLine, 0}}, - {1832, {wxTextCtrl, loadFile, 2}}, - {1833, {wxTextCtrl, markDirty, 0}}, - {1834, {wxTextCtrl, paste, 0}}, - {1835, {wxTextCtrl, positionToXY, 3}}, - {1836, {wxTextCtrl, redo, 0}}, - {1837, {wxTextCtrl, remove, 2}}, - {1838, {wxTextCtrl, replace, 3}}, - {1839, {wxTextCtrl, saveFile, 1}}, - {1840, {wxTextCtrl, setDefaultStyle, 1}}, - {1841, {wxTextCtrl, setEditable, 1}}, - {1842, {wxTextCtrl, setInsertionPoint, 1}}, - {1843, {wxTextCtrl, setInsertionPointEnd, 0}}, - {1845, {wxTextCtrl, setMaxLength, 1}}, - {1846, {wxTextCtrl, setSelection, 2}}, - {1847, {wxTextCtrl, setStyle, 3}}, - {1848, {wxTextCtrl, setValue, 1}}, - {1849, {wxTextCtrl, showPosition, 1}}, - {1850, {wxTextCtrl, undo, 0}}, - {1851, {wxTextCtrl, writeText, 1}}, - {1852, {wxTextCtrl, xYToPosition, 2}}, - {1855, {wxNotebook, new_0, 0}}, - {1856, {wxNotebook, new_3, 3}}, - {1857, {wxNotebook, destruct, 0}}, - {1858, {wxNotebook, addPage, 3}}, - {1859, {wxNotebook, advanceSelection, 1}}, - {1860, {wxNotebook, assignImageList, 1}}, - {1861, {wxNotebook, create, 3}}, - {1862, {wxNotebook, deleteAllPages, 0}}, - {1863, {wxNotebook, deletePage, 1}}, - {1864, {wxNotebook, removePage, 1}}, - {1865, {wxNotebook, getCurrentPage, 0}}, - {1866, {wxNotebook, getImageList, 0}}, - {1868, {wxNotebook, getPage, 1}}, - {1869, {wxNotebook, getPageCount, 0}}, - {1870, {wxNotebook, getPageImage, 1}}, - {1871, {wxNotebook, getPageText, 1}}, - {1872, {wxNotebook, getRowCount, 0}}, - {1873, {wxNotebook, getSelection, 0}}, - {1874, {wxNotebook, getThemeBackgroundColour, 0}}, - {1876, {wxNotebook, hitTest, 2}}, - {1878, {wxNotebook, insertPage, 4}}, - {1879, {wxNotebook, setImageList, 1}}, - {1880, {wxNotebook, setPadding, 1}}, - {1881, {wxNotebook, setPageSize, 1}}, - {1882, {wxNotebook, setPageImage, 2}}, - {1883, {wxNotebook, setPageText, 2}}, - {1884, {wxNotebook, setSelection, 1}}, - {1885, {wxNotebook, changeSelection, 1}}, - {1886, {wxChoicebook, new_0, 0}}, - {1887, {wxChoicebook, new_3, 3}}, - {1888, {wxChoicebook, addPage, 3}}, - {1889, {wxChoicebook, advanceSelection, 1}}, - {1890, {wxChoicebook, assignImageList, 1}}, - {1891, {wxChoicebook, create, 3}}, - {1892, {wxChoicebook, deleteAllPages, 0}}, - {1893, {wxChoicebook, deletePage, 1}}, - {1894, {wxChoicebook, removePage, 1}}, - {1895, {wxChoicebook, getCurrentPage, 0}}, - {1896, {wxChoicebook, getImageList, 0}}, - {1898, {wxChoicebook, getPage, 1}}, - {1899, {wxChoicebook, getPageCount, 0}}, - {1900, {wxChoicebook, getPageImage, 1}}, - {1901, {wxChoicebook, getPageText, 1}}, - {1902, {wxChoicebook, getSelection, 0}}, - {1903, {wxChoicebook, hitTest, 2}}, - {1904, {wxChoicebook, insertPage, 4}}, - {1905, {wxChoicebook, setImageList, 1}}, - {1906, {wxChoicebook, setPageSize, 1}}, - {1907, {wxChoicebook, setPageImage, 2}}, - {1908, {wxChoicebook, setPageText, 2}}, - {1909, {wxChoicebook, setSelection, 1}}, - {1910, {wxChoicebook, changeSelection, 1}}, - {1911, {wxChoicebook, 'Destroy', undefined}}, - {1912, {wxToolbook, new_0, 0}}, - {1913, {wxToolbook, new_3, 3}}, - {1914, {wxToolbook, addPage, 3}}, - {1915, {wxToolbook, advanceSelection, 1}}, - {1916, {wxToolbook, assignImageList, 1}}, - {1917, {wxToolbook, create, 3}}, - {1918, {wxToolbook, deleteAllPages, 0}}, - {1919, {wxToolbook, deletePage, 1}}, - {1920, {wxToolbook, removePage, 1}}, - {1921, {wxToolbook, getCurrentPage, 0}}, - {1922, {wxToolbook, getImageList, 0}}, - {1924, {wxToolbook, getPage, 1}}, - {1925, {wxToolbook, getPageCount, 0}}, - {1926, {wxToolbook, getPageImage, 1}}, - {1927, {wxToolbook, getPageText, 1}}, - {1928, {wxToolbook, getSelection, 0}}, - {1930, {wxToolbook, hitTest, 2}}, - {1931, {wxToolbook, insertPage, 4}}, - {1932, {wxToolbook, setImageList, 1}}, - {1933, {wxToolbook, setPageSize, 1}}, - {1934, {wxToolbook, setPageImage, 2}}, - {1935, {wxToolbook, setPageText, 2}}, - {1936, {wxToolbook, setSelection, 1}}, - {1937, {wxToolbook, changeSelection, 1}}, - {1938, {wxToolbook, 'Destroy', undefined}}, - {1939, {wxListbook, new_0, 0}}, - {1940, {wxListbook, new_3, 3}}, - {1941, {wxListbook, addPage, 3}}, - {1942, {wxListbook, advanceSelection, 1}}, - {1943, {wxListbook, assignImageList, 1}}, - {1944, {wxListbook, create, 3}}, - {1945, {wxListbook, deleteAllPages, 0}}, - {1946, {wxListbook, deletePage, 1}}, - {1947, {wxListbook, removePage, 1}}, - {1948, {wxListbook, getCurrentPage, 0}}, - {1949, {wxListbook, getImageList, 0}}, - {1951, {wxListbook, getPage, 1}}, - {1952, {wxListbook, getPageCount, 0}}, - {1953, {wxListbook, getPageImage, 1}}, - {1954, {wxListbook, getPageText, 1}}, - {1955, {wxListbook, getSelection, 0}}, - {1957, {wxListbook, hitTest, 2}}, - {1958, {wxListbook, insertPage, 4}}, - {1959, {wxListbook, setImageList, 1}}, - {1960, {wxListbook, setPageSize, 1}}, - {1961, {wxListbook, setPageImage, 2}}, - {1962, {wxListbook, setPageText, 2}}, - {1963, {wxListbook, setSelection, 1}}, - {1964, {wxListbook, changeSelection, 1}}, - {1965, {wxListbook, 'Destroy', undefined}}, - {1966, {wxTreebook, new_0, 0}}, - {1967, {wxTreebook, new_3, 3}}, - {1968, {wxTreebook, addPage, 3}}, - {1969, {wxTreebook, advanceSelection, 1}}, - {1970, {wxTreebook, assignImageList, 1}}, - {1971, {wxTreebook, create, 3}}, - {1972, {wxTreebook, deleteAllPages, 0}}, - {1973, {wxTreebook, deletePage, 1}}, - {1974, {wxTreebook, removePage, 1}}, - {1975, {wxTreebook, getCurrentPage, 0}}, - {1976, {wxTreebook, getImageList, 0}}, - {1978, {wxTreebook, getPage, 1}}, - {1979, {wxTreebook, getPageCount, 0}}, - {1980, {wxTreebook, getPageImage, 1}}, - {1981, {wxTreebook, getPageText, 1}}, - {1982, {wxTreebook, getSelection, 0}}, - {1983, {wxTreebook, expandNode, 2}}, - {1984, {wxTreebook, isNodeExpanded, 1}}, - {1986, {wxTreebook, hitTest, 2}}, - {1987, {wxTreebook, insertPage, 4}}, - {1988, {wxTreebook, insertSubPage, 4}}, - {1989, {wxTreebook, setImageList, 1}}, - {1990, {wxTreebook, setPageSize, 1}}, - {1991, {wxTreebook, setPageImage, 2}}, - {1992, {wxTreebook, setPageText, 2}}, - {1993, {wxTreebook, setSelection, 1}}, - {1994, {wxTreebook, changeSelection, 1}}, - {1995, {wxTreebook, 'Destroy', undefined}}, - {1998, {wxTreeCtrl, new_2, 2}}, - {1999, {wxTreeCtrl, new_0, 0}}, - {2001, {wxTreeCtrl, destruct, 0}}, - {2002, {wxTreeCtrl, addRoot, 2}}, - {2003, {wxTreeCtrl, appendItem, 3}}, - {2004, {wxTreeCtrl, assignImageList, 1}}, - {2005, {wxTreeCtrl, assignStateImageList, 1}}, - {2006, {wxTreeCtrl, collapse, 1}}, - {2007, {wxTreeCtrl, collapseAndReset, 1}}, - {2008, {wxTreeCtrl, create, 2}}, - {2009, {wxTreeCtrl, delete, 1}}, - {2010, {wxTreeCtrl, deleteAllItems, 0}}, - {2011, {wxTreeCtrl, deleteChildren, 1}}, - {2012, {wxTreeCtrl, ensureVisible, 1}}, - {2013, {wxTreeCtrl, expand, 1}}, - {2014, {wxTreeCtrl, getBoundingRect, 3}}, - {2016, {wxTreeCtrl, getChildrenCount, 2}}, - {2017, {wxTreeCtrl, getCount, 0}}, - {2018, {wxTreeCtrl, getEditControl, 0}}, - {2019, {wxTreeCtrl, getFirstChild, 2}}, - {2020, {wxTreeCtrl, getNextChild, 2}}, - {2021, {wxTreeCtrl, getFirstVisibleItem, 0}}, - {2022, {wxTreeCtrl, getImageList, 0}}, - {2023, {wxTreeCtrl, getIndent, 0}}, - {2024, {wxTreeCtrl, getItemBackgroundColour, 1}}, - {2025, {wxTreeCtrl, getItemData, 1}}, - {2026, {wxTreeCtrl, getItemFont, 1}}, - {2027, {wxTreeCtrl, getItemImage_1, 1}}, - {2028, {wxTreeCtrl, getItemImage_2, 2}}, - {2029, {wxTreeCtrl, getItemText, 1}}, - {2030, {wxTreeCtrl, getItemTextColour, 1}}, - {2031, {wxTreeCtrl, getLastChild, 1}}, - {2032, {wxTreeCtrl, getNextSibling, 1}}, - {2033, {wxTreeCtrl, getNextVisible, 1}}, - {2034, {wxTreeCtrl, getItemParent, 1}}, - {2035, {wxTreeCtrl, getPrevSibling, 1}}, - {2036, {wxTreeCtrl, getPrevVisible, 1}}, - {2037, {wxTreeCtrl, getRootItem, 0}}, - {2038, {wxTreeCtrl, getSelection, 0}}, - {2039, {wxTreeCtrl, getSelections, 1}}, - {2040, {wxTreeCtrl, getStateImageList, 0}}, - {2041, {wxTreeCtrl, hitTest, 1}}, - {2043, {wxTreeCtrl, insertItem, 4}}, - {2044, {wxTreeCtrl, isBold, 1}}, - {2045, {wxTreeCtrl, isExpanded, 1}}, - {2046, {wxTreeCtrl, isSelected, 1}}, - {2047, {wxTreeCtrl, isVisible, 1}}, - {2048, {wxTreeCtrl, itemHasChildren, 1}}, - {2049, {wxTreeCtrl, prependItem, 3}}, - {2050, {wxTreeCtrl, scrollTo, 1}}, - {2051, {wxTreeCtrl, selectItem_1, 1}}, - {2052, {wxTreeCtrl, selectItem_2, 2}}, - {2053, {wxTreeCtrl, setIndent, 1}}, - {2054, {wxTreeCtrl, setImageList, 1}}, - {2055, {wxTreeCtrl, setItemBackgroundColour, 2}}, - {2056, {wxTreeCtrl, setItemBold, 2}}, - {2057, {wxTreeCtrl, setItemData, 2}}, - {2058, {wxTreeCtrl, setItemDropHighlight, 2}}, - {2059, {wxTreeCtrl, setItemFont, 2}}, - {2060, {wxTreeCtrl, setItemHasChildren, 2}}, - {2061, {wxTreeCtrl, setItemImage_2, 2}}, - {2062, {wxTreeCtrl, setItemImage_3, 3}}, - {2063, {wxTreeCtrl, setItemText, 2}}, - {2064, {wxTreeCtrl, setItemTextColour, 2}}, - {2065, {wxTreeCtrl, setStateImageList, 1}}, - {2066, {wxTreeCtrl, setWindowStyle, 1}}, - {2067, {wxTreeCtrl, sortChildren, 1}}, - {2068, {wxTreeCtrl, toggle, 1}}, - {2069, {wxTreeCtrl, toggleItemSelection, 1}}, - {2070, {wxTreeCtrl, unselect, 0}}, - {2071, {wxTreeCtrl, unselectAll, 0}}, - {2072, {wxTreeCtrl, unselectItem, 1}}, - {2073, {wxScrollBar, new_0, 0}}, - {2074, {wxScrollBar, new_3, 3}}, - {2075, {wxScrollBar, destruct, 0}}, - {2076, {wxScrollBar, create, 3}}, - {2077, {wxScrollBar, getRange, 0}}, - {2078, {wxScrollBar, getPageSize, 0}}, - {2079, {wxScrollBar, getThumbPosition, 0}}, - {2080, {wxScrollBar, getThumbSize, 0}}, - {2081, {wxScrollBar, setThumbPosition, 1}}, - {2082, {wxScrollBar, setScrollbar, 5}}, - {2084, {wxSpinButton, new_2, 2}}, - {2085, {wxSpinButton, new_0, 0}}, - {2086, {wxSpinButton, create, 2}}, - {2087, {wxSpinButton, getMax, 0}}, - {2088, {wxSpinButton, getMin, 0}}, - {2089, {wxSpinButton, getValue, 0}}, - {2090, {wxSpinButton, setRange, 2}}, - {2091, {wxSpinButton, setValue, 1}}, - {2092, {wxSpinButton, 'Destroy', undefined}}, - {2093, {wxSpinCtrl, new_0, 0}}, - {2094, {wxSpinCtrl, new_2, 2}}, - {2096, {wxSpinCtrl, create, 2}}, - {2099, {wxSpinCtrl, setValue_1_1, 1}}, - {2100, {wxSpinCtrl, setValue_1_0, 1}}, - {2102, {wxSpinCtrl, getValue, 0}}, - {2104, {wxSpinCtrl, setRange, 2}}, - {2105, {wxSpinCtrl, setSelection, 2}}, - {2107, {wxSpinCtrl, getMin, 0}}, - {2109, {wxSpinCtrl, getMax, 0}}, - {2110, {wxSpinCtrl, 'Destroy', undefined}}, - {2111, {wxStaticText, new_0, 0}}, - {2112, {wxStaticText, new_4, 4}}, - {2113, {wxStaticText, create, 4}}, - {2114, {wxStaticText, getLabel, 0}}, - {2115, {wxStaticText, setLabel, 1}}, - {2116, {wxStaticText, wrap, 1}}, - {2117, {wxStaticText, 'Destroy', undefined}}, - {2118, {wxStaticBitmap, new_0, 0}}, - {2119, {wxStaticBitmap, new_4, 4}}, - {2120, {wxStaticBitmap, create, 4}}, - {2121, {wxStaticBitmap, getBitmap, 0}}, - {2122, {wxStaticBitmap, setBitmap, 1}}, - {2123, {wxStaticBitmap, 'Destroy', undefined}}, - {2124, {wxRadioBox, new, 7}}, - {2126, {wxRadioBox, destruct, 0}}, - {2127, {wxRadioBox, create, 7}}, - {2128, {wxRadioBox, enable_2, 2}}, - {2129, {wxRadioBox, enable_1, 1}}, - {2130, {wxRadioBox, getSelection, 0}}, - {2131, {wxRadioBox, getString, 1}}, - {2132, {wxRadioBox, setSelection, 1}}, - {2133, {wxRadioBox, show_2, 2}}, - {2134, {wxRadioBox, show_1, 1}}, - {2135, {wxRadioBox, getColumnCount, 0}}, - {2136, {wxRadioBox, getItemHelpText, 1}}, - {2137, {wxRadioBox, getItemToolTip, 1}}, - {2139, {wxRadioBox, getItemFromPoint, 1}}, - {2140, {wxRadioBox, getRowCount, 0}}, - {2141, {wxRadioBox, isItemEnabled, 1}}, - {2142, {wxRadioBox, isItemShown, 1}}, - {2143, {wxRadioBox, setItemHelpText, 2}}, - {2144, {wxRadioBox, setItemToolTip, 2}}, - {2145, {wxRadioButton, new_0, 0}}, - {2146, {wxRadioButton, new_4, 4}}, - {2147, {wxRadioButton, create, 4}}, - {2148, {wxRadioButton, getValue, 0}}, - {2149, {wxRadioButton, setValue, 1}}, - {2150, {wxRadioButton, 'Destroy', undefined}}, - {2152, {wxSlider, new_6, 6}}, - {2153, {wxSlider, new_0, 0}}, - {2154, {wxSlider, create, 6}}, - {2155, {wxSlider, getLineSize, 0}}, - {2156, {wxSlider, getMax, 0}}, - {2157, {wxSlider, getMin, 0}}, - {2158, {wxSlider, getPageSize, 0}}, - {2159, {wxSlider, getThumbLength, 0}}, - {2160, {wxSlider, getValue, 0}}, - {2161, {wxSlider, setLineSize, 1}}, - {2162, {wxSlider, setPageSize, 1}}, - {2163, {wxSlider, setRange, 2}}, - {2164, {wxSlider, setThumbLength, 1}}, - {2165, {wxSlider, setValue, 1}}, - {2166, {wxSlider, 'Destroy', undefined}}, - {2168, {wxDialog, new_4, 4}}, - {2169, {wxDialog, new_0, 0}}, - {2171, {wxDialog, destruct, 0}}, - {2172, {wxDialog, create, 4}}, - {2173, {wxDialog, createButtonSizer, 1}}, - {2174, {wxDialog, createStdDialogButtonSizer, 1}}, - {2175, {wxDialog, endModal, 1}}, - {2176, {wxDialog, getAffirmativeId, 0}}, - {2177, {wxDialog, getReturnCode, 0}}, - {2178, {wxDialog, isModal, 0}}, - {2179, {wxDialog, setAffirmativeId, 1}}, - {2180, {wxDialog, setReturnCode, 1}}, - {2181, {wxDialog, show, 1}}, - {2182, {wxDialog, showModal, 0}}, - {2183, {wxColourDialog, new_0, 0}}, - {2184, {wxColourDialog, new_2, 2}}, - {2185, {wxColourDialog, destruct, 0}}, - {2186, {wxColourDialog, create, 2}}, - {2187, {wxColourDialog, getColourData, 0}}, - {2188, {wxColourData, new_0, 0}}, - {2189, {wxColourData, new_1, 1}}, - {2190, {wxColourData, destruct, 0}}, - {2191, {wxColourData, getChooseFull, 0}}, - {2192, {wxColourData, getColour, 0}}, - {2194, {wxColourData, getCustomColour, 1}}, - {2195, {wxColourData, setChooseFull, 1}}, - {2196, {wxColourData, setColour, 1}}, - {2197, {wxColourData, setCustomColour, 2}}, - {2198, {wxPalette, new_0, 0}}, - {2199, {wxPalette, new_4, 4}}, - {2201, {wxPalette, destruct, 0}}, - {2202, {wxPalette, create, 4}}, - {2203, {wxPalette, getColoursCount, 0}}, - {2204, {wxPalette, getPixel, 3}}, - {2205, {wxPalette, getRGB, 4}}, - {2206, {wxPalette, isOk, 0}}, - {2210, {wxDirDialog, new, 2}}, - {2211, {wxDirDialog, destruct, 0}}, - {2212, {wxDirDialog, getPath, 0}}, - {2213, {wxDirDialog, getMessage, 0}}, - {2214, {wxDirDialog, setMessage, 1}}, - {2215, {wxDirDialog, setPath, 1}}, - {2219, {wxFileDialog, new, 2}}, - {2220, {wxFileDialog, destruct, 0}}, - {2221, {wxFileDialog, getDirectory, 0}}, - {2222, {wxFileDialog, getFilename, 0}}, - {2223, {wxFileDialog, getFilenames, 1}}, - {2224, {wxFileDialog, getFilterIndex, 0}}, - {2225, {wxFileDialog, getMessage, 0}}, - {2226, {wxFileDialog, getPath, 0}}, - {2227, {wxFileDialog, getPaths, 1}}, - {2228, {wxFileDialog, getWildcard, 0}}, - {2229, {wxFileDialog, setDirectory, 1}}, - {2230, {wxFileDialog, setFilename, 1}}, - {2231, {wxFileDialog, setFilterIndex, 1}}, - {2232, {wxFileDialog, setMessage, 1}}, - {2233, {wxFileDialog, setPath, 1}}, - {2234, {wxFileDialog, setWildcard, 1}}, - {2235, {wxPickerBase, setInternalMargin, 1}}, - {2236, {wxPickerBase, getInternalMargin, 0}}, - {2237, {wxPickerBase, setTextCtrlProportion, 1}}, - {2238, {wxPickerBase, setPickerCtrlProportion, 1}}, - {2239, {wxPickerBase, getTextCtrlProportion, 0}}, - {2240, {wxPickerBase, getPickerCtrlProportion, 0}}, - {2241, {wxPickerBase, hasTextCtrl, 0}}, - {2242, {wxPickerBase, getTextCtrl, 0}}, - {2243, {wxPickerBase, isTextCtrlGrowable, 0}}, - {2244, {wxPickerBase, setPickerCtrlGrowable, 1}}, - {2245, {wxPickerBase, setTextCtrlGrowable, 1}}, - {2246, {wxPickerBase, isPickerCtrlGrowable, 0}}, - {2247, {wxFilePickerCtrl, new_0, 0}}, - {2248, {wxFilePickerCtrl, new_3, 3}}, - {2249, {wxFilePickerCtrl, create, 3}}, - {2250, {wxFilePickerCtrl, getPath, 0}}, - {2251, {wxFilePickerCtrl, setPath, 1}}, - {2252, {wxFilePickerCtrl, 'Destroy', undefined}}, - {2253, {wxDirPickerCtrl, new_0, 0}}, - {2254, {wxDirPickerCtrl, new_3, 3}}, - {2255, {wxDirPickerCtrl, create, 3}}, - {2256, {wxDirPickerCtrl, getPath, 0}}, - {2257, {wxDirPickerCtrl, setPath, 1}}, - {2258, {wxDirPickerCtrl, 'Destroy', undefined}}, - {2259, {wxColourPickerCtrl, new_0, 0}}, - {2260, {wxColourPickerCtrl, new_3, 3}}, - {2261, {wxColourPickerCtrl, create, 3}}, - {2262, {wxColourPickerCtrl, getColour, 0}}, - {2263, {wxColourPickerCtrl, setColour_1_1, 1}}, - {2264, {wxColourPickerCtrl, setColour_1_0, 1}}, - {2265, {wxColourPickerCtrl, 'Destroy', undefined}}, - {2266, {wxDatePickerCtrl, new_0, 0}}, - {2267, {wxDatePickerCtrl, new_3, 3}}, - {2268, {wxDatePickerCtrl, getRange, 2}}, - {2269, {wxDatePickerCtrl, getValue, 0}}, - {2270, {wxDatePickerCtrl, setRange, 2}}, - {2271, {wxDatePickerCtrl, setValue, 1}}, - {2272, {wxDatePickerCtrl, 'Destroy', undefined}}, - {2273, {wxFontPickerCtrl, new_0, 0}}, - {2274, {wxFontPickerCtrl, new_3, 3}}, - {2275, {wxFontPickerCtrl, create, 3}}, - {2276, {wxFontPickerCtrl, getSelectedFont, 0}}, - {2277, {wxFontPickerCtrl, setSelectedFont, 1}}, - {2278, {wxFontPickerCtrl, getMaxPointSize, 0}}, - {2279, {wxFontPickerCtrl, setMaxPointSize, 1}}, - {2280, {wxFontPickerCtrl, 'Destroy', undefined}}, - {2283, {wxFindReplaceDialog, new_0, 0}}, - {2284, {wxFindReplaceDialog, new_4, 4}}, - {2285, {wxFindReplaceDialog, destruct, 0}}, - {2286, {wxFindReplaceDialog, create, 4}}, - {2287, {wxFindReplaceDialog, getData, 0}}, - {2288, {wxFindReplaceData, new_0, 0}}, - {2289, {wxFindReplaceData, new_1, 1}}, - {2290, {wxFindReplaceData, getFindString, 0}}, - {2291, {wxFindReplaceData, getReplaceString, 0}}, - {2292, {wxFindReplaceData, getFlags, 0}}, - {2293, {wxFindReplaceData, setFlags, 1}}, - {2294, {wxFindReplaceData, setFindString, 1}}, - {2295, {wxFindReplaceData, setReplaceString, 1}}, - {2296, {wxFindReplaceData, 'Destroy', undefined}}, - {2297, {wxMultiChoiceDialog, new_0, 0}}, - {2299, {wxMultiChoiceDialog, new_5, 5}}, - {2300, {wxMultiChoiceDialog, getSelections, 0}}, - {2301, {wxMultiChoiceDialog, setSelections, 1}}, - {2302, {wxMultiChoiceDialog, 'Destroy', undefined}}, - {2303, {wxSingleChoiceDialog, new_0, 0}}, - {2305, {wxSingleChoiceDialog, new_5, 5}}, - {2306, {wxSingleChoiceDialog, getSelection, 0}}, - {2307, {wxSingleChoiceDialog, getStringSelection, 0}}, - {2308, {wxSingleChoiceDialog, setSelection, 1}}, - {2309, {wxSingleChoiceDialog, 'Destroy', undefined}}, - {2310, {wxTextEntryDialog, new, 3}}, - {2311, {wxTextEntryDialog, getValue, 0}}, - {2312, {wxTextEntryDialog, setValue, 1}}, - {2313, {wxTextEntryDialog, 'Destroy', undefined}}, - {2314, {wxPasswordEntryDialog, new, 3}}, - {2315, {wxPasswordEntryDialog, 'Destroy', undefined}}, - {2316, {wxFontData, new_0, 0}}, - {2317, {wxFontData, new_1, 1}}, - {2318, {wxFontData, destruct, 0}}, - {2319, {wxFontData, enableEffects, 1}}, - {2320, {wxFontData, getAllowSymbols, 0}}, - {2321, {wxFontData, getColour, 0}}, - {2322, {wxFontData, getChosenFont, 0}}, - {2323, {wxFontData, getEnableEffects, 0}}, - {2324, {wxFontData, getInitialFont, 0}}, - {2325, {wxFontData, getShowHelp, 0}}, - {2326, {wxFontData, setAllowSymbols, 1}}, - {2327, {wxFontData, setChosenFont, 1}}, - {2328, {wxFontData, setColour, 1}}, - {2329, {wxFontData, setInitialFont, 1}}, - {2330, {wxFontData, setRange, 2}}, - {2331, {wxFontData, setShowHelp, 1}}, - {2335, {wxFontDialog, new_0, 0}}, - {2337, {wxFontDialog, new_2, 2}}, - {2339, {wxFontDialog, create, 2}}, - {2340, {wxFontDialog, getFontData, 0}}, - {2342, {wxFontDialog, 'Destroy', undefined}}, - {2343, {wxProgressDialog, new, 3}}, - {2344, {wxProgressDialog, destruct, 0}}, - {2345, {wxProgressDialog, resume, 0}}, - {2346, {wxProgressDialog, update_2, 2}}, - {2347, {wxProgressDialog, update_0, 0}}, - {2348, {wxMessageDialog, new, 3}}, - {2349, {wxMessageDialog, destruct, 0}}, - {2350, {wxPageSetupDialog, new, 2}}, - {2351, {wxPageSetupDialog, destruct, 0}}, - {2352, {wxPageSetupDialog, getPageSetupData, 0}}, - {2353, {wxPageSetupDialog, showModal, 0}}, - {2354, {wxPageSetupDialogData, new_0, 0}}, - {2355, {wxPageSetupDialogData, new_1_0, 1}}, - {2356, {wxPageSetupDialogData, new_1_1, 1}}, - {2357, {wxPageSetupDialogData, destruct, 0}}, - {2358, {wxPageSetupDialogData, enableHelp, 1}}, - {2359, {wxPageSetupDialogData, enableMargins, 1}}, - {2360, {wxPageSetupDialogData, enableOrientation, 1}}, - {2361, {wxPageSetupDialogData, enablePaper, 1}}, - {2362, {wxPageSetupDialogData, enablePrinter, 1}}, - {2363, {wxPageSetupDialogData, getDefaultMinMargins, 0}}, - {2364, {wxPageSetupDialogData, getEnableMargins, 0}}, - {2365, {wxPageSetupDialogData, getEnableOrientation, 0}}, - {2366, {wxPageSetupDialogData, getEnablePaper, 0}}, - {2367, {wxPageSetupDialogData, getEnablePrinter, 0}}, - {2368, {wxPageSetupDialogData, getEnableHelp, 0}}, - {2369, {wxPageSetupDialogData, getDefaultInfo, 0}}, - {2370, {wxPageSetupDialogData, getMarginTopLeft, 0}}, - {2371, {wxPageSetupDialogData, getMarginBottomRight, 0}}, - {2372, {wxPageSetupDialogData, getMinMarginTopLeft, 0}}, - {2373, {wxPageSetupDialogData, getMinMarginBottomRight, 0}}, - {2374, {wxPageSetupDialogData, getPaperId, 0}}, - {2375, {wxPageSetupDialogData, getPaperSize, 0}}, - {2377, {wxPageSetupDialogData, getPrintData, 0}}, - {2378, {wxPageSetupDialogData, isOk, 0}}, - {2379, {wxPageSetupDialogData, setDefaultInfo, 1}}, - {2380, {wxPageSetupDialogData, setDefaultMinMargins, 1}}, - {2381, {wxPageSetupDialogData, setMarginTopLeft, 1}}, - {2382, {wxPageSetupDialogData, setMarginBottomRight, 1}}, - {2383, {wxPageSetupDialogData, setMinMarginTopLeft, 1}}, - {2384, {wxPageSetupDialogData, setMinMarginBottomRight, 1}}, - {2385, {wxPageSetupDialogData, setPaperId, 1}}, - {2386, {wxPageSetupDialogData, setPaperSize_1_1, 1}}, - {2387, {wxPageSetupDialogData, setPaperSize_1_0, 1}}, - {2388, {wxPageSetupDialogData, setPrintData, 1}}, - {2389, {wxPrintDialog, new_2_0, 2}}, - {2390, {wxPrintDialog, new_2_1, 2}}, - {2391, {wxPrintDialog, destruct, 0}}, - {2392, {wxPrintDialog, getPrintDialogData, 0}}, - {2393, {wxPrintDialog, getPrintDC, 0}}, - {2394, {wxPrintDialogData, new_0, 0}}, - {2395, {wxPrintDialogData, new_1_1, 1}}, - {2396, {wxPrintDialogData, new_1_0, 1}}, - {2397, {wxPrintDialogData, destruct, 0}}, - {2398, {wxPrintDialogData, enableHelp, 1}}, - {2399, {wxPrintDialogData, enablePageNumbers, 1}}, - {2400, {wxPrintDialogData, enablePrintToFile, 1}}, - {2401, {wxPrintDialogData, enableSelection, 1}}, - {2402, {wxPrintDialogData, getAllPages, 0}}, - {2403, {wxPrintDialogData, getCollate, 0}}, - {2404, {wxPrintDialogData, getFromPage, 0}}, - {2405, {wxPrintDialogData, getMaxPage, 0}}, - {2406, {wxPrintDialogData, getMinPage, 0}}, - {2407, {wxPrintDialogData, getNoCopies, 0}}, - {2408, {wxPrintDialogData, getPrintData, 0}}, - {2409, {wxPrintDialogData, getPrintToFile, 0}}, - {2410, {wxPrintDialogData, getSelection, 0}}, - {2411, {wxPrintDialogData, getToPage, 0}}, - {2412, {wxPrintDialogData, isOk, 0}}, - {2413, {wxPrintDialogData, setCollate, 1}}, - {2414, {wxPrintDialogData, setFromPage, 1}}, - {2415, {wxPrintDialogData, setMaxPage, 1}}, - {2416, {wxPrintDialogData, setMinPage, 1}}, - {2417, {wxPrintDialogData, setNoCopies, 1}}, - {2418, {wxPrintDialogData, setPrintData, 1}}, - {2419, {wxPrintDialogData, setPrintToFile, 1}}, - {2420, {wxPrintDialogData, setSelection, 1}}, - {2421, {wxPrintDialogData, setToPage, 1}}, - {2422, {wxPrintData, new_0, 0}}, - {2423, {wxPrintData, new_1, 1}}, - {2424, {wxPrintData, destruct, 0}}, - {2425, {wxPrintData, getCollate, 0}}, - {2426, {wxPrintData, getBin, 0}}, - {2427, {wxPrintData, getColour, 0}}, - {2428, {wxPrintData, getDuplex, 0}}, - {2429, {wxPrintData, getNoCopies, 0}}, - {2430, {wxPrintData, getOrientation, 0}}, - {2431, {wxPrintData, getPaperId, 0}}, - {2432, {wxPrintData, getPrinterName, 0}}, - {2433, {wxPrintData, getQuality, 0}}, - {2434, {wxPrintData, isOk, 0}}, - {2435, {wxPrintData, setBin, 1}}, - {2436, {wxPrintData, setCollate, 1}}, - {2437, {wxPrintData, setColour, 1}}, - {2438, {wxPrintData, setDuplex, 1}}, - {2439, {wxPrintData, setNoCopies, 1}}, - {2440, {wxPrintData, setOrientation, 1}}, - {2441, {wxPrintData, setPaperId, 1}}, - {2442, {wxPrintData, setPrinterName, 1}}, - {2443, {wxPrintData, setQuality, 1}}, - {2446, {wxPrintPreview, new_2, 2}}, - {2447, {wxPrintPreview, new_3, 3}}, - {2449, {wxPrintPreview, destruct, 0}}, - {2450, {wxPrintPreview, getCanvas, 0}}, - {2451, {wxPrintPreview, getCurrentPage, 0}}, - {2452, {wxPrintPreview, getFrame, 0}}, - {2453, {wxPrintPreview, getMaxPage, 0}}, - {2454, {wxPrintPreview, getMinPage, 0}}, - {2455, {wxPrintPreview, getPrintout, 0}}, - {2456, {wxPrintPreview, getPrintoutForPrinting, 0}}, - {2457, {wxPrintPreview, isOk, 0}}, - {2458, {wxPrintPreview, paintPage, 2}}, - {2459, {wxPrintPreview, print, 1}}, - {2460, {wxPrintPreview, renderPage, 1}}, - {2461, {wxPrintPreview, setCanvas, 1}}, - {2462, {wxPrintPreview, setCurrentPage, 1}}, - {2463, {wxPrintPreview, setFrame, 1}}, - {2464, {wxPrintPreview, setPrintout, 1}}, - {2465, {wxPrintPreview, setZoom, 1}}, - {2466, {wxPreviewFrame, new, 3}}, - {2467, {wxPreviewFrame, destruct, 0}}, - {2468, {wxPreviewFrame, createControlBar, 0}}, - {2469, {wxPreviewFrame, createCanvas, 0}}, - {2470, {wxPreviewFrame, initialize, 0}}, - {2471, {wxPreviewFrame, onCloseWindow, 1}}, - {2472, {wxPreviewControlBar, new, 4}}, - {2473, {wxPreviewControlBar, destruct, 0}}, - {2474, {wxPreviewControlBar, createButtons, 0}}, - {2475, {wxPreviewControlBar, getPrintPreview, 0}}, - {2476, {wxPreviewControlBar, getZoomControl, 0}}, - {2477, {wxPreviewControlBar, setZoomControl, 1}}, - {2479, {wxPrinter, new, 1}}, - {2480, {wxPrinter, createAbortWindow, 2}}, - {2481, {wxPrinter, getAbort, 0}}, - {2482, {wxPrinter, getLastError, 0}}, - {2483, {wxPrinter, getPrintDialogData, 0}}, - {2484, {wxPrinter, print, 3}}, - {2485, {wxPrinter, printDialog, 1}}, - {2486, {wxPrinter, reportError, 3}}, - {2487, {wxPrinter, setup, 1}}, - {2488, {wxPrinter, 'Destroy', undefined}}, - {2489, {wxXmlResource, new_1, 1}}, - {2490, {wxXmlResource, new_2, 2}}, - {2491, {wxXmlResource, destruct, 0}}, - {2492, {wxXmlResource, attachUnknownControl, 3}}, - {2493, {wxXmlResource, clearHandlers, 0}}, - {2494, {wxXmlResource, compareVersion, 4}}, - {2495, {wxXmlResource, get, 0}}, - {2496, {wxXmlResource, getFlags, 0}}, - {2497, {wxXmlResource, getVersion, 0}}, - {2498, {wxXmlResource, getXRCID, 2}}, - {2499, {wxXmlResource, initAllHandlers, 0}}, - {2500, {wxXmlResource, load, 1}}, - {2501, {wxXmlResource, loadBitmap, 1}}, - {2502, {wxXmlResource, loadDialog_2, 2}}, - {2503, {wxXmlResource, loadDialog_3, 3}}, - {2504, {wxXmlResource, loadFrame_2, 2}}, - {2505, {wxXmlResource, loadFrame_3, 3}}, - {2506, {wxXmlResource, loadIcon, 1}}, - {2507, {wxXmlResource, loadMenu, 1}}, - {2508, {wxXmlResource, loadMenuBar_2, 2}}, - {2509, {wxXmlResource, loadMenuBar_1, 1}}, - {2510, {wxXmlResource, loadPanel_2, 2}}, - {2511, {wxXmlResource, loadPanel_3, 3}}, - {2512, {wxXmlResource, loadToolBar, 2}}, - {2513, {wxXmlResource, set, 1}}, - {2514, {wxXmlResource, setFlags, 1}}, - {2515, {wxXmlResource, unload, 1}}, - {2516, {wxXmlResource, xrcctrl, 3}}, - {2517, {wxHtmlEasyPrinting, new, 1}}, - {2518, {wxHtmlEasyPrinting, destruct, 0}}, - {2519, {wxHtmlEasyPrinting, getPrintData, 0}}, - {2520, {wxHtmlEasyPrinting, getPageSetupData, 0}}, - {2521, {wxHtmlEasyPrinting, previewFile, 1}}, - {2522, {wxHtmlEasyPrinting, previewText, 2}}, - {2523, {wxHtmlEasyPrinting, printFile, 1}}, - {2524, {wxHtmlEasyPrinting, printText, 2}}, - {2525, {wxHtmlEasyPrinting, pageSetup, 0}}, - {2526, {wxHtmlEasyPrinting, setFonts, 3}}, - {2527, {wxHtmlEasyPrinting, setHeader, 2}}, - {2528, {wxHtmlEasyPrinting, setFooter, 2}}, - {2530, {wxGLCanvas, new_2, 2}}, - {2531, {wxGLCanvas, new_3_1, 3}}, - {2532, {wxGLCanvas, new_3_0, 3}}, - {2533, {wxGLCanvas, getContext, 0}}, - {2535, {wxGLCanvas, setCurrent, 0}}, - {2536, {wxGLCanvas, swapBuffers, 0}}, - {2537, {wxGLCanvas, 'Destroy', undefined}}, - {2538, {wxAuiManager, new, 1}}, - {2539, {wxAuiManager, destruct, 0}}, - {2540, {wxAuiManager, addPane_2_1, 2}}, - {2541, {wxAuiManager, addPane_3, 3}}, - {2542, {wxAuiManager, addPane_2_0, 2}}, - {2543, {wxAuiManager, detachPane, 1}}, - {2544, {wxAuiManager, getAllPanes, 0}}, - {2545, {wxAuiManager, getArtProvider, 0}}, - {2546, {wxAuiManager, getDockSizeConstraint, 2}}, - {2547, {wxAuiManager, getFlags, 0}}, - {2548, {wxAuiManager, getManagedWindow, 0}}, - {2549, {wxAuiManager, getManager, 1}}, - {2550, {wxAuiManager, getPane_1_1, 1}}, - {2551, {wxAuiManager, getPane_1_0, 1}}, - {2552, {wxAuiManager, hideHint, 0}}, - {2553, {wxAuiManager, insertPane, 3}}, - {2554, {wxAuiManager, loadPaneInfo, 2}}, - {2555, {wxAuiManager, loadPerspective, 2}}, - {2556, {wxAuiManager, savePaneInfo, 1}}, - {2557, {wxAuiManager, savePerspective, 0}}, - {2558, {wxAuiManager, setArtProvider, 1}}, - {2559, {wxAuiManager, setDockSizeConstraint, 2}}, - {2560, {wxAuiManager, setFlags, 1}}, - {2561, {wxAuiManager, setManagedWindow, 1}}, - {2562, {wxAuiManager, showHint, 1}}, - {2563, {wxAuiManager, unInit, 0}}, - {2564, {wxAuiManager, update, 0}}, - {2565, {wxAuiPaneInfo, new_0, 0}}, - {2566, {wxAuiPaneInfo, new_1, 1}}, - {2567, {wxAuiPaneInfo, destruct, 0}}, - {2568, {wxAuiPaneInfo, bestSize_1, 1}}, - {2569, {wxAuiPaneInfo, bestSize_2, 2}}, - {2570, {wxAuiPaneInfo, bottom, 0}}, - {2571, {wxAuiPaneInfo, bottomDockable, 1}}, - {2572, {wxAuiPaneInfo, caption, 1}}, - {2573, {wxAuiPaneInfo, captionVisible, 1}}, - {2574, {wxAuiPaneInfo, centre, 0}}, - {2575, {wxAuiPaneInfo, centrePane, 0}}, - {2576, {wxAuiPaneInfo, closeButton, 1}}, - {2577, {wxAuiPaneInfo, defaultPane, 0}}, - {2578, {wxAuiPaneInfo, destroyOnClose, 1}}, - {2579, {wxAuiPaneInfo, direction, 1}}, - {2580, {wxAuiPaneInfo, dock, 0}}, - {2581, {wxAuiPaneInfo, dockable, 1}}, - {2582, {wxAuiPaneInfo, fixed, 0}}, - {2583, {wxAuiPaneInfo, float, 0}}, - {2584, {wxAuiPaneInfo, floatable, 1}}, - {2585, {wxAuiPaneInfo, floatingPosition_1, 1}}, - {2586, {wxAuiPaneInfo, floatingPosition_2, 2}}, - {2587, {wxAuiPaneInfo, floatingSize_1, 1}}, - {2588, {wxAuiPaneInfo, floatingSize_2, 2}}, - {2589, {wxAuiPaneInfo, gripper, 1}}, - {2590, {wxAuiPaneInfo, gripperTop, 1}}, - {2591, {wxAuiPaneInfo, hasBorder, 0}}, - {2592, {wxAuiPaneInfo, hasCaption, 0}}, - {2593, {wxAuiPaneInfo, hasCloseButton, 0}}, - {2594, {wxAuiPaneInfo, hasFlag, 1}}, - {2595, {wxAuiPaneInfo, hasGripper, 0}}, - {2596, {wxAuiPaneInfo, hasGripperTop, 0}}, - {2597, {wxAuiPaneInfo, hasMaximizeButton, 0}}, - {2598, {wxAuiPaneInfo, hasMinimizeButton, 0}}, - {2599, {wxAuiPaneInfo, hasPinButton, 0}}, - {2600, {wxAuiPaneInfo, hide, 0}}, - {2601, {wxAuiPaneInfo, isBottomDockable, 0}}, - {2602, {wxAuiPaneInfo, isDocked, 0}}, - {2603, {wxAuiPaneInfo, isFixed, 0}}, - {2604, {wxAuiPaneInfo, isFloatable, 0}}, - {2605, {wxAuiPaneInfo, isFloating, 0}}, - {2606, {wxAuiPaneInfo, isLeftDockable, 0}}, - {2607, {wxAuiPaneInfo, isMovable, 0}}, - {2608, {wxAuiPaneInfo, isOk, 0}}, - {2609, {wxAuiPaneInfo, isResizable, 0}}, - {2610, {wxAuiPaneInfo, isRightDockable, 0}}, - {2611, {wxAuiPaneInfo, isShown, 0}}, - {2612, {wxAuiPaneInfo, isToolbar, 0}}, - {2613, {wxAuiPaneInfo, isTopDockable, 0}}, - {2614, {wxAuiPaneInfo, layer, 1}}, - {2615, {wxAuiPaneInfo, left, 0}}, - {2616, {wxAuiPaneInfo, leftDockable, 1}}, - {2617, {wxAuiPaneInfo, maxSize_1, 1}}, - {2618, {wxAuiPaneInfo, maxSize_2, 2}}, - {2619, {wxAuiPaneInfo, maximizeButton, 1}}, - {2620, {wxAuiPaneInfo, minSize_1, 1}}, - {2621, {wxAuiPaneInfo, minSize_2, 2}}, - {2622, {wxAuiPaneInfo, minimizeButton, 1}}, - {2623, {wxAuiPaneInfo, movable, 1}}, - {2624, {wxAuiPaneInfo, name, 1}}, - {2625, {wxAuiPaneInfo, paneBorder, 1}}, - {2626, {wxAuiPaneInfo, pinButton, 1}}, - {2627, {wxAuiPaneInfo, position, 1}}, - {2628, {wxAuiPaneInfo, resizable, 1}}, - {2629, {wxAuiPaneInfo, right, 0}}, - {2630, {wxAuiPaneInfo, rightDockable, 1}}, - {2631, {wxAuiPaneInfo, row, 1}}, - {2632, {wxAuiPaneInfo, safeSet, 1}}, - {2633, {wxAuiPaneInfo, setFlag, 2}}, - {2634, {wxAuiPaneInfo, show, 1}}, - {2635, {wxAuiPaneInfo, toolbarPane, 0}}, - {2636, {wxAuiPaneInfo, top, 0}}, - {2637, {wxAuiPaneInfo, topDockable, 1}}, - {2638, {wxAuiPaneInfo, window, 1}}, - {2639, {wxAuiNotebook, new_0, 0}}, - {2640, {wxAuiNotebook, new_2, 2}}, - {2641, {wxAuiNotebook, addPage, 3}}, - {2642, {wxAuiNotebook, create, 2}}, - {2643, {wxAuiNotebook, deletePage, 1}}, - {2644, {wxAuiNotebook, getArtProvider, 0}}, - {2645, {wxAuiNotebook, getPage, 1}}, - {2646, {wxAuiNotebook, getPageBitmap, 1}}, - {2647, {wxAuiNotebook, getPageCount, 0}}, - {2648, {wxAuiNotebook, getPageIndex, 1}}, - {2649, {wxAuiNotebook, getPageText, 1}}, - {2650, {wxAuiNotebook, getSelection, 0}}, - {2651, {wxAuiNotebook, insertPage, 4}}, - {2652, {wxAuiNotebook, removePage, 1}}, - {2653, {wxAuiNotebook, setArtProvider, 1}}, - {2654, {wxAuiNotebook, setFont, 1}}, - {2655, {wxAuiNotebook, setPageBitmap, 2}}, - {2656, {wxAuiNotebook, setPageText, 2}}, - {2657, {wxAuiNotebook, setSelection, 1}}, - {2658, {wxAuiNotebook, setTabCtrlHeight, 1}}, - {2659, {wxAuiNotebook, setUniformBitmapSize, 1}}, - {2660, {wxAuiNotebook, 'Destroy', undefined}}, - {2661, {wxMDIParentFrame, new_0, 0}}, - {2662, {wxMDIParentFrame, new_4, 4}}, - {2663, {wxMDIParentFrame, destruct, 0}}, - {2664, {wxMDIParentFrame, activateNext, 0}}, - {2665, {wxMDIParentFrame, activatePrevious, 0}}, - {2666, {wxMDIParentFrame, arrangeIcons, 0}}, - {2667, {wxMDIParentFrame, cascade, 0}}, - {2668, {wxMDIParentFrame, create, 4}}, - {2669, {wxMDIParentFrame, getActiveChild, 0}}, - {2670, {wxMDIParentFrame, getClientWindow, 0}}, - {2671, {wxMDIParentFrame, tile, 1}}, - {2672, {wxMDIChildFrame, new_0, 0}}, - {2673, {wxMDIChildFrame, new_4, 4}}, - {2674, {wxMDIChildFrame, destruct, 0}}, - {2675, {wxMDIChildFrame, activate, 0}}, - {2676, {wxMDIChildFrame, create, 4}}, - {2677, {wxMDIChildFrame, maximize, 1}}, - {2678, {wxMDIChildFrame, restore, 0}}, - {2679, {wxMDIClientWindow, new_0, 0}}, - {2680, {wxMDIClientWindow, new_2, 2}}, - {2681, {wxMDIClientWindow, destruct, 0}}, - {2682, {wxMDIClientWindow, createClient, 2}}, - {2683, {wxLayoutAlgorithm, new, 0}}, - {2684, {wxLayoutAlgorithm, layoutFrame, 2}}, - {2685, {wxLayoutAlgorithm, layoutMDIFrame, 2}}, - {2686, {wxLayoutAlgorithm, layoutWindow, 2}}, - {2687, {wxLayoutAlgorithm, 'Destroy', undefined}}, - {2688, {wxEvent, getId, 0}}, - {2689, {wxEvent, getSkipped, 0}}, - {2690, {wxEvent, getTimestamp, 0}}, - {2691, {wxEvent, isCommandEvent, 0}}, - {2692, {wxEvent, resumePropagation, 1}}, - {2693, {wxEvent, shouldPropagate, 0}}, - {2694, {wxEvent, skip, 1}}, - {2695, {wxEvent, stopPropagation, 0}}, - {2696, {wxCommandEvent, getClientData, 0}}, - {2697, {wxCommandEvent, getExtraLong, 0}}, - {2698, {wxCommandEvent, getInt, 0}}, - {2699, {wxCommandEvent, getSelection, 0}}, - {2700, {wxCommandEvent, getString, 0}}, - {2701, {wxCommandEvent, isChecked, 0}}, - {2702, {wxCommandEvent, isSelection, 0}}, - {2703, {wxCommandEvent, setInt, 1}}, - {2704, {wxCommandEvent, setString, 1}}, - {2705, {wxScrollEvent, getOrientation, 0}}, - {2706, {wxScrollEvent, getPosition, 0}}, - {2707, {wxScrollWinEvent, getOrientation, 0}}, - {2708, {wxScrollWinEvent, getPosition, 0}}, - {2709, {wxMouseEvent, altDown, 0}}, - {2710, {wxMouseEvent, button, 1}}, - {2711, {wxMouseEvent, buttonDClick, 1}}, - {2712, {wxMouseEvent, buttonDown, 1}}, - {2713, {wxMouseEvent, buttonUp, 1}}, - {2714, {wxMouseEvent, cmdDown, 0}}, - {2715, {wxMouseEvent, controlDown, 0}}, - {2716, {wxMouseEvent, dragging, 0}}, - {2717, {wxMouseEvent, entering, 0}}, - {2718, {wxMouseEvent, getButton, 0}}, - {2721, {wxMouseEvent, getPosition, 0}}, - {2722, {wxMouseEvent, getLogicalPosition, 1}}, - {2723, {wxMouseEvent, getLinesPerAction, 0}}, - {2724, {wxMouseEvent, getWheelRotation, 0}}, - {2725, {wxMouseEvent, getWheelDelta, 0}}, - {2726, {wxMouseEvent, getX, 0}}, - {2727, {wxMouseEvent, getY, 0}}, - {2728, {wxMouseEvent, isButton, 0}}, - {2729, {wxMouseEvent, isPageScroll, 0}}, - {2730, {wxMouseEvent, leaving, 0}}, - {2731, {wxMouseEvent, leftDClick, 0}}, - {2732, {wxMouseEvent, leftDown, 0}}, - {2733, {wxMouseEvent, leftIsDown, 0}}, - {2734, {wxMouseEvent, leftUp, 0}}, - {2735, {wxMouseEvent, metaDown, 0}}, - {2736, {wxMouseEvent, middleDClick, 0}}, - {2737, {wxMouseEvent, middleDown, 0}}, - {2738, {wxMouseEvent, middleIsDown, 0}}, - {2739, {wxMouseEvent, middleUp, 0}}, - {2740, {wxMouseEvent, moving, 0}}, - {2741, {wxMouseEvent, rightDClick, 0}}, - {2742, {wxMouseEvent, rightDown, 0}}, - {2743, {wxMouseEvent, rightIsDown, 0}}, - {2744, {wxMouseEvent, rightUp, 0}}, - {2745, {wxMouseEvent, shiftDown, 0}}, - {2746, {wxSetCursorEvent, getCursor, 0}}, - {2747, {wxSetCursorEvent, getX, 0}}, - {2748, {wxSetCursorEvent, getY, 0}}, - {2749, {wxSetCursorEvent, hasCursor, 0}}, - {2750, {wxSetCursorEvent, setCursor, 1}}, - {2751, {wxKeyEvent, altDown, 0}}, - {2752, {wxKeyEvent, cmdDown, 0}}, - {2753, {wxKeyEvent, controlDown, 0}}, - {2754, {wxKeyEvent, getKeyCode, 0}}, - {2755, {wxKeyEvent, getModifiers, 0}}, - {2758, {wxKeyEvent, getPosition, 0}}, - {2759, {wxKeyEvent, getRawKeyCode, 0}}, - {2760, {wxKeyEvent, getRawKeyFlags, 0}}, - {2761, {wxKeyEvent, getUnicodeKey, 0}}, - {2762, {wxKeyEvent, getX, 0}}, - {2763, {wxKeyEvent, getY, 0}}, - {2764, {wxKeyEvent, hasModifiers, 0}}, - {2765, {wxKeyEvent, metaDown, 0}}, - {2766, {wxKeyEvent, shiftDown, 0}}, - {2767, {wxSizeEvent, getSize, 0}}, - {2768, {wxMoveEvent, getPosition, 0}}, - {2769, {wxEraseEvent, getDC, 0}}, - {2770, {wxFocusEvent, getWindow, 0}}, - {2771, {wxChildFocusEvent, getWindow, 0}}, - {2772, {wxMenuEvent, getMenu, 0}}, - {2773, {wxMenuEvent, getMenuId, 0}}, - {2774, {wxMenuEvent, isPopup, 0}}, - {2775, {wxCloseEvent, canVeto, 0}}, - {2776, {wxCloseEvent, getLoggingOff, 0}}, - {2777, {wxCloseEvent, setCanVeto, 1}}, - {2778, {wxCloseEvent, setLoggingOff, 1}}, - {2779, {wxCloseEvent, veto, 1}}, - {2780, {wxShowEvent, setShow, 1}}, - {2781, {wxShowEvent, getShow, 0}}, - {2782, {wxIconizeEvent, iconized, 0}}, - {2783, {wxJoystickEvent, buttonDown, 1}}, - {2784, {wxJoystickEvent, buttonIsDown, 1}}, - {2785, {wxJoystickEvent, buttonUp, 1}}, - {2786, {wxJoystickEvent, getButtonChange, 0}}, - {2787, {wxJoystickEvent, getButtonState, 0}}, - {2788, {wxJoystickEvent, getJoystick, 0}}, - {2789, {wxJoystickEvent, getPosition, 0}}, - {2790, {wxJoystickEvent, getZPosition, 0}}, - {2791, {wxJoystickEvent, isButton, 0}}, - {2792, {wxJoystickEvent, isMove, 0}}, - {2793, {wxJoystickEvent, isZMove, 0}}, - {2794, {wxUpdateUIEvent, canUpdate, 1}}, - {2795, {wxUpdateUIEvent, check, 1}}, - {2796, {wxUpdateUIEvent, enable, 1}}, - {2797, {wxUpdateUIEvent, show, 1}}, - {2798, {wxUpdateUIEvent, getChecked, 0}}, - {2799, {wxUpdateUIEvent, getEnabled, 0}}, - {2800, {wxUpdateUIEvent, getShown, 0}}, - {2801, {wxUpdateUIEvent, getSetChecked, 0}}, - {2802, {wxUpdateUIEvent, getSetEnabled, 0}}, - {2803, {wxUpdateUIEvent, getSetShown, 0}}, - {2804, {wxUpdateUIEvent, getSetText, 0}}, - {2805, {wxUpdateUIEvent, getText, 0}}, - {2806, {wxUpdateUIEvent, getMode, 0}}, - {2807, {wxUpdateUIEvent, getUpdateInterval, 0}}, - {2808, {wxUpdateUIEvent, resetUpdateTime, 0}}, - {2809, {wxUpdateUIEvent, setMode, 1}}, - {2810, {wxUpdateUIEvent, setText, 1}}, - {2811, {wxUpdateUIEvent, setUpdateInterval, 1}}, - {2812, {wxMouseCaptureChangedEvent, getCapturedWindow, 0}}, - {2813, {wxPaletteChangedEvent, setChangedWindow, 1}}, - {2814, {wxPaletteChangedEvent, getChangedWindow, 0}}, - {2815, {wxQueryNewPaletteEvent, setPaletteRealized, 1}}, - {2816, {wxQueryNewPaletteEvent, getPaletteRealized, 0}}, - {2817, {wxNavigationKeyEvent, getDirection, 0}}, - {2818, {wxNavigationKeyEvent, setDirection, 1}}, - {2819, {wxNavigationKeyEvent, isWindowChange, 0}}, - {2820, {wxNavigationKeyEvent, setWindowChange, 1}}, - {2821, {wxNavigationKeyEvent, isFromTab, 0}}, - {2822, {wxNavigationKeyEvent, setFromTab, 1}}, - {2823, {wxNavigationKeyEvent, getCurrentFocus, 0}}, - {2824, {wxNavigationKeyEvent, setCurrentFocus, 1}}, - {2825, {wxHelpEvent, getOrigin, 0}}, - {2826, {wxHelpEvent, getPosition, 0}}, - {2827, {wxHelpEvent, setOrigin, 1}}, - {2828, {wxHelpEvent, setPosition, 1}}, - {2829, {wxContextMenuEvent, getPosition, 0}}, - {2830, {wxContextMenuEvent, setPosition, 1}}, - {2831, {wxIdleEvent, canSend, 1}}, - {2832, {wxIdleEvent, getMode, 0}}, - {2833, {wxIdleEvent, requestMore, 1}}, - {2834, {wxIdleEvent, moreRequested, 0}}, - {2835, {wxIdleEvent, setMode, 1}}, - {2836, {wxGridEvent, altDown, 0}}, - {2837, {wxGridEvent, controlDown, 0}}, - {2838, {wxGridEvent, getCol, 0}}, - {2839, {wxGridEvent, getPosition, 0}}, - {2840, {wxGridEvent, getRow, 0}}, - {2841, {wxGridEvent, metaDown, 0}}, - {2842, {wxGridEvent, selecting, 0}}, - {2843, {wxGridEvent, shiftDown, 0}}, - {2844, {wxNotifyEvent, allow, 0}}, - {2845, {wxNotifyEvent, isAllowed, 0}}, - {2846, {wxNotifyEvent, veto, 0}}, - {2847, {wxSashEvent, getEdge, 0}}, - {2848, {wxSashEvent, getDragRect, 0}}, - {2849, {wxSashEvent, getDragStatus, 0}}, - {2850, {wxListEvent, getCacheFrom, 0}}, - {2851, {wxListEvent, getCacheTo, 0}}, - {2852, {wxListEvent, getKeyCode, 0}}, - {2853, {wxListEvent, getIndex, 0}}, - {2854, {wxListEvent, getColumn, 0}}, - {2855, {wxListEvent, getPoint, 0}}, - {2856, {wxListEvent, getLabel, 0}}, - {2857, {wxListEvent, getText, 0}}, - {2858, {wxListEvent, getImage, 0}}, - {2859, {wxListEvent, getData, 0}}, - {2860, {wxListEvent, getMask, 0}}, - {2861, {wxListEvent, getItem, 0}}, - {2862, {wxListEvent, isEditCancelled, 0}}, - {2863, {wxDateEvent, getDate, 0}}, - {2864, {wxCalendarEvent, getWeekDay, 0}}, - {2865, {wxFileDirPickerEvent, getPath, 0}}, - {2866, {wxColourPickerEvent, getColour, 0}}, - {2867, {wxFontPickerEvent, getFont, 0}}, - {2868, {wxStyledTextEvent, getPosition, 0}}, - {2869, {wxStyledTextEvent, getKey, 0}}, - {2870, {wxStyledTextEvent, getModifiers, 0}}, - {2871, {wxStyledTextEvent, getModificationType, 0}}, - {2872, {wxStyledTextEvent, getText, 0}}, - {2873, {wxStyledTextEvent, getLength, 0}}, - {2874, {wxStyledTextEvent, getLinesAdded, 0}}, - {2875, {wxStyledTextEvent, getLine, 0}}, - {2876, {wxStyledTextEvent, getFoldLevelNow, 0}}, - {2877, {wxStyledTextEvent, getFoldLevelPrev, 0}}, - {2878, {wxStyledTextEvent, getMargin, 0}}, - {2879, {wxStyledTextEvent, getMessage, 0}}, - {2880, {wxStyledTextEvent, getWParam, 0}}, - {2881, {wxStyledTextEvent, getLParam, 0}}, - {2882, {wxStyledTextEvent, getListType, 0}}, - {2883, {wxStyledTextEvent, getX, 0}}, - {2884, {wxStyledTextEvent, getY, 0}}, - {2885, {wxStyledTextEvent, getDragText, 0}}, - {2886, {wxStyledTextEvent, getDragAllowMove, 0}}, - {2887, {wxStyledTextEvent, getDragResult, 0}}, - {2888, {wxStyledTextEvent, getShift, 0}}, - {2889, {wxStyledTextEvent, getControl, 0}}, - {2890, {wxStyledTextEvent, getAlt, 0}}, - {2891, {utils, getKeyState, 1}}, - {2892, {utils, getMousePosition, 2}}, - {2893, {utils, getMouseState, 0}}, - {2894, {utils, setDetectableAutoRepeat, 1}}, - {2895, {utils, bell, 0}}, - {2896, {utils, findMenuItemId, 3}}, - {2897, {utils, genericFindWindowAtPoint, 1}}, - {2898, {utils, findWindowAtPoint, 1}}, - {2899, {utils, beginBusyCursor, 1}}, - {2900, {utils, endBusyCursor, 0}}, - {2901, {utils, isBusy, 0}}, - {2902, {utils, shutdown, 1}}, - {2903, {utils, shell, 1}}, - {2904, {utils, launchDefaultBrowser, 2}}, - {2905, {utils, getEmailAddress, 0}}, - {2906, {utils, getUserId, 0}}, - {2907, {utils, getHomeDir, 0}}, - {2908, {utils, newId, 0}}, - {2909, {utils, registerId, 1}}, - {2910, {utils, getCurrentId, 0}}, - {2911, {utils, getOsDescription, 0}}, - {2912, {utils, isPlatformLittleEndian, 0}}, - {2913, {utils, isPlatform64Bit, 0}}, - {2914, {wxPrintout, new, 1}}, - {2915, {wxPrintout, destruct, 0}}, - {2916, {wxPrintout, getDC, 0}}, - {2917, {wxPrintout, getPageSizeMM, 2}}, - {2918, {wxPrintout, getPageSizePixels, 2}}, - {2919, {wxPrintout, getPaperRectPixels, 0}}, - {2920, {wxPrintout, getPPIPrinter, 2}}, - {2921, {wxPrintout, getPPIScreen, 2}}, - {2922, {wxPrintout, getTitle, 0}}, - {2923, {wxPrintout, isPreview, 0}}, - {2924, {wxPrintout, fitThisSizeToPaper, 1}}, - {2925, {wxPrintout, fitThisSizeToPage, 1}}, - {2926, {wxPrintout, fitThisSizeToPageMargins, 2}}, - {2927, {wxPrintout, mapScreenSizeToPaper, 0}}, - {2928, {wxPrintout, mapScreenSizeToPage, 0}}, - {2929, {wxPrintout, mapScreenSizeToPageMargins, 1}}, - {2930, {wxPrintout, mapScreenSizeToDevice, 0}}, - {2931, {wxPrintout, getLogicalPaperRect, 0}}, - {2932, {wxPrintout, getLogicalPageRect, 0}}, - {2933, {wxPrintout, getLogicalPageMarginsRect, 1}}, - {2934, {wxPrintout, setLogicalOrigin, 2}}, - {2935, {wxPrintout, offsetLogicalOrigin, 2}}, - {2936, {wxStyledTextCtrl, new_2, 2}}, - {2937, {wxStyledTextCtrl, new_0, 0}}, - {2938, {wxStyledTextCtrl, destruct, 0}}, - {2939, {wxStyledTextCtrl, create, 2}}, - {2940, {wxStyledTextCtrl, addText, 1}}, - {2941, {wxStyledTextCtrl, addStyledText, 1}}, - {2942, {wxStyledTextCtrl, insertText, 2}}, - {2943, {wxStyledTextCtrl, clearAll, 0}}, - {2944, {wxStyledTextCtrl, clearDocumentStyle, 0}}, - {2945, {wxStyledTextCtrl, getLength, 0}}, - {2946, {wxStyledTextCtrl, getCharAt, 1}}, - {2947, {wxStyledTextCtrl, getCurrentPos, 0}}, - {2948, {wxStyledTextCtrl, getAnchor, 0}}, - {2949, {wxStyledTextCtrl, getStyleAt, 1}}, - {2950, {wxStyledTextCtrl, redo, 0}}, - {2951, {wxStyledTextCtrl, setUndoCollection, 1}}, - {2952, {wxStyledTextCtrl, selectAll, 0}}, - {2953, {wxStyledTextCtrl, setSavePoint, 0}}, - {2954, {wxStyledTextCtrl, getStyledText, 2}}, - {2955, {wxStyledTextCtrl, canRedo, 0}}, - {2956, {wxStyledTextCtrl, markerLineFromHandle, 1}}, - {2957, {wxStyledTextCtrl, markerDeleteHandle, 1}}, - {2958, {wxStyledTextCtrl, getUndoCollection, 0}}, - {2959, {wxStyledTextCtrl, getViewWhiteSpace, 0}}, - {2960, {wxStyledTextCtrl, setViewWhiteSpace, 1}}, - {2961, {wxStyledTextCtrl, positionFromPoint, 1}}, - {2962, {wxStyledTextCtrl, positionFromPointClose, 2}}, - {2963, {wxStyledTextCtrl, gotoLine, 1}}, - {2964, {wxStyledTextCtrl, gotoPos, 1}}, - {2965, {wxStyledTextCtrl, setAnchor, 1}}, - {2966, {wxStyledTextCtrl, getCurLine, 1}}, - {2967, {wxStyledTextCtrl, getEndStyled, 0}}, - {2968, {wxStyledTextCtrl, convertEOLs, 1}}, - {2969, {wxStyledTextCtrl, getEOLMode, 0}}, - {2970, {wxStyledTextCtrl, setEOLMode, 1}}, - {2971, {wxStyledTextCtrl, startStyling, 2}}, - {2972, {wxStyledTextCtrl, setStyling, 2}}, - {2973, {wxStyledTextCtrl, getBufferedDraw, 0}}, - {2974, {wxStyledTextCtrl, setBufferedDraw, 1}}, - {2975, {wxStyledTextCtrl, setTabWidth, 1}}, - {2976, {wxStyledTextCtrl, getTabWidth, 0}}, - {2977, {wxStyledTextCtrl, setCodePage, 1}}, - {2978, {wxStyledTextCtrl, markerDefine, 3}}, - {2979, {wxStyledTextCtrl, markerSetForeground, 2}}, - {2980, {wxStyledTextCtrl, markerSetBackground, 2}}, - {2981, {wxStyledTextCtrl, markerAdd, 2}}, - {2982, {wxStyledTextCtrl, markerDelete, 2}}, - {2983, {wxStyledTextCtrl, markerDeleteAll, 1}}, - {2984, {wxStyledTextCtrl, markerGet, 1}}, - {2985, {wxStyledTextCtrl, markerNext, 2}}, - {2986, {wxStyledTextCtrl, markerPrevious, 2}}, - {2987, {wxStyledTextCtrl, markerDefineBitmap, 2}}, - {2988, {wxStyledTextCtrl, markerAddSet, 2}}, - {2989, {wxStyledTextCtrl, markerSetAlpha, 2}}, - {2990, {wxStyledTextCtrl, setMarginType, 2}}, - {2991, {wxStyledTextCtrl, getMarginType, 1}}, - {2992, {wxStyledTextCtrl, setMarginWidth, 2}}, - {2993, {wxStyledTextCtrl, getMarginWidth, 1}}, - {2994, {wxStyledTextCtrl, setMarginMask, 2}}, - {2995, {wxStyledTextCtrl, getMarginMask, 1}}, - {2996, {wxStyledTextCtrl, setMarginSensitive, 2}}, - {2997, {wxStyledTextCtrl, getMarginSensitive, 1}}, - {2998, {wxStyledTextCtrl, styleClearAll, 0}}, - {2999, {wxStyledTextCtrl, styleSetForeground, 2}}, - {3000, {wxStyledTextCtrl, styleSetBackground, 2}}, - {3001, {wxStyledTextCtrl, styleSetBold, 2}}, - {3002, {wxStyledTextCtrl, styleSetItalic, 2}}, - {3003, {wxStyledTextCtrl, styleSetSize, 2}}, - {3004, {wxStyledTextCtrl, styleSetFaceName, 2}}, - {3005, {wxStyledTextCtrl, styleSetEOLFilled, 2}}, - {3006, {wxStyledTextCtrl, styleResetDefault, 0}}, - {3007, {wxStyledTextCtrl, styleSetUnderline, 2}}, - {3008, {wxStyledTextCtrl, styleSetCase, 2}}, - {3009, {wxStyledTextCtrl, styleSetHotSpot, 2}}, - {3010, {wxStyledTextCtrl, setSelForeground, 2}}, - {3011, {wxStyledTextCtrl, setSelBackground, 2}}, - {3012, {wxStyledTextCtrl, getSelAlpha, 0}}, - {3013, {wxStyledTextCtrl, setSelAlpha, 1}}, - {3014, {wxStyledTextCtrl, setCaretForeground, 1}}, - {3015, {wxStyledTextCtrl, cmdKeyAssign, 3}}, - {3016, {wxStyledTextCtrl, cmdKeyClear, 2}}, - {3017, {wxStyledTextCtrl, cmdKeyClearAll, 0}}, - {3018, {wxStyledTextCtrl, setStyleBytes, 2}}, - {3019, {wxStyledTextCtrl, styleSetVisible, 2}}, - {3020, {wxStyledTextCtrl, getCaretPeriod, 0}}, - {3021, {wxStyledTextCtrl, setCaretPeriod, 1}}, - {3022, {wxStyledTextCtrl, setWordChars, 1}}, - {3023, {wxStyledTextCtrl, beginUndoAction, 0}}, - {3024, {wxStyledTextCtrl, endUndoAction, 0}}, - {3025, {wxStyledTextCtrl, indicatorSetStyle, 2}}, - {3026, {wxStyledTextCtrl, indicatorGetStyle, 1}}, - {3027, {wxStyledTextCtrl, indicatorSetForeground, 2}}, - {3028, {wxStyledTextCtrl, indicatorGetForeground, 1}}, - {3029, {wxStyledTextCtrl, setWhitespaceForeground, 2}}, - {3030, {wxStyledTextCtrl, setWhitespaceBackground, 2}}, - {3031, {wxStyledTextCtrl, getStyleBits, 0}}, - {3032, {wxStyledTextCtrl, setLineState, 2}}, - {3033, {wxStyledTextCtrl, getLineState, 1}}, - {3034, {wxStyledTextCtrl, getMaxLineState, 0}}, - {3035, {wxStyledTextCtrl, getCaretLineVisible, 0}}, - {3036, {wxStyledTextCtrl, setCaretLineVisible, 1}}, - {3037, {wxStyledTextCtrl, getCaretLineBackground, 0}}, - {3038, {wxStyledTextCtrl, setCaretLineBackground, 1}}, - {3039, {wxStyledTextCtrl, autoCompShow, 2}}, - {3040, {wxStyledTextCtrl, autoCompCancel, 0}}, - {3041, {wxStyledTextCtrl, autoCompActive, 0}}, - {3042, {wxStyledTextCtrl, autoCompPosStart, 0}}, - {3043, {wxStyledTextCtrl, autoCompComplete, 0}}, - {3044, {wxStyledTextCtrl, autoCompStops, 1}}, - {3045, {wxStyledTextCtrl, autoCompSetSeparator, 1}}, - {3046, {wxStyledTextCtrl, autoCompGetSeparator, 0}}, - {3047, {wxStyledTextCtrl, autoCompSelect, 1}}, - {3048, {wxStyledTextCtrl, autoCompSetCancelAtStart, 1}}, - {3049, {wxStyledTextCtrl, autoCompGetCancelAtStart, 0}}, - {3050, {wxStyledTextCtrl, autoCompSetFillUps, 1}}, - {3051, {wxStyledTextCtrl, autoCompSetChooseSingle, 1}}, - {3052, {wxStyledTextCtrl, autoCompGetChooseSingle, 0}}, - {3053, {wxStyledTextCtrl, autoCompSetIgnoreCase, 1}}, - {3054, {wxStyledTextCtrl, autoCompGetIgnoreCase, 0}}, - {3055, {wxStyledTextCtrl, userListShow, 2}}, - {3056, {wxStyledTextCtrl, autoCompSetAutoHide, 1}}, - {3057, {wxStyledTextCtrl, autoCompGetAutoHide, 0}}, - {3058, {wxStyledTextCtrl, autoCompSetDropRestOfWord, 1}}, - {3059, {wxStyledTextCtrl, autoCompGetDropRestOfWord, 0}}, - {3060, {wxStyledTextCtrl, registerImage, 2}}, - {3061, {wxStyledTextCtrl, clearRegisteredImages, 0}}, - {3062, {wxStyledTextCtrl, autoCompGetTypeSeparator, 0}}, - {3063, {wxStyledTextCtrl, autoCompSetTypeSeparator, 1}}, - {3064, {wxStyledTextCtrl, autoCompSetMaxWidth, 1}}, - {3065, {wxStyledTextCtrl, autoCompGetMaxWidth, 0}}, - {3066, {wxStyledTextCtrl, autoCompSetMaxHeight, 1}}, - {3067, {wxStyledTextCtrl, autoCompGetMaxHeight, 0}}, - {3068, {wxStyledTextCtrl, setIndent, 1}}, - {3069, {wxStyledTextCtrl, getIndent, 0}}, - {3070, {wxStyledTextCtrl, setUseTabs, 1}}, - {3071, {wxStyledTextCtrl, getUseTabs, 0}}, - {3072, {wxStyledTextCtrl, setLineIndentation, 2}}, - {3073, {wxStyledTextCtrl, getLineIndentation, 1}}, - {3074, {wxStyledTextCtrl, getLineIndentPosition, 1}}, - {3075, {wxStyledTextCtrl, getColumn, 1}}, - {3076, {wxStyledTextCtrl, setUseHorizontalScrollBar, 1}}, - {3077, {wxStyledTextCtrl, getUseHorizontalScrollBar, 0}}, - {3078, {wxStyledTextCtrl, setIndentationGuides, 1}}, - {3079, {wxStyledTextCtrl, getIndentationGuides, 0}}, - {3080, {wxStyledTextCtrl, setHighlightGuide, 1}}, - {3081, {wxStyledTextCtrl, getHighlightGuide, 0}}, - {3082, {wxStyledTextCtrl, getLineEndPosition, 1}}, - {3083, {wxStyledTextCtrl, getCodePage, 0}}, - {3084, {wxStyledTextCtrl, getCaretForeground, 0}}, - {3085, {wxStyledTextCtrl, getReadOnly, 0}}, - {3086, {wxStyledTextCtrl, setCurrentPos, 1}}, - {3087, {wxStyledTextCtrl, setSelectionStart, 1}}, - {3088, {wxStyledTextCtrl, getSelectionStart, 0}}, - {3089, {wxStyledTextCtrl, setSelectionEnd, 1}}, - {3090, {wxStyledTextCtrl, getSelectionEnd, 0}}, - {3091, {wxStyledTextCtrl, setPrintMagnification, 1}}, - {3092, {wxStyledTextCtrl, getPrintMagnification, 0}}, - {3093, {wxStyledTextCtrl, setPrintColourMode, 1}}, - {3094, {wxStyledTextCtrl, getPrintColourMode, 0}}, - {3095, {wxStyledTextCtrl, findText, 4}}, - {3096, {wxStyledTextCtrl, formatRange, 7}}, - {3097, {wxStyledTextCtrl, getFirstVisibleLine, 0}}, - {3098, {wxStyledTextCtrl, getLine, 1}}, - {3099, {wxStyledTextCtrl, getLineCount, 0}}, - {3100, {wxStyledTextCtrl, setMarginLeft, 1}}, - {3101, {wxStyledTextCtrl, getMarginLeft, 0}}, - {3102, {wxStyledTextCtrl, setMarginRight, 1}}, - {3103, {wxStyledTextCtrl, getMarginRight, 0}}, - {3104, {wxStyledTextCtrl, getModify, 0}}, - {3105, {wxStyledTextCtrl, setSelection, 2}}, - {3106, {wxStyledTextCtrl, getSelectedText, 0}}, - {3107, {wxStyledTextCtrl, getTextRange, 2}}, - {3108, {wxStyledTextCtrl, hideSelection, 1}}, - {3109, {wxStyledTextCtrl, lineFromPosition, 1}}, - {3110, {wxStyledTextCtrl, positionFromLine, 1}}, - {3111, {wxStyledTextCtrl, lineScroll, 2}}, - {3112, {wxStyledTextCtrl, ensureCaretVisible, 0}}, - {3113, {wxStyledTextCtrl, replaceSelection, 1}}, - {3114, {wxStyledTextCtrl, setReadOnly, 1}}, - {3115, {wxStyledTextCtrl, canPaste, 0}}, - {3116, {wxStyledTextCtrl, canUndo, 0}}, - {3117, {wxStyledTextCtrl, emptyUndoBuffer, 0}}, - {3118, {wxStyledTextCtrl, undo, 0}}, - {3119, {wxStyledTextCtrl, cut, 0}}, - {3120, {wxStyledTextCtrl, copy, 0}}, - {3121, {wxStyledTextCtrl, paste, 0}}, - {3122, {wxStyledTextCtrl, clear, 0}}, - {3123, {wxStyledTextCtrl, setText, 1}}, - {3124, {wxStyledTextCtrl, getText, 0}}, - {3125, {wxStyledTextCtrl, getTextLength, 0}}, - {3126, {wxStyledTextCtrl, getOvertype, 0}}, - {3127, {wxStyledTextCtrl, setCaretWidth, 1}}, - {3128, {wxStyledTextCtrl, getCaretWidth, 0}}, - {3129, {wxStyledTextCtrl, setTargetStart, 1}}, - {3130, {wxStyledTextCtrl, getTargetStart, 0}}, - {3131, {wxStyledTextCtrl, setTargetEnd, 1}}, - {3132, {wxStyledTextCtrl, getTargetEnd, 0}}, - {3133, {wxStyledTextCtrl, replaceTarget, 1}}, - {3134, {wxStyledTextCtrl, searchInTarget, 1}}, - {3135, {wxStyledTextCtrl, setSearchFlags, 1}}, - {3136, {wxStyledTextCtrl, getSearchFlags, 0}}, - {3137, {wxStyledTextCtrl, callTipShow, 2}}, - {3138, {wxStyledTextCtrl, callTipCancel, 0}}, - {3139, {wxStyledTextCtrl, callTipActive, 0}}, - {3140, {wxStyledTextCtrl, callTipPosAtStart, 0}}, - {3141, {wxStyledTextCtrl, callTipSetHighlight, 2}}, - {3142, {wxStyledTextCtrl, callTipSetBackground, 1}}, - {3143, {wxStyledTextCtrl, callTipSetForeground, 1}}, - {3144, {wxStyledTextCtrl, callTipSetForegroundHighlight, 1}}, - {3145, {wxStyledTextCtrl, callTipUseStyle, 1}}, - {3146, {wxStyledTextCtrl, visibleFromDocLine, 1}}, - {3147, {wxStyledTextCtrl, docLineFromVisible, 1}}, - {3148, {wxStyledTextCtrl, wrapCount, 1}}, - {3149, {wxStyledTextCtrl, setFoldLevel, 2}}, - {3150, {wxStyledTextCtrl, getFoldLevel, 1}}, - {3151, {wxStyledTextCtrl, getLastChild, 2}}, - {3152, {wxStyledTextCtrl, getFoldParent, 1}}, - {3153, {wxStyledTextCtrl, showLines, 2}}, - {3154, {wxStyledTextCtrl, hideLines, 2}}, - {3155, {wxStyledTextCtrl, getLineVisible, 1}}, - {3156, {wxStyledTextCtrl, setFoldExpanded, 2}}, - {3157, {wxStyledTextCtrl, getFoldExpanded, 1}}, - {3158, {wxStyledTextCtrl, toggleFold, 1}}, - {3159, {wxStyledTextCtrl, ensureVisible, 1}}, - {3160, {wxStyledTextCtrl, setFoldFlags, 1}}, - {3161, {wxStyledTextCtrl, ensureVisibleEnforcePolicy, 1}}, - {3162, {wxStyledTextCtrl, setTabIndents, 1}}, - {3163, {wxStyledTextCtrl, getTabIndents, 0}}, - {3164, {wxStyledTextCtrl, setBackSpaceUnIndents, 1}}, - {3165, {wxStyledTextCtrl, getBackSpaceUnIndents, 0}}, - {3166, {wxStyledTextCtrl, setMouseDwellTime, 1}}, - {3167, {wxStyledTextCtrl, getMouseDwellTime, 0}}, - {3168, {wxStyledTextCtrl, wordStartPosition, 2}}, - {3169, {wxStyledTextCtrl, wordEndPosition, 2}}, - {3170, {wxStyledTextCtrl, setWrapMode, 1}}, - {3171, {wxStyledTextCtrl, getWrapMode, 0}}, - {3172, {wxStyledTextCtrl, setWrapVisualFlags, 1}}, - {3173, {wxStyledTextCtrl, getWrapVisualFlags, 0}}, - {3174, {wxStyledTextCtrl, setWrapVisualFlagsLocation, 1}}, - {3175, {wxStyledTextCtrl, getWrapVisualFlagsLocation, 0}}, - {3176, {wxStyledTextCtrl, setWrapStartIndent, 1}}, - {3177, {wxStyledTextCtrl, getWrapStartIndent, 0}}, - {3178, {wxStyledTextCtrl, setLayoutCache, 1}}, - {3179, {wxStyledTextCtrl, getLayoutCache, 0}}, - {3180, {wxStyledTextCtrl, setScrollWidth, 1}}, - {3181, {wxStyledTextCtrl, getScrollWidth, 0}}, - {3182, {wxStyledTextCtrl, textWidth, 2}}, - {3183, {wxStyledTextCtrl, getEndAtLastLine, 0}}, - {3184, {wxStyledTextCtrl, textHeight, 1}}, - {3185, {wxStyledTextCtrl, setUseVerticalScrollBar, 1}}, - {3186, {wxStyledTextCtrl, getUseVerticalScrollBar, 0}}, - {3187, {wxStyledTextCtrl, appendText, 1}}, - {3188, {wxStyledTextCtrl, getTwoPhaseDraw, 0}}, - {3189, {wxStyledTextCtrl, setTwoPhaseDraw, 1}}, - {3190, {wxStyledTextCtrl, targetFromSelection, 0}}, - {3191, {wxStyledTextCtrl, linesJoin, 0}}, - {3192, {wxStyledTextCtrl, linesSplit, 1}}, - {3193, {wxStyledTextCtrl, setFoldMarginColour, 2}}, - {3194, {wxStyledTextCtrl, setFoldMarginHiColour, 2}}, - {3195, {wxStyledTextCtrl, lineDown, 0}}, - {3196, {wxStyledTextCtrl, lineDownExtend, 0}}, - {3197, {wxStyledTextCtrl, lineUp, 0}}, - {3198, {wxStyledTextCtrl, lineUpExtend, 0}}, - {3199, {wxStyledTextCtrl, charLeft, 0}}, - {3200, {wxStyledTextCtrl, charLeftExtend, 0}}, - {3201, {wxStyledTextCtrl, charRight, 0}}, - {3202, {wxStyledTextCtrl, charRightExtend, 0}}, - {3203, {wxStyledTextCtrl, wordLeft, 0}}, - {3204, {wxStyledTextCtrl, wordLeftExtend, 0}}, - {3205, {wxStyledTextCtrl, wordRight, 0}}, - {3206, {wxStyledTextCtrl, wordRightExtend, 0}}, - {3207, {wxStyledTextCtrl, home, 0}}, - {3208, {wxStyledTextCtrl, homeExtend, 0}}, - {3209, {wxStyledTextCtrl, lineEnd, 0}}, - {3210, {wxStyledTextCtrl, lineEndExtend, 0}}, - {3211, {wxStyledTextCtrl, documentStart, 0}}, - {3212, {wxStyledTextCtrl, documentStartExtend, 0}}, - {3213, {wxStyledTextCtrl, documentEnd, 0}}, - {3214, {wxStyledTextCtrl, documentEndExtend, 0}}, - {3215, {wxStyledTextCtrl, pageUp, 0}}, - {3216, {wxStyledTextCtrl, pageUpExtend, 0}}, - {3217, {wxStyledTextCtrl, pageDown, 0}}, - {3218, {wxStyledTextCtrl, pageDownExtend, 0}}, - {3219, {wxStyledTextCtrl, editToggleOvertype, 0}}, - {3220, {wxStyledTextCtrl, cancel, 0}}, - {3221, {wxStyledTextCtrl, deleteBack, 0}}, - {3222, {wxStyledTextCtrl, tab, 0}}, - {3223, {wxStyledTextCtrl, backTab, 0}}, - {3224, {wxStyledTextCtrl, newLine, 0}}, - {3225, {wxStyledTextCtrl, formFeed, 0}}, - {3226, {wxStyledTextCtrl, vCHome, 0}}, - {3227, {wxStyledTextCtrl, vCHomeExtend, 0}}, - {3228, {wxStyledTextCtrl, zoomIn, 0}}, - {3229, {wxStyledTextCtrl, zoomOut, 0}}, - {3230, {wxStyledTextCtrl, delWordLeft, 0}}, - {3231, {wxStyledTextCtrl, delWordRight, 0}}, - {3232, {wxStyledTextCtrl, lineCut, 0}}, - {3233, {wxStyledTextCtrl, lineDelete, 0}}, - {3234, {wxStyledTextCtrl, lineTranspose, 0}}, - {3235, {wxStyledTextCtrl, lineDuplicate, 0}}, - {3236, {wxStyledTextCtrl, lowerCase, 0}}, - {3237, {wxStyledTextCtrl, upperCase, 0}}, - {3238, {wxStyledTextCtrl, lineScrollDown, 0}}, - {3239, {wxStyledTextCtrl, lineScrollUp, 0}}, - {3240, {wxStyledTextCtrl, deleteBackNotLine, 0}}, - {3241, {wxStyledTextCtrl, homeDisplay, 0}}, - {3242, {wxStyledTextCtrl, homeDisplayExtend, 0}}, - {3243, {wxStyledTextCtrl, lineEndDisplay, 0}}, - {3244, {wxStyledTextCtrl, lineEndDisplayExtend, 0}}, - {3245, {wxStyledTextCtrl, homeWrapExtend, 0}}, - {3246, {wxStyledTextCtrl, lineEndWrap, 0}}, - {3247, {wxStyledTextCtrl, lineEndWrapExtend, 0}}, - {3248, {wxStyledTextCtrl, vCHomeWrap, 0}}, - {3249, {wxStyledTextCtrl, vCHomeWrapExtend, 0}}, - {3250, {wxStyledTextCtrl, lineCopy, 0}}, - {3251, {wxStyledTextCtrl, moveCaretInsideView, 0}}, - {3252, {wxStyledTextCtrl, lineLength, 1}}, - {3253, {wxStyledTextCtrl, braceHighlight, 2}}, - {3254, {wxStyledTextCtrl, braceBadLight, 1}}, - {3255, {wxStyledTextCtrl, braceMatch, 1}}, - {3256, {wxStyledTextCtrl, getViewEOL, 0}}, - {3257, {wxStyledTextCtrl, setViewEOL, 1}}, - {3258, {wxStyledTextCtrl, setModEventMask, 1}}, - {3259, {wxStyledTextCtrl, getEdgeColumn, 0}}, - {3260, {wxStyledTextCtrl, setEdgeColumn, 1}}, - {3261, {wxStyledTextCtrl, getEdgeMode, 0}}, - {3262, {wxStyledTextCtrl, getEdgeColour, 0}}, - {3263, {wxStyledTextCtrl, setEdgeColour, 1}}, - {3264, {wxStyledTextCtrl, searchAnchor, 0}}, - {3265, {wxStyledTextCtrl, searchNext, 2}}, - {3266, {wxStyledTextCtrl, searchPrev, 2}}, - {3267, {wxStyledTextCtrl, linesOnScreen, 0}}, - {3268, {wxStyledTextCtrl, usePopUp, 1}}, - {3269, {wxStyledTextCtrl, selectionIsRectangle, 0}}, - {3270, {wxStyledTextCtrl, setZoom, 1}}, - {3271, {wxStyledTextCtrl, getZoom, 0}}, - {3272, {wxStyledTextCtrl, getModEventMask, 0}}, - {3273, {wxStyledTextCtrl, setSTCFocus, 1}}, - {3274, {wxStyledTextCtrl, getSTCFocus, 0}}, - {3275, {wxStyledTextCtrl, setStatus, 1}}, - {3276, {wxStyledTextCtrl, getStatus, 0}}, - {3277, {wxStyledTextCtrl, setMouseDownCaptures, 1}}, - {3278, {wxStyledTextCtrl, getMouseDownCaptures, 0}}, - {3279, {wxStyledTextCtrl, setSTCCursor, 1}}, - {3280, {wxStyledTextCtrl, getSTCCursor, 0}}, - {3281, {wxStyledTextCtrl, setControlCharSymbol, 1}}, - {3282, {wxStyledTextCtrl, getControlCharSymbol, 0}}, - {3283, {wxStyledTextCtrl, wordPartLeft, 0}}, - {3284, {wxStyledTextCtrl, wordPartLeftExtend, 0}}, - {3285, {wxStyledTextCtrl, wordPartRight, 0}}, - {3286, {wxStyledTextCtrl, wordPartRightExtend, 0}}, - {3287, {wxStyledTextCtrl, setVisiblePolicy, 2}}, - {3288, {wxStyledTextCtrl, delLineLeft, 0}}, - {3289, {wxStyledTextCtrl, delLineRight, 0}}, - {3290, {wxStyledTextCtrl, getXOffset, 0}}, - {3291, {wxStyledTextCtrl, chooseCaretX, 0}}, - {3292, {wxStyledTextCtrl, setXCaretPolicy, 2}}, - {3293, {wxStyledTextCtrl, setYCaretPolicy, 2}}, - {3294, {wxStyledTextCtrl, getPrintWrapMode, 0}}, - {3295, {wxStyledTextCtrl, setHotspotActiveForeground, 2}}, - {3296, {wxStyledTextCtrl, setHotspotActiveBackground, 2}}, - {3297, {wxStyledTextCtrl, setHotspotActiveUnderline, 1}}, - {3298, {wxStyledTextCtrl, setHotspotSingleLine, 1}}, - {3299, {wxStyledTextCtrl, paraDownExtend, 0}}, - {3300, {wxStyledTextCtrl, paraUp, 0}}, - {3301, {wxStyledTextCtrl, paraUpExtend, 0}}, - {3302, {wxStyledTextCtrl, positionBefore, 1}}, - {3303, {wxStyledTextCtrl, positionAfter, 1}}, - {3304, {wxStyledTextCtrl, copyRange, 2}}, - {3305, {wxStyledTextCtrl, copyText, 2}}, - {3306, {wxStyledTextCtrl, setSelectionMode, 1}}, - {3307, {wxStyledTextCtrl, getSelectionMode, 0}}, - {3308, {wxStyledTextCtrl, lineDownRectExtend, 0}}, - {3309, {wxStyledTextCtrl, lineUpRectExtend, 0}}, - {3310, {wxStyledTextCtrl, charLeftRectExtend, 0}}, - {3311, {wxStyledTextCtrl, charRightRectExtend, 0}}, - {3312, {wxStyledTextCtrl, homeRectExtend, 0}}, - {3313, {wxStyledTextCtrl, vCHomeRectExtend, 0}}, - {3314, {wxStyledTextCtrl, lineEndRectExtend, 0}}, - {3315, {wxStyledTextCtrl, pageUpRectExtend, 0}}, - {3316, {wxStyledTextCtrl, pageDownRectExtend, 0}}, - {3317, {wxStyledTextCtrl, stutteredPageUp, 0}}, - {3318, {wxStyledTextCtrl, stutteredPageUpExtend, 0}}, - {3319, {wxStyledTextCtrl, stutteredPageDown, 0}}, - {3320, {wxStyledTextCtrl, stutteredPageDownExtend, 0}}, - {3321, {wxStyledTextCtrl, wordLeftEnd, 0}}, - {3322, {wxStyledTextCtrl, wordLeftEndExtend, 0}}, - {3323, {wxStyledTextCtrl, wordRightEnd, 0}}, - {3324, {wxStyledTextCtrl, wordRightEndExtend, 0}}, - {3325, {wxStyledTextCtrl, setWhitespaceChars, 1}}, - {3326, {wxStyledTextCtrl, setCharsDefault, 0}}, - {3327, {wxStyledTextCtrl, autoCompGetCurrent, 0}}, - {3328, {wxStyledTextCtrl, allocate, 1}}, - {3329, {wxStyledTextCtrl, findColumn, 2}}, - {3330, {wxStyledTextCtrl, getCaretSticky, 0}}, - {3331, {wxStyledTextCtrl, setCaretSticky, 1}}, - {3332, {wxStyledTextCtrl, toggleCaretSticky, 0}}, - {3333, {wxStyledTextCtrl, setPasteConvertEndings, 1}}, - {3334, {wxStyledTextCtrl, getPasteConvertEndings, 0}}, - {3335, {wxStyledTextCtrl, selectionDuplicate, 0}}, - {3336, {wxStyledTextCtrl, setCaretLineBackAlpha, 1}}, - {3337, {wxStyledTextCtrl, getCaretLineBackAlpha, 0}}, - {3338, {wxStyledTextCtrl, startRecord, 0}}, - {3339, {wxStyledTextCtrl, stopRecord, 0}}, - {3340, {wxStyledTextCtrl, setLexer, 1}}, - {3341, {wxStyledTextCtrl, getLexer, 0}}, - {3342, {wxStyledTextCtrl, colourise, 2}}, - {3343, {wxStyledTextCtrl, setProperty, 2}}, - {3344, {wxStyledTextCtrl, setKeyWords, 2}}, - {3345, {wxStyledTextCtrl, setLexerLanguage, 1}}, - {3346, {wxStyledTextCtrl, getProperty, 1}}, - {3347, {wxStyledTextCtrl, getStyleBitsNeeded, 0}}, - {3348, {wxStyledTextCtrl, getCurrentLine, 0}}, - {3349, {wxStyledTextCtrl, styleSetSpec, 2}}, - {3350, {wxStyledTextCtrl, styleSetFont, 2}}, - {3351, {wxStyledTextCtrl, styleSetFontAttr, 7}}, - {3352, {wxStyledTextCtrl, styleSetCharacterSet, 2}}, - {3353, {wxStyledTextCtrl, styleSetFontEncoding, 2}}, - {3354, {wxStyledTextCtrl, cmdKeyExecute, 1}}, - {3355, {wxStyledTextCtrl, setMargins, 2}}, - {3356, {wxStyledTextCtrl, getSelection, 2}}, - {3357, {wxStyledTextCtrl, pointFromPosition, 1}}, - {3358, {wxStyledTextCtrl, scrollToLine, 1}}, - {3359, {wxStyledTextCtrl, scrollToColumn, 1}}, - {3360, {wxStyledTextCtrl, sendMsg, 2}}, - {3361, {wxStyledTextCtrl, setVScrollBar, 1}}, - {3362, {wxStyledTextCtrl, setHScrollBar, 1}}, - {3363, {wxStyledTextCtrl, getLastKeydownProcessed, 0}}, - {3364, {wxStyledTextCtrl, setLastKeydownProcessed, 1}}, - {3365, {wxStyledTextCtrl, saveFile, 1}}, - {3366, {wxStyledTextCtrl, loadFile, 1}}, - {3367, {wxStyledTextCtrl, doDragOver, 3}}, - {3368, {wxStyledTextCtrl, doDropText, 3}}, - {3369, {wxStyledTextCtrl, getUseAntiAliasing, 0}}, - {3370, {wxStyledTextCtrl, addTextRaw, 1}}, - {3371, {wxStyledTextCtrl, insertTextRaw, 2}}, - {3372, {wxStyledTextCtrl, getCurLineRaw, 1}}, - {3373, {wxStyledTextCtrl, getLineRaw, 1}}, - {3374, {wxStyledTextCtrl, getSelectedTextRaw, 0}}, - {3375, {wxStyledTextCtrl, getTextRangeRaw, 2}}, - {3376, {wxStyledTextCtrl, setTextRaw, 1}}, - {3377, {wxStyledTextCtrl, getTextRaw, 0}}, - {3378, {wxStyledTextCtrl, appendTextRaw, 1}}, - {3379, {wxArtProvider, getBitmap, 2}}, - {3380, {wxArtProvider, getIcon, 2}}, - {3381, {wxTreeEvent, getKeyCode, 0}}, - {3382, {wxTreeEvent, getItem, 0}}, - {3383, {wxTreeEvent, getKeyEvent, 0}}, - {3384, {wxTreeEvent, getLabel, 0}}, - {3385, {wxTreeEvent, getOldItem, 0}}, - {3386, {wxTreeEvent, getPoint, 0}}, - {3387, {wxTreeEvent, isEditCancelled, 0}}, - {3388, {wxTreeEvent, setToolTip, 1}}, - {3389, {wxNotebookEvent, getOldSelection, 0}}, - {3390, {wxNotebookEvent, getSelection, 0}}, - {3391, {wxNotebookEvent, setOldSelection, 1}}, - {3392, {wxNotebookEvent, setSelection, 1}}, - {3393, {wxFileDataObject, new, 0}}, - {3394, {wxFileDataObject, addFile, 1}}, - {3395, {wxFileDataObject, getFilenames, 0}}, - {3396, {wxFileDataObject, 'Destroy', undefined}}, - {3397, {wxTextDataObject, new, 1}}, - {3398, {wxTextDataObject, getTextLength, 0}}, - {3399, {wxTextDataObject, getText, 0}}, - {3400, {wxTextDataObject, setText, 1}}, - {3401, {wxTextDataObject, 'Destroy', undefined}}, - {3402, {wxBitmapDataObject, new_1_1, 1}}, - {3403, {wxBitmapDataObject, new_1_0, 1}}, - {3404, {wxBitmapDataObject, getBitmap, 0}}, - {3405, {wxBitmapDataObject, setBitmap, 1}}, - {3406, {wxBitmapDataObject, 'Destroy', undefined}}, - {3408, {wxClipboard, new, 0}}, - {3409, {wxClipboard, destruct, 0}}, - {3410, {wxClipboard, addData, 1}}, - {3411, {wxClipboard, clear, 0}}, - {3412, {wxClipboard, close, 0}}, - {3413, {wxClipboard, flush, 0}}, - {3414, {wxClipboard, getData, 1}}, - {3415, {wxClipboard, isOpened, 0}}, - {3416, {wxClipboard, open, 0}}, - {3417, {wxClipboard, setData, 1}}, - {3419, {wxClipboard, usePrimarySelection, 1}}, - {3420, {wxClipboard, isSupported, 1}}, - {3421, {wxClipboard, get, 0}}, - {3422, {wxSpinEvent, getPosition, 0}}, - {3423, {wxSpinEvent, setPosition, 1}}, - {3424, {wxSplitterWindow, new_0, 0}}, - {3425, {wxSplitterWindow, new_2, 2}}, - {3426, {wxSplitterWindow, destruct, 0}}, - {3427, {wxSplitterWindow, create, 2}}, - {3428, {wxSplitterWindow, getMinimumPaneSize, 0}}, - {3429, {wxSplitterWindow, getSashGravity, 0}}, - {3430, {wxSplitterWindow, getSashPosition, 0}}, - {3431, {wxSplitterWindow, getSplitMode, 0}}, - {3432, {wxSplitterWindow, getWindow1, 0}}, - {3433, {wxSplitterWindow, getWindow2, 0}}, - {3434, {wxSplitterWindow, initialize, 1}}, - {3435, {wxSplitterWindow, isSplit, 0}}, - {3436, {wxSplitterWindow, replaceWindow, 2}}, - {3437, {wxSplitterWindow, setSashGravity, 1}}, - {3438, {wxSplitterWindow, setSashPosition, 2}}, - {3439, {wxSplitterWindow, setSashSize, 1}}, - {3440, {wxSplitterWindow, setMinimumPaneSize, 1}}, - {3441, {wxSplitterWindow, setSplitMode, 1}}, - {3442, {wxSplitterWindow, splitHorizontally, 3}}, - {3443, {wxSplitterWindow, splitVertically, 3}}, - {3444, {wxSplitterWindow, unsplit, 1}}, - {3445, {wxSplitterWindow, updateSize, 0}}, - {3446, {wxSplitterEvent, getSashPosition, 0}}, - {3447, {wxSplitterEvent, getX, 0}}, - {3448, {wxSplitterEvent, getY, 0}}, - {3449, {wxSplitterEvent, getWindowBeingRemoved, 0}}, - {3450, {wxSplitterEvent, setSashPosition, 1}}, - {3451, {wxHtmlWindow, new_0, 0}}, - {3452, {wxHtmlWindow, new_2, 2}}, - {3453, {wxHtmlWindow, appendToPage, 1}}, - {3454, {wxHtmlWindow, getOpenedAnchor, 0}}, - {3455, {wxHtmlWindow, getOpenedPage, 0}}, - {3456, {wxHtmlWindow, getOpenedPageTitle, 0}}, - {3457, {wxHtmlWindow, getRelatedFrame, 0}}, - {3458, {wxHtmlWindow, historyBack, 0}}, - {3459, {wxHtmlWindow, historyCanBack, 0}}, - {3460, {wxHtmlWindow, historyCanForward, 0}}, - {3461, {wxHtmlWindow, historyClear, 0}}, - {3462, {wxHtmlWindow, historyForward, 0}}, - {3463, {wxHtmlWindow, loadFile, 1}}, - {3464, {wxHtmlWindow, loadPage, 1}}, - {3465, {wxHtmlWindow, selectAll, 0}}, - {3466, {wxHtmlWindow, selectionToText, 0}}, - {3467, {wxHtmlWindow, selectLine, 1}}, - {3468, {wxHtmlWindow, selectWord, 1}}, - {3469, {wxHtmlWindow, setBorders, 1}}, - {3470, {wxHtmlWindow, setFonts, 3}}, - {3471, {wxHtmlWindow, setPage, 1}}, - {3472, {wxHtmlWindow, setRelatedFrame, 2}}, - {3473, {wxHtmlWindow, setRelatedStatusBar, 1}}, - {3474, {wxHtmlWindow, toText, 0}}, - {3475, {wxHtmlWindow, 'Destroy', undefined}}, - {3476, {wxHtmlLinkEvent, getLinkInfo, 0}}, - {3477, {wxAuiNotebookEvent, setSelection, 1}}, - {3478, {wxAuiNotebookEvent, getSelection, 0}}, - {3479, {wxAuiNotebookEvent, setOldSelection, 1}}, - {3480, {wxAuiNotebookEvent, getOldSelection, 0}}, - {3481, {wxAuiNotebookEvent, setDragSource, 1}}, - {3482, {wxAuiNotebookEvent, getDragSource, 0}}, - {3483, {wxAuiManagerEvent, setManager, 1}}, - {3484, {wxAuiManagerEvent, getManager, 0}}, - {3485, {wxAuiManagerEvent, setPane, 1}}, - {3486, {wxAuiManagerEvent, getPane, 0}}, - {3487, {wxAuiManagerEvent, setButton, 1}}, - {3488, {wxAuiManagerEvent, getButton, 0}}, - {3489, {wxAuiManagerEvent, setDC, 1}}, - {3490, {wxAuiManagerEvent, getDC, 0}}, - {3491, {wxAuiManagerEvent, veto, 1}}, - {3492, {wxAuiManagerEvent, getVeto, 0}}, - {3493, {wxAuiManagerEvent, setCanVeto, 1}}, - {3494, {wxAuiManagerEvent, canVeto, 0}}, - {3495, {wxLogNull, new, 0}}, - {3496, {wxLogNull, 'Destroy', undefined}}, + {885, {wxControlWithItems, getClientData, 1}}, + {886, {wxControlWithItems, setClientData, 2}}, + {887, {wxControlWithItems, getCount, 0}}, + {888, {wxControlWithItems, getSelection, 0}}, + {889, {wxControlWithItems, getString, 1}}, + {890, {wxControlWithItems, getStringSelection, 0}}, + {891, {wxControlWithItems, insert_2, 2}}, + {892, {wxControlWithItems, insert_3, 3}}, + {893, {wxControlWithItems, isEmpty, 0}}, + {894, {wxControlWithItems, select, 1}}, + {895, {wxControlWithItems, setSelection, 1}}, + {896, {wxControlWithItems, setString, 2}}, + {897, {wxControlWithItems, setStringSelection, 1}}, + {900, {wxMenu, new_2, 2}}, + {901, {wxMenu, new_1, 1}}, + {903, {wxMenu, destruct, 0}}, + {904, {wxMenu, append_3, 3}}, + {905, {wxMenu, append_1, 1}}, + {906, {wxMenu, append_4_0, 4}}, + {907, {wxMenu, append_4_1, 4}}, + {908, {wxMenu, appendCheckItem, 3}}, + {909, {wxMenu, appendRadioItem, 3}}, + {910, {wxMenu, appendSeparator, 0}}, + {911, {wxMenu, break, 0}}, + {912, {wxMenu, check, 2}}, + {913, {wxMenu, delete_1_0, 1}}, + {914, {wxMenu, delete_1_1, 1}}, + {915, {wxMenu, destroy_1_0, 1}}, + {916, {wxMenu, destroy_1_1, 1}}, + {917, {wxMenu, enable, 2}}, + {918, {wxMenu, findItem_1, 1}}, + {919, {wxMenu, findItem_2, 2}}, + {920, {wxMenu, findItemByPosition, 1}}, + {921, {wxMenu, getHelpString, 1}}, + {922, {wxMenu, getLabel, 1}}, + {923, {wxMenu, getMenuItemCount, 0}}, + {924, {wxMenu, getMenuItems, 0}}, + {926, {wxMenu, getTitle, 0}}, + {927, {wxMenu, insert_2, 2}}, + {928, {wxMenu, insert_3, 3}}, + {929, {wxMenu, insert_5_1, 5}}, + {930, {wxMenu, insert_5_0, 5}}, + {931, {wxMenu, insertCheckItem, 4}}, + {932, {wxMenu, insertRadioItem, 4}}, + {933, {wxMenu, insertSeparator, 1}}, + {934, {wxMenu, isChecked, 1}}, + {935, {wxMenu, isEnabled, 1}}, + {936, {wxMenu, prepend_1, 1}}, + {937, {wxMenu, prepend_2, 2}}, + {938, {wxMenu, prepend_4_1, 4}}, + {939, {wxMenu, prepend_4_0, 4}}, + {940, {wxMenu, prependCheckItem, 3}}, + {941, {wxMenu, prependRadioItem, 3}}, + {942, {wxMenu, prependSeparator, 0}}, + {943, {wxMenu, remove_1_0, 1}}, + {944, {wxMenu, remove_1_1, 1}}, + {945, {wxMenu, setHelpString, 2}}, + {946, {wxMenu, setLabel, 2}}, + {947, {wxMenu, setTitle, 1}}, + {948, {wxMenuItem, new, 1}}, + {950, {wxMenuItem, destruct, 0}}, + {951, {wxMenuItem, check, 1}}, + {952, {wxMenuItem, enable, 1}}, + {953, {wxMenuItem, getBitmap, 0}}, + {954, {wxMenuItem, getHelp, 0}}, + {955, {wxMenuItem, getId, 0}}, + {956, {wxMenuItem, getKind, 0}}, + {957, {wxMenuItem, getLabel, 0}}, + {958, {wxMenuItem, getLabelFromText, 1}}, + {959, {wxMenuItem, getMenu, 0}}, + {960, {wxMenuItem, getText, 0}}, + {961, {wxMenuItem, getSubMenu, 0}}, + {962, {wxMenuItem, isCheckable, 0}}, + {963, {wxMenuItem, isChecked, 0}}, + {964, {wxMenuItem, isEnabled, 0}}, + {965, {wxMenuItem, isSeparator, 0}}, + {966, {wxMenuItem, isSubMenu, 0}}, + {967, {wxMenuItem, setBitmap, 1}}, + {968, {wxMenuItem, setHelp, 1}}, + {969, {wxMenuItem, setMenu, 1}}, + {970, {wxMenuItem, setSubMenu, 1}}, + {971, {wxMenuItem, setText, 1}}, + {972, {wxToolBar, addControl, 1}}, + {973, {wxToolBar, addSeparator, 0}}, + {974, {wxToolBar, addTool_5, 5}}, + {975, {wxToolBar, addTool_4_0, 4}}, + {976, {wxToolBar, addTool_1, 1}}, + {977, {wxToolBar, addTool_4_1, 4}}, + {978, {wxToolBar, addTool_3, 3}}, + {979, {wxToolBar, addTool_6, 6}}, + {980, {wxToolBar, addCheckTool, 4}}, + {981, {wxToolBar, addRadioTool, 4}}, + {982, {wxToolBar, deleteTool, 1}}, + {983, {wxToolBar, deleteToolByPos, 1}}, + {984, {wxToolBar, enableTool, 2}}, + {985, {wxToolBar, findById, 1}}, + {986, {wxToolBar, findControl, 1}}, + {987, {wxToolBar, findToolForPosition, 2}}, + {988, {wxToolBar, getToolSize, 0}}, + {989, {wxToolBar, getToolBitmapSize, 0}}, + {990, {wxToolBar, getMargins, 0}}, + {991, {wxToolBar, getToolEnabled, 1}}, + {992, {wxToolBar, getToolLongHelp, 1}}, + {993, {wxToolBar, getToolPacking, 0}}, + {994, {wxToolBar, getToolPos, 1}}, + {995, {wxToolBar, getToolSeparation, 0}}, + {996, {wxToolBar, getToolShortHelp, 1}}, + {997, {wxToolBar, getToolState, 1}}, + {998, {wxToolBar, insertControl, 2}}, + {999, {wxToolBar, insertSeparator, 1}}, + {1000, {wxToolBar, insertTool_5, 5}}, + {1001, {wxToolBar, insertTool_2, 2}}, + {1002, {wxToolBar, insertTool_4, 4}}, + {1003, {wxToolBar, realize, 0}}, + {1004, {wxToolBar, removeTool, 1}}, + {1005, {wxToolBar, setMargins, 2}}, + {1006, {wxToolBar, setToolBitmapSize, 1}}, + {1007, {wxToolBar, setToolLongHelp, 2}}, + {1008, {wxToolBar, setToolPacking, 1}}, + {1009, {wxToolBar, setToolShortHelp, 2}}, + {1010, {wxToolBar, setToolSeparation, 1}}, + {1011, {wxToolBar, toggleTool, 2}}, + {1013, {wxStatusBar, new_0, 0}}, + {1014, {wxStatusBar, new_2, 2}}, + {1016, {wxStatusBar, destruct, 0}}, + {1017, {wxStatusBar, create, 2}}, + {1018, {wxStatusBar, getFieldRect, 2}}, + {1019, {wxStatusBar, getFieldsCount, 0}}, + {1020, {wxStatusBar, getStatusText, 1}}, + {1021, {wxStatusBar, popStatusText, 1}}, + {1022, {wxStatusBar, pushStatusText, 2}}, + {1023, {wxStatusBar, setFieldsCount, 2}}, + {1024, {wxStatusBar, setMinHeight, 1}}, + {1025, {wxStatusBar, setStatusText, 2}}, + {1026, {wxStatusBar, setStatusWidths, 2}}, + {1027, {wxStatusBar, setStatusStyles, 2}}, + {1028, {wxBitmap, new_0, 0}}, + {1029, {wxBitmap, new_3, 3}}, + {1030, {wxBitmap, new_4, 4}}, + {1031, {wxBitmap, new_2_0, 2}}, + {1032, {wxBitmap, new_2_1, 2}}, + {1033, {wxBitmap, destruct, 0}}, + {1034, {wxBitmap, convertToImage, 0}}, + {1035, {wxBitmap, copyFromIcon, 1}}, + {1036, {wxBitmap, create, 3}}, + {1037, {wxBitmap, getDepth, 0}}, + {1038, {wxBitmap, getHeight, 0}}, + {1039, {wxBitmap, getPalette, 0}}, + {1040, {wxBitmap, getMask, 0}}, + {1041, {wxBitmap, getWidth, 0}}, + {1042, {wxBitmap, getSubBitmap, 1}}, + {1043, {wxBitmap, loadFile, 2}}, + {1044, {wxBitmap, ok, 0}}, + {1045, {wxBitmap, saveFile, 3}}, + {1046, {wxBitmap, setDepth, 1}}, + {1047, {wxBitmap, setHeight, 1}}, + {1048, {wxBitmap, setMask, 1}}, + {1049, {wxBitmap, setPalette, 1}}, + {1050, {wxBitmap, setWidth, 1}}, + {1051, {wxIcon, new_0, 0}}, + {1052, {wxIcon, new_2, 2}}, + {1053, {wxIcon, new_1, 1}}, + {1054, {wxIcon, copyFromBitmap, 1}}, + {1055, {wxIcon, 'Destroy', undefined}}, + {1056, {wxIconBundle, new_0, 0}}, + {1057, {wxIconBundle, new_2, 2}}, + {1058, {wxIconBundle, new_1_0, 1}}, + {1059, {wxIconBundle, new_1_1, 1}}, + {1060, {wxIconBundle, destruct, 0}}, + {1061, {wxIconBundle, addIcon_2, 2}}, + {1062, {wxIconBundle, addIcon_1, 1}}, + {1063, {wxIconBundle, getIcon_1_1, 1}}, + {1064, {wxIconBundle, getIcon_1_0, 1}}, + {1065, {wxCursor, new_0, 0}}, + {1066, {wxCursor, new_1_0, 1}}, + {1067, {wxCursor, new_1_1, 1}}, + {1068, {wxCursor, new_4, 4}}, + {1069, {wxCursor, destruct, 0}}, + {1070, {wxCursor, ok, 0}}, + {1071, {wxMask, new_0, 0}}, + {1072, {wxMask, new_2_1, 2}}, + {1073, {wxMask, new_2_0, 2}}, + {1074, {wxMask, new_1, 1}}, + {1075, {wxMask, destruct, 0}}, + {1076, {wxMask, create_2_1, 2}}, + {1077, {wxMask, create_2_0, 2}}, + {1078, {wxMask, create_1, 1}}, + {1079, {wxImage, new_0, 0}}, + {1080, {wxImage, new_3_0, 3}}, + {1081, {wxImage, new_4, 4}}, + {1082, {wxImage, new_5, 5}}, + {1083, {wxImage, new_2, 2}}, + {1084, {wxImage, new_3_1, 3}}, + {1085, {wxImage, blur, 1}}, + {1086, {wxImage, blurHorizontal, 1}}, + {1087, {wxImage, blurVertical, 1}}, + {1088, {wxImage, convertAlphaToMask, 1}}, + {1089, {wxImage, convertToGreyscale, 1}}, + {1090, {wxImage, convertToMono, 3}}, + {1091, {wxImage, copy, 0}}, + {1092, {wxImage, create_3, 3}}, + {1093, {wxImage, create_4, 4}}, + {1094, {wxImage, create_5, 5}}, + {1095, {wxImage, 'Destroy', 0}}, + {1096, {wxImage, findFirstUnusedColour, 4}}, + {1097, {wxImage, getImageExtWildcard, 0}}, + {1098, {wxImage, getAlpha_2, 2}}, + {1099, {wxImage, getAlpha_0, 0}}, + {1100, {wxImage, getBlue, 2}}, + {1101, {wxImage, getData, 0}}, + {1102, {wxImage, getGreen, 2}}, + {1103, {wxImage, getImageCount, 2}}, + {1104, {wxImage, getHeight, 0}}, + {1105, {wxImage, getMaskBlue, 0}}, + {1106, {wxImage, getMaskGreen, 0}}, + {1107, {wxImage, getMaskRed, 0}}, + {1108, {wxImage, getOrFindMaskColour, 3}}, + {1109, {wxImage, getPalette, 0}}, + {1110, {wxImage, getRed, 2}}, + {1111, {wxImage, getSubImage, 1}}, + {1112, {wxImage, getWidth, 0}}, + {1113, {wxImage, hasAlpha, 0}}, + {1114, {wxImage, hasMask, 0}}, + {1115, {wxImage, getOption, 1}}, + {1116, {wxImage, getOptionInt, 1}}, + {1117, {wxImage, hasOption, 1}}, + {1118, {wxImage, initAlpha, 0}}, + {1119, {wxImage, initStandardHandlers, 0}}, + {1120, {wxImage, isTransparent, 3}}, + {1121, {wxImage, loadFile_2, 2}}, + {1122, {wxImage, loadFile_3, 3}}, + {1123, {wxImage, ok, 0}}, + {1124, {wxImage, removeHandler, 1}}, + {1125, {wxImage, mirror, 1}}, + {1126, {wxImage, replace, 6}}, + {1127, {wxImage, rescale, 3}}, + {1128, {wxImage, resize, 3}}, + {1129, {wxImage, rotate, 3}}, + {1130, {wxImage, rotateHue, 1}}, + {1131, {wxImage, rotate90, 1}}, + {1132, {wxImage, saveFile_1, 1}}, + {1133, {wxImage, saveFile_2_0, 2}}, + {1134, {wxImage, saveFile_2_1, 2}}, + {1135, {wxImage, scale, 3}}, + {1136, {wxImage, size, 3}}, + {1137, {wxImage, setAlpha_3, 3}}, + {1138, {wxImage, setAlpha_2, 2}}, + {1139, {wxImage, setData_2, 2}}, + {1140, {wxImage, setData_4, 4}}, + {1141, {wxImage, setMask, 1}}, + {1142, {wxImage, setMaskColour, 3}}, + {1143, {wxImage, setMaskFromImage, 4}}, + {1144, {wxImage, setOption_2_1, 2}}, + {1145, {wxImage, setOption_2_0, 2}}, + {1146, {wxImage, setPalette, 1}}, + {1147, {wxImage, setRGB_5, 5}}, + {1148, {wxImage, setRGB_4, 4}}, + {1149, {wxImage, 'Destroy', undefined}}, + {1150, {wxBrush, new_0, 0}}, + {1151, {wxBrush, new_2, 2}}, + {1152, {wxBrush, new_1, 1}}, + {1154, {wxBrush, destruct, 0}}, + {1155, {wxBrush, getColour, 0}}, + {1156, {wxBrush, getStipple, 0}}, + {1157, {wxBrush, getStyle, 0}}, + {1158, {wxBrush, isHatch, 0}}, + {1159, {wxBrush, isOk, 0}}, + {1160, {wxBrush, setColour_1, 1}}, + {1161, {wxBrush, setColour_3, 3}}, + {1162, {wxBrush, setStipple, 1}}, + {1163, {wxBrush, setStyle, 1}}, + {1164, {wxPen, new_0, 0}}, + {1165, {wxPen, new_2, 2}}, + {1166, {wxPen, destruct, 0}}, + {1167, {wxPen, getCap, 0}}, + {1168, {wxPen, getColour, 0}}, + {1169, {wxPen, getJoin, 0}}, + {1170, {wxPen, getStyle, 0}}, + {1171, {wxPen, getWidth, 0}}, + {1172, {wxPen, isOk, 0}}, + {1173, {wxPen, setCap, 1}}, + {1174, {wxPen, setColour_1, 1}}, + {1175, {wxPen, setColour_3, 3}}, + {1176, {wxPen, setJoin, 1}}, + {1177, {wxPen, setStyle, 1}}, + {1178, {wxPen, setWidth, 1}}, + {1179, {wxRegion, new_0, 0}}, + {1180, {wxRegion, new_4, 4}}, + {1181, {wxRegion, new_2, 2}}, + {1182, {wxRegion, new_1_1, 1}}, + {1184, {wxRegion, new_1_0, 1}}, + {1186, {wxRegion, destruct, 0}}, + {1187, {wxRegion, clear, 0}}, + {1188, {wxRegion, contains_2, 2}}, + {1189, {wxRegion, contains_1_0, 1}}, + {1190, {wxRegion, contains_4, 4}}, + {1191, {wxRegion, contains_1_1, 1}}, + {1192, {wxRegion, convertToBitmap, 0}}, + {1193, {wxRegion, getBox, 0}}, + {1194, {wxRegion, intersect_4, 4}}, + {1195, {wxRegion, intersect_1_1, 1}}, + {1196, {wxRegion, intersect_1_0, 1}}, + {1197, {wxRegion, isEmpty, 0}}, + {1198, {wxRegion, subtract_4, 4}}, + {1199, {wxRegion, subtract_1_1, 1}}, + {1200, {wxRegion, subtract_1_0, 1}}, + {1201, {wxRegion, offset_2, 2}}, + {1202, {wxRegion, offset_1, 1}}, + {1203, {wxRegion, union_4, 4}}, + {1204, {wxRegion, union_1_2, 1}}, + {1205, {wxRegion, union_1_1, 1}}, + {1206, {wxRegion, union_1_0, 1}}, + {1207, {wxRegion, union_3, 3}}, + {1208, {wxRegion, xor_4, 4}}, + {1209, {wxRegion, xor_1_1, 1}}, + {1210, {wxRegion, xor_1_0, 1}}, + {1211, {wxAcceleratorTable, new_0, 0}}, + {1212, {wxAcceleratorTable, new_2, 2}}, + {1213, {wxAcceleratorTable, destruct, 0}}, + {1214, {wxAcceleratorTable, ok, 0}}, + {1215, {wxAcceleratorEntry, new_1_0, 1}}, + {1216, {wxAcceleratorEntry, new_1_1, 1}}, + {1217, {wxAcceleratorEntry, getCommand, 0}}, + {1218, {wxAcceleratorEntry, getFlags, 0}}, + {1219, {wxAcceleratorEntry, getKeyCode, 0}}, + {1220, {wxAcceleratorEntry, set, 4}}, + {1221, {wxAcceleratorEntry, 'Destroy', undefined}}, + {1226, {wxCaret, new_3, 3}}, + {1227, {wxCaret, new_2, 2}}, + {1229, {wxCaret, destruct, 0}}, + {1230, {wxCaret, create_3, 3}}, + {1231, {wxCaret, create_2, 2}}, + {1232, {wxCaret, getBlinkTime, 0}}, + {1234, {wxCaret, getPosition, 0}}, + {1236, {wxCaret, getSize, 0}}, + {1237, {wxCaret, getWindow, 0}}, + {1238, {wxCaret, hide, 0}}, + {1239, {wxCaret, isOk, 0}}, + {1240, {wxCaret, isVisible, 0}}, + {1241, {wxCaret, move_2, 2}}, + {1242, {wxCaret, move_1, 1}}, + {1243, {wxCaret, setBlinkTime, 1}}, + {1244, {wxCaret, setSize_2, 2}}, + {1245, {wxCaret, setSize_1, 1}}, + {1246, {wxCaret, show, 1}}, + {1247, {wxSizer, add_2_1, 2}}, + {1248, {wxSizer, add_2_0, 2}}, + {1249, {wxSizer, add_3, 3}}, + {1250, {wxSizer, add_2_3, 2}}, + {1251, {wxSizer, add_2_2, 2}}, + {1252, {wxSizer, addSpacer, 1}}, + {1253, {wxSizer, addStretchSpacer, 1}}, + {1254, {wxSizer, calcMin, 0}}, + {1255, {wxSizer, clear, 1}}, + {1256, {wxSizer, detach_1_2, 1}}, + {1257, {wxSizer, detach_1_1, 1}}, + {1258, {wxSizer, detach_1_0, 1}}, + {1259, {wxSizer, fit, 1}}, + {1260, {wxSizer, fitInside, 1}}, + {1261, {wxSizer, getChildren, 0}}, + {1262, {wxSizer, getItem_2_1, 2}}, + {1263, {wxSizer, getItem_2_0, 2}}, + {1264, {wxSizer, getItem_1, 1}}, + {1265, {wxSizer, getSize, 0}}, + {1266, {wxSizer, getPosition, 0}}, + {1267, {wxSizer, getMinSize, 0}}, + {1268, {wxSizer, hide_2_0, 2}}, + {1269, {wxSizer, hide_2_1, 2}}, + {1270, {wxSizer, hide_1, 1}}, + {1271, {wxSizer, insert_3_1, 3}}, + {1272, {wxSizer, insert_3_0, 3}}, + {1273, {wxSizer, insert_4, 4}}, + {1274, {wxSizer, insert_3_3, 3}}, + {1275, {wxSizer, insert_3_2, 3}}, + {1276, {wxSizer, insert_2, 2}}, + {1277, {wxSizer, insertSpacer, 2}}, + {1278, {wxSizer, insertStretchSpacer, 2}}, + {1279, {wxSizer, isShown_1_2, 1}}, + {1280, {wxSizer, isShown_1_1, 1}}, + {1281, {wxSizer, isShown_1_0, 1}}, + {1282, {wxSizer, layout, 0}}, + {1283, {wxSizer, prepend_2_1, 2}}, + {1284, {wxSizer, prepend_2_0, 2}}, + {1285, {wxSizer, prepend_3, 3}}, + {1286, {wxSizer, prepend_2_3, 2}}, + {1287, {wxSizer, prepend_2_2, 2}}, + {1288, {wxSizer, prepend_1, 1}}, + {1289, {wxSizer, prependSpacer, 1}}, + {1290, {wxSizer, prependStretchSpacer, 1}}, + {1291, {wxSizer, recalcSizes, 0}}, + {1292, {wxSizer, remove_1_1, 1}}, + {1293, {wxSizer, remove_1_0, 1}}, + {1294, {wxSizer, replace_3_1, 3}}, + {1295, {wxSizer, replace_3_0, 3}}, + {1296, {wxSizer, replace_2, 2}}, + {1297, {wxSizer, setDimension, 4}}, + {1298, {wxSizer, setMinSize_2, 2}}, + {1299, {wxSizer, setMinSize_1, 1}}, + {1300, {wxSizer, setItemMinSize_3_2, 3}}, + {1301, {wxSizer, setItemMinSize_2_2, 2}}, + {1302, {wxSizer, setItemMinSize_3_1, 3}}, + {1303, {wxSizer, setItemMinSize_2_1, 2}}, + {1304, {wxSizer, setItemMinSize_3_0, 3}}, + {1305, {wxSizer, setItemMinSize_2_0, 2}}, + {1306, {wxSizer, setSizeHints, 1}}, + {1307, {wxSizer, setVirtualSizeHints, 1}}, + {1308, {wxSizer, show_2_2, 2}}, + {1309, {wxSizer, show_2_1, 2}}, + {1310, {wxSizer, show_2_0, 2}}, + {1311, {wxSizer, show_1, 1}}, + {1312, {wxSizerFlags, new, 1}}, + {1313, {wxSizerFlags, align, 1}}, + {1314, {wxSizerFlags, border_2, 2}}, + {1315, {wxSizerFlags, border_1, 1}}, + {1316, {wxSizerFlags, center, 0}}, + {1317, {wxSizerFlags, centre, 0}}, + {1318, {wxSizerFlags, expand, 0}}, + {1319, {wxSizerFlags, left, 0}}, + {1320, {wxSizerFlags, proportion, 1}}, + {1321, {wxSizerFlags, right, 0}}, + {1322, {wxSizerFlags, 'Destroy', undefined}}, + {1323, {wxSizerItem, new_5_1, 5}}, + {1324, {wxSizerItem, new_2_1, 2}}, + {1325, {wxSizerItem, new_5_0, 5}}, + {1326, {wxSizerItem, new_2_0, 2}}, + {1327, {wxSizerItem, new_6, 6}}, + {1328, {wxSizerItem, new_3, 3}}, + {1329, {wxSizerItem, new_0, 0}}, + {1330, {wxSizerItem, destruct, 0}}, + {1331, {wxSizerItem, calcMin, 0}}, + {1332, {wxSizerItem, deleteWindows, 0}}, + {1333, {wxSizerItem, detachSizer, 0}}, + {1334, {wxSizerItem, getBorder, 0}}, + {1335, {wxSizerItem, getFlag, 0}}, + {1336, {wxSizerItem, getMinSize, 0}}, + {1337, {wxSizerItem, getPosition, 0}}, + {1338, {wxSizerItem, getProportion, 0}}, + {1339, {wxSizerItem, getRatio, 0}}, + {1340, {wxSizerItem, getRect, 0}}, + {1341, {wxSizerItem, getSize, 0}}, + {1342, {wxSizerItem, getSizer, 0}}, + {1343, {wxSizerItem, getSpacer, 0}}, + {1344, {wxSizerItem, getUserData, 0}}, + {1345, {wxSizerItem, getWindow, 0}}, + {1346, {wxSizerItem, isSizer, 0}}, + {1347, {wxSizerItem, isShown, 0}}, + {1348, {wxSizerItem, isSpacer, 0}}, + {1349, {wxSizerItem, isWindow, 0}}, + {1350, {wxSizerItem, setBorder, 1}}, + {1351, {wxSizerItem, setDimension, 2}}, + {1352, {wxSizerItem, setFlag, 1}}, + {1353, {wxSizerItem, setInitSize, 2}}, + {1354, {wxSizerItem, setMinSize_1, 1}}, + {1355, {wxSizerItem, setMinSize_2, 2}}, + {1356, {wxSizerItem, setProportion, 1}}, + {1357, {wxSizerItem, setRatio_2, 2}}, + {1358, {wxSizerItem, setRatio_1_1, 1}}, + {1359, {wxSizerItem, setRatio_1_0, 1}}, + {1360, {wxSizerItem, setSizer, 1}}, + {1361, {wxSizerItem, setSpacer_1, 1}}, + {1362, {wxSizerItem, setSpacer_2, 2}}, + {1363, {wxSizerItem, setWindow, 1}}, + {1364, {wxSizerItem, show, 1}}, + {1365, {wxBoxSizer, new, 1}}, + {1366, {wxBoxSizer, getOrientation, 0}}, + {1367, {wxBoxSizer, 'Destroy', undefined}}, + {1368, {wxStaticBoxSizer, new_2, 2}}, + {1369, {wxStaticBoxSizer, new_3, 3}}, + {1370, {wxStaticBoxSizer, getStaticBox, 0}}, + {1371, {wxStaticBoxSizer, 'Destroy', undefined}}, + {1372, {wxGridSizer, new_4, 4}}, + {1373, {wxGridSizer, new_2, 2}}, + {1374, {wxGridSizer, getCols, 0}}, + {1375, {wxGridSizer, getHGap, 0}}, + {1376, {wxGridSizer, getRows, 0}}, + {1377, {wxGridSizer, getVGap, 0}}, + {1378, {wxGridSizer, setCols, 1}}, + {1379, {wxGridSizer, setHGap, 1}}, + {1380, {wxGridSizer, setRows, 1}}, + {1381, {wxGridSizer, setVGap, 1}}, + {1382, {wxGridSizer, 'Destroy', undefined}}, + {1383, {wxFlexGridSizer, new_4, 4}}, + {1384, {wxFlexGridSizer, new_2, 2}}, + {1385, {wxFlexGridSizer, addGrowableCol, 2}}, + {1386, {wxFlexGridSizer, addGrowableRow, 2}}, + {1387, {wxFlexGridSizer, getFlexibleDirection, 0}}, + {1388, {wxFlexGridSizer, getNonFlexibleGrowMode, 0}}, + {1389, {wxFlexGridSizer, removeGrowableCol, 1}}, + {1390, {wxFlexGridSizer, removeGrowableRow, 1}}, + {1391, {wxFlexGridSizer, setFlexibleDirection, 1}}, + {1392, {wxFlexGridSizer, setNonFlexibleGrowMode, 1}}, + {1393, {wxFlexGridSizer, 'Destroy', undefined}}, + {1394, {wxGridBagSizer, new, 1}}, + {1395, {wxGridBagSizer, add_3_2, 3}}, + {1396, {wxGridBagSizer, add_3_1, 3}}, + {1397, {wxGridBagSizer, add_4, 4}}, + {1398, {wxGridBagSizer, add_1_0, 1}}, + {1399, {wxGridBagSizer, add_2_1, 2}}, + {1400, {wxGridBagSizer, add_2_0, 2}}, + {1401, {wxGridBagSizer, add_3_0, 3}}, + {1402, {wxGridBagSizer, add_1_1, 1}}, + {1403, {wxGridBagSizer, calcMin, 0}}, + {1404, {wxGridBagSizer, checkForIntersection_2, 2}}, + {1405, {wxGridBagSizer, checkForIntersection_3, 3}}, + {1406, {wxGridBagSizer, findItem_1_1, 1}}, + {1407, {wxGridBagSizer, findItem_1_0, 1}}, + {1408, {wxGridBagSizer, findItemAtPoint, 1}}, + {1409, {wxGridBagSizer, findItemAtPosition, 1}}, + {1410, {wxGridBagSizer, findItemWithData, 1}}, + {1411, {wxGridBagSizer, getCellSize, 2}}, + {1412, {wxGridBagSizer, getEmptyCellSize, 0}}, + {1413, {wxGridBagSizer, getItemPosition_1_2, 1}}, + {1414, {wxGridBagSizer, getItemPosition_1_1, 1}}, + {1415, {wxGridBagSizer, getItemPosition_1_0, 1}}, + {1416, {wxGridBagSizer, getItemSpan_1_2, 1}}, + {1417, {wxGridBagSizer, getItemSpan_1_1, 1}}, + {1418, {wxGridBagSizer, getItemSpan_1_0, 1}}, + {1419, {wxGridBagSizer, setEmptyCellSize, 1}}, + {1420, {wxGridBagSizer, setItemPosition_2_2, 2}}, + {1421, {wxGridBagSizer, setItemPosition_2_1, 2}}, + {1422, {wxGridBagSizer, setItemPosition_2_0, 2}}, + {1423, {wxGridBagSizer, setItemSpan_2_2, 2}}, + {1424, {wxGridBagSizer, setItemSpan_2_1, 2}}, + {1425, {wxGridBagSizer, setItemSpan_2_0, 2}}, + {1426, {wxGridBagSizer, 'Destroy', undefined}}, + {1427, {wxStdDialogButtonSizer, new, 0}}, + {1428, {wxStdDialogButtonSizer, addButton, 1}}, + {1429, {wxStdDialogButtonSizer, realize, 0}}, + {1430, {wxStdDialogButtonSizer, setAffirmativeButton, 1}}, + {1431, {wxStdDialogButtonSizer, setCancelButton, 1}}, + {1432, {wxStdDialogButtonSizer, setNegativeButton, 1}}, + {1433, {wxStdDialogButtonSizer, 'Destroy', undefined}}, + {1434, {wxFont, new_0, 0}}, + {1435, {wxFont, new_1, 1}}, + {1436, {wxFont, new_5, 5}}, + {1438, {wxFont, destruct, 0}}, + {1439, {wxFont, isFixedWidth, 0}}, + {1440, {wxFont, getDefaultEncoding, 0}}, + {1441, {wxFont, getFaceName, 0}}, + {1442, {wxFont, getFamily, 0}}, + {1443, {wxFont, getNativeFontInfoDesc, 0}}, + {1444, {wxFont, getNativeFontInfoUserDesc, 0}}, + {1445, {wxFont, getPointSize, 0}}, + {1446, {wxFont, getStyle, 0}}, + {1447, {wxFont, getUnderlined, 0}}, + {1448, {wxFont, getWeight, 0}}, + {1449, {wxFont, ok, 0}}, + {1450, {wxFont, setDefaultEncoding, 1}}, + {1451, {wxFont, setFaceName, 1}}, + {1452, {wxFont, setFamily, 1}}, + {1453, {wxFont, setPointSize, 1}}, + {1454, {wxFont, setStyle, 1}}, + {1455, {wxFont, setUnderlined, 1}}, + {1456, {wxFont, setWeight, 1}}, + {1457, {wxToolTip, enable, 1}}, + {1458, {wxToolTip, setDelay, 1}}, + {1459, {wxToolTip, new, 1}}, + {1460, {wxToolTip, setTip, 1}}, + {1461, {wxToolTip, getTip, 0}}, + {1462, {wxToolTip, getWindow, 0}}, + {1463, {wxToolTip, 'Destroy', undefined}}, + {1465, {wxButton, new_3, 3}}, + {1466, {wxButton, new_0, 0}}, + {1467, {wxButton, destruct, 0}}, + {1468, {wxButton, create, 3}}, + {1469, {wxButton, getDefaultSize, 0}}, + {1470, {wxButton, setDefault, 0}}, + {1471, {wxButton, setLabel, 1}}, + {1473, {wxBitmapButton, new_4, 4}}, + {1474, {wxBitmapButton, new_0, 0}}, + {1475, {wxBitmapButton, create, 4}}, + {1476, {wxBitmapButton, getBitmapDisabled, 0}}, + {1478, {wxBitmapButton, getBitmapFocus, 0}}, + {1480, {wxBitmapButton, getBitmapLabel, 0}}, + {1482, {wxBitmapButton, getBitmapSelected, 0}}, + {1484, {wxBitmapButton, setBitmapDisabled, 1}}, + {1485, {wxBitmapButton, setBitmapFocus, 1}}, + {1486, {wxBitmapButton, setBitmapLabel, 1}}, + {1487, {wxBitmapButton, setBitmapSelected, 1}}, + {1488, {wxBitmapButton, 'Destroy', undefined}}, + {1489, {wxToggleButton, new_0, 0}}, + {1490, {wxToggleButton, new_4, 4}}, + {1491, {wxToggleButton, create, 4}}, + {1492, {wxToggleButton, getValue, 0}}, + {1493, {wxToggleButton, setValue, 1}}, + {1494, {wxToggleButton, 'Destroy', undefined}}, + {1495, {wxCalendarCtrl, new_0, 0}}, + {1496, {wxCalendarCtrl, new_3, 3}}, + {1497, {wxCalendarCtrl, create, 3}}, + {1498, {wxCalendarCtrl, destruct, 0}}, + {1499, {wxCalendarCtrl, setDate, 1}}, + {1500, {wxCalendarCtrl, getDate, 0}}, + {1501, {wxCalendarCtrl, enableYearChange, 1}}, + {1502, {wxCalendarCtrl, enableMonthChange, 1}}, + {1503, {wxCalendarCtrl, enableHolidayDisplay, 1}}, + {1504, {wxCalendarCtrl, setHeaderColours, 2}}, + {1505, {wxCalendarCtrl, getHeaderColourFg, 0}}, + {1506, {wxCalendarCtrl, getHeaderColourBg, 0}}, + {1507, {wxCalendarCtrl, setHighlightColours, 2}}, + {1508, {wxCalendarCtrl, getHighlightColourFg, 0}}, + {1509, {wxCalendarCtrl, getHighlightColourBg, 0}}, + {1510, {wxCalendarCtrl, setHolidayColours, 2}}, + {1511, {wxCalendarCtrl, getHolidayColourFg, 0}}, + {1512, {wxCalendarCtrl, getHolidayColourBg, 0}}, + {1513, {wxCalendarCtrl, getAttr, 1}}, + {1514, {wxCalendarCtrl, setAttr, 2}}, + {1515, {wxCalendarCtrl, setHoliday, 1}}, + {1516, {wxCalendarCtrl, resetAttr, 1}}, + {1517, {wxCalendarCtrl, hitTest, 2}}, + {1518, {wxCalendarDateAttr, new_0, 0}}, + {1519, {wxCalendarDateAttr, new_2_1, 2}}, + {1520, {wxCalendarDateAttr, new_2_0, 2}}, + {1521, {wxCalendarDateAttr, setTextColour, 1}}, + {1522, {wxCalendarDateAttr, setBackgroundColour, 1}}, + {1523, {wxCalendarDateAttr, setBorderColour, 1}}, + {1524, {wxCalendarDateAttr, setFont, 1}}, + {1525, {wxCalendarDateAttr, setBorder, 1}}, + {1526, {wxCalendarDateAttr, setHoliday, 1}}, + {1527, {wxCalendarDateAttr, hasTextColour, 0}}, + {1528, {wxCalendarDateAttr, hasBackgroundColour, 0}}, + {1529, {wxCalendarDateAttr, hasBorderColour, 0}}, + {1530, {wxCalendarDateAttr, hasFont, 0}}, + {1531, {wxCalendarDateAttr, hasBorder, 0}}, + {1532, {wxCalendarDateAttr, isHoliday, 0}}, + {1533, {wxCalendarDateAttr, getTextColour, 0}}, + {1534, {wxCalendarDateAttr, getBackgroundColour, 0}}, + {1535, {wxCalendarDateAttr, getBorderColour, 0}}, + {1536, {wxCalendarDateAttr, getFont, 0}}, + {1537, {wxCalendarDateAttr, getBorder, 0}}, + {1538, {wxCalendarDateAttr, 'Destroy', undefined}}, + {1540, {wxCheckBox, new_4, 4}}, + {1541, {wxCheckBox, new_0, 0}}, + {1542, {wxCheckBox, create, 4}}, + {1543, {wxCheckBox, getValue, 0}}, + {1544, {wxCheckBox, get3StateValue, 0}}, + {1545, {wxCheckBox, is3rdStateAllowedForUser, 0}}, + {1546, {wxCheckBox, is3State, 0}}, + {1547, {wxCheckBox, isChecked, 0}}, + {1548, {wxCheckBox, setValue, 1}}, + {1549, {wxCheckBox, set3StateValue, 1}}, + {1550, {wxCheckBox, 'Destroy', undefined}}, + {1551, {wxCheckListBox, new_0, 0}}, + {1553, {wxCheckListBox, new_3, 3}}, + {1554, {wxCheckListBox, check, 2}}, + {1555, {wxCheckListBox, isChecked, 1}}, + {1556, {wxCheckListBox, 'Destroy', undefined}}, + {1559, {wxChoice, new_3, 3}}, + {1560, {wxChoice, new_0, 0}}, + {1562, {wxChoice, destruct, 0}}, + {1564, {wxChoice, create, 6}}, + {1565, {wxChoice, delete, 1}}, + {1566, {wxChoice, getColumns, 0}}, + {1567, {wxChoice, setColumns, 1}}, + {1568, {wxComboBox, new_0, 0}}, + {1570, {wxComboBox, new_3, 3}}, + {1571, {wxComboBox, destruct, 0}}, + {1573, {wxComboBox, create, 7}}, + {1574, {wxComboBox, canCopy, 0}}, + {1575, {wxComboBox, canCut, 0}}, + {1576, {wxComboBox, canPaste, 0}}, + {1577, {wxComboBox, canRedo, 0}}, + {1578, {wxComboBox, canUndo, 0}}, + {1579, {wxComboBox, copy, 0}}, + {1580, {wxComboBox, cut, 0}}, + {1581, {wxComboBox, getInsertionPoint, 0}}, + {1582, {wxComboBox, getLastPosition, 0}}, + {1583, {wxComboBox, getValue, 0}}, + {1584, {wxComboBox, paste, 0}}, + {1585, {wxComboBox, redo, 0}}, + {1586, {wxComboBox, replace, 3}}, + {1587, {wxComboBox, remove, 2}}, + {1588, {wxComboBox, setInsertionPoint, 1}}, + {1589, {wxComboBox, setInsertionPointEnd, 0}}, + {1590, {wxComboBox, setSelection_1, 1}}, + {1591, {wxComboBox, setSelection_2, 2}}, + {1592, {wxComboBox, setValue, 1}}, + {1593, {wxComboBox, undo, 0}}, + {1594, {wxGauge, new_0, 0}}, + {1595, {wxGauge, new_4, 4}}, + {1596, {wxGauge, create, 4}}, + {1597, {wxGauge, getBezelFace, 0}}, + {1598, {wxGauge, getRange, 0}}, + {1599, {wxGauge, getShadowWidth, 0}}, + {1600, {wxGauge, getValue, 0}}, + {1601, {wxGauge, isVertical, 0}}, + {1602, {wxGauge, setBezelFace, 1}}, + {1603, {wxGauge, setRange, 1}}, + {1604, {wxGauge, setShadowWidth, 1}}, + {1605, {wxGauge, setValue, 1}}, + {1606, {wxGauge, pulse, 0}}, + {1607, {wxGauge, 'Destroy', undefined}}, + {1608, {wxGenericDirCtrl, new_0, 0}}, + {1609, {wxGenericDirCtrl, new_2, 2}}, + {1610, {wxGenericDirCtrl, destruct, 0}}, + {1611, {wxGenericDirCtrl, create, 2}}, + {1612, {wxGenericDirCtrl, init, 0}}, + {1613, {wxGenericDirCtrl, collapseTree, 0}}, + {1614, {wxGenericDirCtrl, expandPath, 1}}, + {1615, {wxGenericDirCtrl, getDefaultPath, 0}}, + {1616, {wxGenericDirCtrl, getPath, 0}}, + {1617, {wxGenericDirCtrl, getFilePath, 0}}, + {1618, {wxGenericDirCtrl, getFilter, 0}}, + {1619, {wxGenericDirCtrl, getFilterIndex, 0}}, + {1620, {wxGenericDirCtrl, getRootId, 0}}, + {1621, {wxGenericDirCtrl, getTreeCtrl, 0}}, + {1622, {wxGenericDirCtrl, reCreateTree, 0}}, + {1623, {wxGenericDirCtrl, setDefaultPath, 1}}, + {1624, {wxGenericDirCtrl, setFilter, 1}}, + {1625, {wxGenericDirCtrl, setFilterIndex, 1}}, + {1626, {wxGenericDirCtrl, setPath, 1}}, + {1628, {wxStaticBox, new_4, 4}}, + {1629, {wxStaticBox, new_0, 0}}, + {1630, {wxStaticBox, create, 4}}, + {1631, {wxStaticBox, 'Destroy', undefined}}, + {1633, {wxStaticLine, new_2, 2}}, + {1634, {wxStaticLine, new_0, 0}}, + {1635, {wxStaticLine, create, 2}}, + {1636, {wxStaticLine, isVertical, 0}}, + {1637, {wxStaticLine, getDefaultSize, 0}}, + {1638, {wxStaticLine, 'Destroy', undefined}}, + {1641, {wxListBox, new_3, 3}}, + {1642, {wxListBox, new_0, 0}}, + {1644, {wxListBox, destruct, 0}}, + {1646, {wxListBox, create, 6}}, + {1647, {wxListBox, deselect, 1}}, + {1648, {wxListBox, getSelections, 1}}, + {1649, {wxListBox, insertItems, 2}}, + {1650, {wxListBox, isSelected, 1}}, + {1652, {wxListBox, set, 2}}, + {1653, {wxListBox, hitTest, 1}}, + {1654, {wxListBox, setFirstItem_1_0, 1}}, + {1655, {wxListBox, setFirstItem_1_1, 1}}, + {1656, {wxListCtrl, new_0, 0}}, + {1657, {wxListCtrl, new_2, 2}}, + {1658, {wxListCtrl, arrange, 1}}, + {1659, {wxListCtrl, assignImageList, 2}}, + {1660, {wxListCtrl, clearAll, 0}}, + {1661, {wxListCtrl, create, 2}}, + {1662, {wxListCtrl, deleteAllItems, 0}}, + {1663, {wxListCtrl, deleteColumn, 1}}, + {1664, {wxListCtrl, deleteItem, 1}}, + {1665, {wxListCtrl, editLabel, 1}}, + {1666, {wxListCtrl, ensureVisible, 1}}, + {1667, {wxListCtrl, findItem_3_0, 3}}, + {1668, {wxListCtrl, findItem_3_1, 3}}, + {1669, {wxListCtrl, getColumn, 2}}, + {1670, {wxListCtrl, getColumnCount, 0}}, + {1671, {wxListCtrl, getColumnWidth, 1}}, + {1672, {wxListCtrl, getCountPerPage, 0}}, + {1673, {wxListCtrl, getEditControl, 0}}, + {1674, {wxListCtrl, getImageList, 1}}, + {1675, {wxListCtrl, getItem, 1}}, + {1676, {wxListCtrl, getItemBackgroundColour, 1}}, + {1677, {wxListCtrl, getItemCount, 0}}, + {1678, {wxListCtrl, getItemData, 1}}, + {1679, {wxListCtrl, getItemFont, 1}}, + {1680, {wxListCtrl, getItemPosition, 2}}, + {1681, {wxListCtrl, getItemRect, 3}}, + {1682, {wxListCtrl, getItemSpacing, 0}}, + {1683, {wxListCtrl, getItemState, 2}}, + {1684, {wxListCtrl, getItemText, 1}}, + {1685, {wxListCtrl, getItemTextColour, 1}}, + {1686, {wxListCtrl, getNextItem, 2}}, + {1687, {wxListCtrl, getSelectedItemCount, 0}}, + {1688, {wxListCtrl, getTextColour, 0}}, + {1689, {wxListCtrl, getTopItem, 0}}, + {1690, {wxListCtrl, getViewRect, 0}}, + {1691, {wxListCtrl, hitTest, 2}}, + {1692, {wxListCtrl, insertColumn_2, 2}}, + {1693, {wxListCtrl, insertColumn_3, 3}}, + {1694, {wxListCtrl, insertItem_1, 1}}, + {1695, {wxListCtrl, insertItem_2_1, 2}}, + {1696, {wxListCtrl, insertItem_2_0, 2}}, + {1697, {wxListCtrl, insertItem_3, 3}}, + {1698, {wxListCtrl, refreshItem, 1}}, + {1699, {wxListCtrl, refreshItems, 2}}, + {1700, {wxListCtrl, scrollList, 2}}, + {1701, {wxListCtrl, setBackgroundColour, 1}}, + {1702, {wxListCtrl, setColumn, 2}}, + {1703, {wxListCtrl, setColumnWidth, 2}}, + {1704, {wxListCtrl, setImageList, 2}}, + {1705, {wxListCtrl, setItem_1, 1}}, + {1706, {wxListCtrl, setItem_4, 4}}, + {1707, {wxListCtrl, setItemBackgroundColour, 2}}, + {1708, {wxListCtrl, setItemCount, 1}}, + {1709, {wxListCtrl, setItemData, 2}}, + {1710, {wxListCtrl, setItemFont, 2}}, + {1711, {wxListCtrl, setItemImage, 3}}, + {1712, {wxListCtrl, setItemColumnImage, 3}}, + {1713, {wxListCtrl, setItemPosition, 2}}, + {1714, {wxListCtrl, setItemState, 3}}, + {1715, {wxListCtrl, setItemText, 2}}, + {1716, {wxListCtrl, setItemTextColour, 2}}, + {1717, {wxListCtrl, setSingleStyle, 2}}, + {1718, {wxListCtrl, setTextColour, 1}}, + {1719, {wxListCtrl, setWindowStyleFlag, 1}}, + {1720, {wxListCtrl, sortItems, 2}}, + {1721, {wxListCtrl, 'Destroy', undefined}}, + {1722, {wxListView, clearColumnImage, 1}}, + {1723, {wxListView, focus, 1}}, + {1724, {wxListView, getFirstSelected, 0}}, + {1725, {wxListView, getFocusedItem, 0}}, + {1726, {wxListView, getNextSelected, 1}}, + {1727, {wxListView, isSelected, 1}}, + {1728, {wxListView, select, 2}}, + {1729, {wxListView, setColumnImage, 2}}, + {1730, {wxListItem, new_0, 0}}, + {1731, {wxListItem, new_1, 1}}, + {1732, {wxListItem, destruct, 0}}, + {1733, {wxListItem, clear, 0}}, + {1734, {wxListItem, getAlign, 0}}, + {1735, {wxListItem, getBackgroundColour, 0}}, + {1736, {wxListItem, getColumn, 0}}, + {1737, {wxListItem, getFont, 0}}, + {1738, {wxListItem, getId, 0}}, + {1739, {wxListItem, getImage, 0}}, + {1740, {wxListItem, getMask, 0}}, + {1741, {wxListItem, getState, 0}}, + {1742, {wxListItem, getText, 0}}, + {1743, {wxListItem, getTextColour, 0}}, + {1744, {wxListItem, getWidth, 0}}, + {1745, {wxListItem, setAlign, 1}}, + {1746, {wxListItem, setBackgroundColour, 1}}, + {1747, {wxListItem, setColumn, 1}}, + {1748, {wxListItem, setFont, 1}}, + {1749, {wxListItem, setId, 1}}, + {1750, {wxListItem, setImage, 1}}, + {1751, {wxListItem, setMask, 1}}, + {1752, {wxListItem, setState, 1}}, + {1753, {wxListItem, setStateMask, 1}}, + {1754, {wxListItem, setText, 1}}, + {1755, {wxListItem, setTextColour, 1}}, + {1756, {wxListItem, setWidth, 1}}, + {1757, {wxImageList, new_0, 0}}, + {1758, {wxImageList, new_3, 3}}, + {1759, {wxImageList, add_1, 1}}, + {1760, {wxImageList, add_2_0, 2}}, + {1761, {wxImageList, add_2_1, 2}}, + {1762, {wxImageList, create, 3}}, + {1764, {wxImageList, draw, 5}}, + {1765, {wxImageList, getBitmap, 1}}, + {1766, {wxImageList, getIcon, 1}}, + {1767, {wxImageList, getImageCount, 0}}, + {1768, {wxImageList, getSize, 3}}, + {1769, {wxImageList, remove, 1}}, + {1770, {wxImageList, removeAll, 0}}, + {1771, {wxImageList, replace_2, 2}}, + {1772, {wxImageList, replace_3, 3}}, + {1773, {wxImageList, 'Destroy', undefined}}, + {1774, {wxTextAttr, new_0, 0}}, + {1775, {wxTextAttr, new_2, 2}}, + {1776, {wxTextAttr, getAlignment, 0}}, + {1777, {wxTextAttr, getBackgroundColour, 0}}, + {1778, {wxTextAttr, getFont, 0}}, + {1779, {wxTextAttr, getLeftIndent, 0}}, + {1780, {wxTextAttr, getLeftSubIndent, 0}}, + {1781, {wxTextAttr, getRightIndent, 0}}, + {1782, {wxTextAttr, getTabs, 0}}, + {1783, {wxTextAttr, getTextColour, 0}}, + {1784, {wxTextAttr, hasBackgroundColour, 0}}, + {1785, {wxTextAttr, hasFont, 0}}, + {1786, {wxTextAttr, hasTextColour, 0}}, + {1787, {wxTextAttr, getFlags, 0}}, + {1788, {wxTextAttr, isDefault, 0}}, + {1789, {wxTextAttr, setAlignment, 1}}, + {1790, {wxTextAttr, setBackgroundColour, 1}}, + {1791, {wxTextAttr, setFlags, 1}}, + {1792, {wxTextAttr, setFont, 2}}, + {1793, {wxTextAttr, setLeftIndent, 2}}, + {1794, {wxTextAttr, setRightIndent, 1}}, + {1795, {wxTextAttr, setTabs, 1}}, + {1796, {wxTextAttr, setTextColour, 1}}, + {1797, {wxTextAttr, 'Destroy', undefined}}, + {1799, {wxTextCtrl, new_3, 3}}, + {1800, {wxTextCtrl, new_0, 0}}, + {1802, {wxTextCtrl, destruct, 0}}, + {1803, {wxTextCtrl, appendText, 1}}, + {1804, {wxTextCtrl, canCopy, 0}}, + {1805, {wxTextCtrl, canCut, 0}}, + {1806, {wxTextCtrl, canPaste, 0}}, + {1807, {wxTextCtrl, canRedo, 0}}, + {1808, {wxTextCtrl, canUndo, 0}}, + {1809, {wxTextCtrl, clear, 0}}, + {1810, {wxTextCtrl, copy, 0}}, + {1811, {wxTextCtrl, create, 3}}, + {1812, {wxTextCtrl, cut, 0}}, + {1813, {wxTextCtrl, discardEdits, 0}}, + {1814, {wxTextCtrl, emulateKeyPress, 1}}, + {1815, {wxTextCtrl, getDefaultStyle, 0}}, + {1816, {wxTextCtrl, getInsertionPoint, 0}}, + {1817, {wxTextCtrl, getLastPosition, 0}}, + {1818, {wxTextCtrl, getLineLength, 1}}, + {1819, {wxTextCtrl, getLineText, 1}}, + {1820, {wxTextCtrl, getNumberOfLines, 0}}, + {1821, {wxTextCtrl, getRange, 2}}, + {1822, {wxTextCtrl, getSelection, 2}}, + {1823, {wxTextCtrl, getStringSelection, 0}}, + {1824, {wxTextCtrl, getStyle, 2}}, + {1825, {wxTextCtrl, getValue, 0}}, + {1826, {wxTextCtrl, isEditable, 0}}, + {1827, {wxTextCtrl, isModified, 0}}, + {1828, {wxTextCtrl, isMultiLine, 0}}, + {1829, {wxTextCtrl, isSingleLine, 0}}, + {1830, {wxTextCtrl, loadFile, 2}}, + {1831, {wxTextCtrl, markDirty, 0}}, + {1832, {wxTextCtrl, paste, 0}}, + {1833, {wxTextCtrl, positionToXY, 3}}, + {1834, {wxTextCtrl, redo, 0}}, + {1835, {wxTextCtrl, remove, 2}}, + {1836, {wxTextCtrl, replace, 3}}, + {1837, {wxTextCtrl, saveFile, 1}}, + {1838, {wxTextCtrl, setDefaultStyle, 1}}, + {1839, {wxTextCtrl, setEditable, 1}}, + {1840, {wxTextCtrl, setInsertionPoint, 1}}, + {1841, {wxTextCtrl, setInsertionPointEnd, 0}}, + {1843, {wxTextCtrl, setMaxLength, 1}}, + {1844, {wxTextCtrl, setSelection, 2}}, + {1845, {wxTextCtrl, setStyle, 3}}, + {1846, {wxTextCtrl, setValue, 1}}, + {1847, {wxTextCtrl, showPosition, 1}}, + {1848, {wxTextCtrl, undo, 0}}, + {1849, {wxTextCtrl, writeText, 1}}, + {1850, {wxTextCtrl, xYToPosition, 2}}, + {1853, {wxNotebook, new_0, 0}}, + {1854, {wxNotebook, new_3, 3}}, + {1855, {wxNotebook, destruct, 0}}, + {1856, {wxNotebook, addPage, 3}}, + {1857, {wxNotebook, advanceSelection, 1}}, + {1858, {wxNotebook, assignImageList, 1}}, + {1859, {wxNotebook, create, 3}}, + {1860, {wxNotebook, deleteAllPages, 0}}, + {1861, {wxNotebook, deletePage, 1}}, + {1862, {wxNotebook, removePage, 1}}, + {1863, {wxNotebook, getCurrentPage, 0}}, + {1864, {wxNotebook, getImageList, 0}}, + {1866, {wxNotebook, getPage, 1}}, + {1867, {wxNotebook, getPageCount, 0}}, + {1868, {wxNotebook, getPageImage, 1}}, + {1869, {wxNotebook, getPageText, 1}}, + {1870, {wxNotebook, getRowCount, 0}}, + {1871, {wxNotebook, getSelection, 0}}, + {1872, {wxNotebook, getThemeBackgroundColour, 0}}, + {1874, {wxNotebook, hitTest, 2}}, + {1876, {wxNotebook, insertPage, 4}}, + {1877, {wxNotebook, setImageList, 1}}, + {1878, {wxNotebook, setPadding, 1}}, + {1879, {wxNotebook, setPageSize, 1}}, + {1880, {wxNotebook, setPageImage, 2}}, + {1881, {wxNotebook, setPageText, 2}}, + {1882, {wxNotebook, setSelection, 1}}, + {1883, {wxNotebook, changeSelection, 1}}, + {1884, {wxChoicebook, new_0, 0}}, + {1885, {wxChoicebook, new_3, 3}}, + {1886, {wxChoicebook, addPage, 3}}, + {1887, {wxChoicebook, advanceSelection, 1}}, + {1888, {wxChoicebook, assignImageList, 1}}, + {1889, {wxChoicebook, create, 3}}, + {1890, {wxChoicebook, deleteAllPages, 0}}, + {1891, {wxChoicebook, deletePage, 1}}, + {1892, {wxChoicebook, removePage, 1}}, + {1893, {wxChoicebook, getCurrentPage, 0}}, + {1894, {wxChoicebook, getImageList, 0}}, + {1896, {wxChoicebook, getPage, 1}}, + {1897, {wxChoicebook, getPageCount, 0}}, + {1898, {wxChoicebook, getPageImage, 1}}, + {1899, {wxChoicebook, getPageText, 1}}, + {1900, {wxChoicebook, getSelection, 0}}, + {1901, {wxChoicebook, hitTest, 2}}, + {1902, {wxChoicebook, insertPage, 4}}, + {1903, {wxChoicebook, setImageList, 1}}, + {1904, {wxChoicebook, setPageSize, 1}}, + {1905, {wxChoicebook, setPageImage, 2}}, + {1906, {wxChoicebook, setPageText, 2}}, + {1907, {wxChoicebook, setSelection, 1}}, + {1908, {wxChoicebook, changeSelection, 1}}, + {1909, {wxChoicebook, 'Destroy', undefined}}, + {1910, {wxToolbook, new_0, 0}}, + {1911, {wxToolbook, new_3, 3}}, + {1912, {wxToolbook, addPage, 3}}, + {1913, {wxToolbook, advanceSelection, 1}}, + {1914, {wxToolbook, assignImageList, 1}}, + {1915, {wxToolbook, create, 3}}, + {1916, {wxToolbook, deleteAllPages, 0}}, + {1917, {wxToolbook, deletePage, 1}}, + {1918, {wxToolbook, removePage, 1}}, + {1919, {wxToolbook, getCurrentPage, 0}}, + {1920, {wxToolbook, getImageList, 0}}, + {1922, {wxToolbook, getPage, 1}}, + {1923, {wxToolbook, getPageCount, 0}}, + {1924, {wxToolbook, getPageImage, 1}}, + {1925, {wxToolbook, getPageText, 1}}, + {1926, {wxToolbook, getSelection, 0}}, + {1928, {wxToolbook, hitTest, 2}}, + {1929, {wxToolbook, insertPage, 4}}, + {1930, {wxToolbook, setImageList, 1}}, + {1931, {wxToolbook, setPageSize, 1}}, + {1932, {wxToolbook, setPageImage, 2}}, + {1933, {wxToolbook, setPageText, 2}}, + {1934, {wxToolbook, setSelection, 1}}, + {1935, {wxToolbook, changeSelection, 1}}, + {1936, {wxToolbook, 'Destroy', undefined}}, + {1937, {wxListbook, new_0, 0}}, + {1938, {wxListbook, new_3, 3}}, + {1939, {wxListbook, addPage, 3}}, + {1940, {wxListbook, advanceSelection, 1}}, + {1941, {wxListbook, assignImageList, 1}}, + {1942, {wxListbook, create, 3}}, + {1943, {wxListbook, deleteAllPages, 0}}, + {1944, {wxListbook, deletePage, 1}}, + {1945, {wxListbook, removePage, 1}}, + {1946, {wxListbook, getCurrentPage, 0}}, + {1947, {wxListbook, getImageList, 0}}, + {1949, {wxListbook, getPage, 1}}, + {1950, {wxListbook, getPageCount, 0}}, + {1951, {wxListbook, getPageImage, 1}}, + {1952, {wxListbook, getPageText, 1}}, + {1953, {wxListbook, getSelection, 0}}, + {1955, {wxListbook, hitTest, 2}}, + {1956, {wxListbook, insertPage, 4}}, + {1957, {wxListbook, setImageList, 1}}, + {1958, {wxListbook, setPageSize, 1}}, + {1959, {wxListbook, setPageImage, 2}}, + {1960, {wxListbook, setPageText, 2}}, + {1961, {wxListbook, setSelection, 1}}, + {1962, {wxListbook, changeSelection, 1}}, + {1963, {wxListbook, 'Destroy', undefined}}, + {1964, {wxTreebook, new_0, 0}}, + {1965, {wxTreebook, new_3, 3}}, + {1966, {wxTreebook, addPage, 3}}, + {1967, {wxTreebook, advanceSelection, 1}}, + {1968, {wxTreebook, assignImageList, 1}}, + {1969, {wxTreebook, create, 3}}, + {1970, {wxTreebook, deleteAllPages, 0}}, + {1971, {wxTreebook, deletePage, 1}}, + {1972, {wxTreebook, removePage, 1}}, + {1973, {wxTreebook, getCurrentPage, 0}}, + {1974, {wxTreebook, getImageList, 0}}, + {1976, {wxTreebook, getPage, 1}}, + {1977, {wxTreebook, getPageCount, 0}}, + {1978, {wxTreebook, getPageImage, 1}}, + {1979, {wxTreebook, getPageText, 1}}, + {1980, {wxTreebook, getSelection, 0}}, + {1981, {wxTreebook, expandNode, 2}}, + {1982, {wxTreebook, isNodeExpanded, 1}}, + {1984, {wxTreebook, hitTest, 2}}, + {1985, {wxTreebook, insertPage, 4}}, + {1986, {wxTreebook, insertSubPage, 4}}, + {1987, {wxTreebook, setImageList, 1}}, + {1988, {wxTreebook, setPageSize, 1}}, + {1989, {wxTreebook, setPageImage, 2}}, + {1990, {wxTreebook, setPageText, 2}}, + {1991, {wxTreebook, setSelection, 1}}, + {1992, {wxTreebook, changeSelection, 1}}, + {1993, {wxTreebook, 'Destroy', undefined}}, + {1996, {wxTreeCtrl, new_2, 2}}, + {1997, {wxTreeCtrl, new_0, 0}}, + {1999, {wxTreeCtrl, destruct, 0}}, + {2000, {wxTreeCtrl, addRoot, 2}}, + {2001, {wxTreeCtrl, appendItem, 3}}, + {2002, {wxTreeCtrl, assignImageList, 1}}, + {2003, {wxTreeCtrl, assignStateImageList, 1}}, + {2004, {wxTreeCtrl, collapse, 1}}, + {2005, {wxTreeCtrl, collapseAndReset, 1}}, + {2006, {wxTreeCtrl, create, 2}}, + {2007, {wxTreeCtrl, delete, 1}}, + {2008, {wxTreeCtrl, deleteAllItems, 0}}, + {2009, {wxTreeCtrl, deleteChildren, 1}}, + {2010, {wxTreeCtrl, ensureVisible, 1}}, + {2011, {wxTreeCtrl, expand, 1}}, + {2012, {wxTreeCtrl, getBoundingRect, 3}}, + {2014, {wxTreeCtrl, getChildrenCount, 2}}, + {2015, {wxTreeCtrl, getCount, 0}}, + {2016, {wxTreeCtrl, getEditControl, 0}}, + {2017, {wxTreeCtrl, getFirstChild, 2}}, + {2018, {wxTreeCtrl, getNextChild, 2}}, + {2019, {wxTreeCtrl, getFirstVisibleItem, 0}}, + {2020, {wxTreeCtrl, getImageList, 0}}, + {2021, {wxTreeCtrl, getIndent, 0}}, + {2022, {wxTreeCtrl, getItemBackgroundColour, 1}}, + {2023, {wxTreeCtrl, getItemData, 1}}, + {2024, {wxTreeCtrl, getItemFont, 1}}, + {2025, {wxTreeCtrl, getItemImage_1, 1}}, + {2026, {wxTreeCtrl, getItemImage_2, 2}}, + {2027, {wxTreeCtrl, getItemText, 1}}, + {2028, {wxTreeCtrl, getItemTextColour, 1}}, + {2029, {wxTreeCtrl, getLastChild, 1}}, + {2030, {wxTreeCtrl, getNextSibling, 1}}, + {2031, {wxTreeCtrl, getNextVisible, 1}}, + {2032, {wxTreeCtrl, getItemParent, 1}}, + {2033, {wxTreeCtrl, getPrevSibling, 1}}, + {2034, {wxTreeCtrl, getPrevVisible, 1}}, + {2035, {wxTreeCtrl, getRootItem, 0}}, + {2036, {wxTreeCtrl, getSelection, 0}}, + {2037, {wxTreeCtrl, getSelections, 1}}, + {2038, {wxTreeCtrl, getStateImageList, 0}}, + {2039, {wxTreeCtrl, hitTest, 1}}, + {2041, {wxTreeCtrl, insertItem, 4}}, + {2042, {wxTreeCtrl, isBold, 1}}, + {2043, {wxTreeCtrl, isExpanded, 1}}, + {2044, {wxTreeCtrl, isSelected, 1}}, + {2045, {wxTreeCtrl, isVisible, 1}}, + {2046, {wxTreeCtrl, itemHasChildren, 1}}, + {2047, {wxTreeCtrl, prependItem, 3}}, + {2048, {wxTreeCtrl, scrollTo, 1}}, + {2049, {wxTreeCtrl, selectItem_1, 1}}, + {2050, {wxTreeCtrl, selectItem_2, 2}}, + {2051, {wxTreeCtrl, setIndent, 1}}, + {2052, {wxTreeCtrl, setImageList, 1}}, + {2053, {wxTreeCtrl, setItemBackgroundColour, 2}}, + {2054, {wxTreeCtrl, setItemBold, 2}}, + {2055, {wxTreeCtrl, setItemData, 2}}, + {2056, {wxTreeCtrl, setItemDropHighlight, 2}}, + {2057, {wxTreeCtrl, setItemFont, 2}}, + {2058, {wxTreeCtrl, setItemHasChildren, 2}}, + {2059, {wxTreeCtrl, setItemImage_2, 2}}, + {2060, {wxTreeCtrl, setItemImage_3, 3}}, + {2061, {wxTreeCtrl, setItemText, 2}}, + {2062, {wxTreeCtrl, setItemTextColour, 2}}, + {2063, {wxTreeCtrl, setStateImageList, 1}}, + {2064, {wxTreeCtrl, setWindowStyle, 1}}, + {2065, {wxTreeCtrl, sortChildren, 1}}, + {2066, {wxTreeCtrl, toggle, 1}}, + {2067, {wxTreeCtrl, toggleItemSelection, 1}}, + {2068, {wxTreeCtrl, unselect, 0}}, + {2069, {wxTreeCtrl, unselectAll, 0}}, + {2070, {wxTreeCtrl, unselectItem, 1}}, + {2071, {wxScrollBar, new_0, 0}}, + {2072, {wxScrollBar, new_3, 3}}, + {2073, {wxScrollBar, destruct, 0}}, + {2074, {wxScrollBar, create, 3}}, + {2075, {wxScrollBar, getRange, 0}}, + {2076, {wxScrollBar, getPageSize, 0}}, + {2077, {wxScrollBar, getThumbPosition, 0}}, + {2078, {wxScrollBar, getThumbSize, 0}}, + {2079, {wxScrollBar, setThumbPosition, 1}}, + {2080, {wxScrollBar, setScrollbar, 5}}, + {2082, {wxSpinButton, new_2, 2}}, + {2083, {wxSpinButton, new_0, 0}}, + {2084, {wxSpinButton, create, 2}}, + {2085, {wxSpinButton, getMax, 0}}, + {2086, {wxSpinButton, getMin, 0}}, + {2087, {wxSpinButton, getValue, 0}}, + {2088, {wxSpinButton, setRange, 2}}, + {2089, {wxSpinButton, setValue, 1}}, + {2090, {wxSpinButton, 'Destroy', undefined}}, + {2091, {wxSpinCtrl, new_0, 0}}, + {2092, {wxSpinCtrl, new_2, 2}}, + {2094, {wxSpinCtrl, create, 2}}, + {2097, {wxSpinCtrl, setValue_1_1, 1}}, + {2098, {wxSpinCtrl, setValue_1_0, 1}}, + {2100, {wxSpinCtrl, getValue, 0}}, + {2102, {wxSpinCtrl, setRange, 2}}, + {2103, {wxSpinCtrl, setSelection, 2}}, + {2105, {wxSpinCtrl, getMin, 0}}, + {2107, {wxSpinCtrl, getMax, 0}}, + {2108, {wxSpinCtrl, 'Destroy', undefined}}, + {2109, {wxStaticText, new_0, 0}}, + {2110, {wxStaticText, new_4, 4}}, + {2111, {wxStaticText, create, 4}}, + {2112, {wxStaticText, getLabel, 0}}, + {2113, {wxStaticText, setLabel, 1}}, + {2114, {wxStaticText, wrap, 1}}, + {2115, {wxStaticText, 'Destroy', undefined}}, + {2116, {wxStaticBitmap, new_0, 0}}, + {2117, {wxStaticBitmap, new_4, 4}}, + {2118, {wxStaticBitmap, create, 4}}, + {2119, {wxStaticBitmap, getBitmap, 0}}, + {2120, {wxStaticBitmap, setBitmap, 1}}, + {2121, {wxStaticBitmap, 'Destroy', undefined}}, + {2122, {wxRadioBox, new, 7}}, + {2124, {wxRadioBox, destruct, 0}}, + {2125, {wxRadioBox, create, 7}}, + {2126, {wxRadioBox, enable_2, 2}}, + {2127, {wxRadioBox, enable_1, 1}}, + {2128, {wxRadioBox, getSelection, 0}}, + {2129, {wxRadioBox, getString, 1}}, + {2130, {wxRadioBox, setSelection, 1}}, + {2131, {wxRadioBox, show_2, 2}}, + {2132, {wxRadioBox, show_1, 1}}, + {2133, {wxRadioBox, getColumnCount, 0}}, + {2134, {wxRadioBox, getItemHelpText, 1}}, + {2135, {wxRadioBox, getItemToolTip, 1}}, + {2137, {wxRadioBox, getItemFromPoint, 1}}, + {2138, {wxRadioBox, getRowCount, 0}}, + {2139, {wxRadioBox, isItemEnabled, 1}}, + {2140, {wxRadioBox, isItemShown, 1}}, + {2141, {wxRadioBox, setItemHelpText, 2}}, + {2142, {wxRadioBox, setItemToolTip, 2}}, + {2143, {wxRadioButton, new_0, 0}}, + {2144, {wxRadioButton, new_4, 4}}, + {2145, {wxRadioButton, create, 4}}, + {2146, {wxRadioButton, getValue, 0}}, + {2147, {wxRadioButton, setValue, 1}}, + {2148, {wxRadioButton, 'Destroy', undefined}}, + {2150, {wxSlider, new_6, 6}}, + {2151, {wxSlider, new_0, 0}}, + {2152, {wxSlider, create, 6}}, + {2153, {wxSlider, getLineSize, 0}}, + {2154, {wxSlider, getMax, 0}}, + {2155, {wxSlider, getMin, 0}}, + {2156, {wxSlider, getPageSize, 0}}, + {2157, {wxSlider, getThumbLength, 0}}, + {2158, {wxSlider, getValue, 0}}, + {2159, {wxSlider, setLineSize, 1}}, + {2160, {wxSlider, setPageSize, 1}}, + {2161, {wxSlider, setRange, 2}}, + {2162, {wxSlider, setThumbLength, 1}}, + {2163, {wxSlider, setValue, 1}}, + {2164, {wxSlider, 'Destroy', undefined}}, + {2166, {wxDialog, new_4, 4}}, + {2167, {wxDialog, new_0, 0}}, + {2169, {wxDialog, destruct, 0}}, + {2170, {wxDialog, create, 4}}, + {2171, {wxDialog, createButtonSizer, 1}}, + {2172, {wxDialog, createStdDialogButtonSizer, 1}}, + {2173, {wxDialog, endModal, 1}}, + {2174, {wxDialog, getAffirmativeId, 0}}, + {2175, {wxDialog, getReturnCode, 0}}, + {2176, {wxDialog, isModal, 0}}, + {2177, {wxDialog, setAffirmativeId, 1}}, + {2178, {wxDialog, setReturnCode, 1}}, + {2179, {wxDialog, show, 1}}, + {2180, {wxDialog, showModal, 0}}, + {2181, {wxColourDialog, new_0, 0}}, + {2182, {wxColourDialog, new_2, 2}}, + {2183, {wxColourDialog, destruct, 0}}, + {2184, {wxColourDialog, create, 2}}, + {2185, {wxColourDialog, getColourData, 0}}, + {2186, {wxColourData, new_0, 0}}, + {2187, {wxColourData, new_1, 1}}, + {2188, {wxColourData, destruct, 0}}, + {2189, {wxColourData, getChooseFull, 0}}, + {2190, {wxColourData, getColour, 0}}, + {2192, {wxColourData, getCustomColour, 1}}, + {2193, {wxColourData, setChooseFull, 1}}, + {2194, {wxColourData, setColour, 1}}, + {2195, {wxColourData, setCustomColour, 2}}, + {2196, {wxPalette, new_0, 0}}, + {2197, {wxPalette, new_4, 4}}, + {2199, {wxPalette, destruct, 0}}, + {2200, {wxPalette, create, 4}}, + {2201, {wxPalette, getColoursCount, 0}}, + {2202, {wxPalette, getPixel, 3}}, + {2203, {wxPalette, getRGB, 4}}, + {2204, {wxPalette, isOk, 0}}, + {2208, {wxDirDialog, new, 2}}, + {2209, {wxDirDialog, destruct, 0}}, + {2210, {wxDirDialog, getPath, 0}}, + {2211, {wxDirDialog, getMessage, 0}}, + {2212, {wxDirDialog, setMessage, 1}}, + {2213, {wxDirDialog, setPath, 1}}, + {2217, {wxFileDialog, new, 2}}, + {2218, {wxFileDialog, destruct, 0}}, + {2219, {wxFileDialog, getDirectory, 0}}, + {2220, {wxFileDialog, getFilename, 0}}, + {2221, {wxFileDialog, getFilenames, 1}}, + {2222, {wxFileDialog, getFilterIndex, 0}}, + {2223, {wxFileDialog, getMessage, 0}}, + {2224, {wxFileDialog, getPath, 0}}, + {2225, {wxFileDialog, getPaths, 1}}, + {2226, {wxFileDialog, getWildcard, 0}}, + {2227, {wxFileDialog, setDirectory, 1}}, + {2228, {wxFileDialog, setFilename, 1}}, + {2229, {wxFileDialog, setFilterIndex, 1}}, + {2230, {wxFileDialog, setMessage, 1}}, + {2231, {wxFileDialog, setPath, 1}}, + {2232, {wxFileDialog, setWildcard, 1}}, + {2233, {wxPickerBase, setInternalMargin, 1}}, + {2234, {wxPickerBase, getInternalMargin, 0}}, + {2235, {wxPickerBase, setTextCtrlProportion, 1}}, + {2236, {wxPickerBase, setPickerCtrlProportion, 1}}, + {2237, {wxPickerBase, getTextCtrlProportion, 0}}, + {2238, {wxPickerBase, getPickerCtrlProportion, 0}}, + {2239, {wxPickerBase, hasTextCtrl, 0}}, + {2240, {wxPickerBase, getTextCtrl, 0}}, + {2241, {wxPickerBase, isTextCtrlGrowable, 0}}, + {2242, {wxPickerBase, setPickerCtrlGrowable, 1}}, + {2243, {wxPickerBase, setTextCtrlGrowable, 1}}, + {2244, {wxPickerBase, isPickerCtrlGrowable, 0}}, + {2245, {wxFilePickerCtrl, new_0, 0}}, + {2246, {wxFilePickerCtrl, new_3, 3}}, + {2247, {wxFilePickerCtrl, create, 3}}, + {2248, {wxFilePickerCtrl, getPath, 0}}, + {2249, {wxFilePickerCtrl, setPath, 1}}, + {2250, {wxFilePickerCtrl, 'Destroy', undefined}}, + {2251, {wxDirPickerCtrl, new_0, 0}}, + {2252, {wxDirPickerCtrl, new_3, 3}}, + {2253, {wxDirPickerCtrl, create, 3}}, + {2254, {wxDirPickerCtrl, getPath, 0}}, + {2255, {wxDirPickerCtrl, setPath, 1}}, + {2256, {wxDirPickerCtrl, 'Destroy', undefined}}, + {2257, {wxColourPickerCtrl, new_0, 0}}, + {2258, {wxColourPickerCtrl, new_3, 3}}, + {2259, {wxColourPickerCtrl, create, 3}}, + {2260, {wxColourPickerCtrl, getColour, 0}}, + {2261, {wxColourPickerCtrl, setColour_1_1, 1}}, + {2262, {wxColourPickerCtrl, setColour_1_0, 1}}, + {2263, {wxColourPickerCtrl, 'Destroy', undefined}}, + {2264, {wxDatePickerCtrl, new_0, 0}}, + {2265, {wxDatePickerCtrl, new_3, 3}}, + {2266, {wxDatePickerCtrl, getRange, 2}}, + {2267, {wxDatePickerCtrl, getValue, 0}}, + {2268, {wxDatePickerCtrl, setRange, 2}}, + {2269, {wxDatePickerCtrl, setValue, 1}}, + {2270, {wxDatePickerCtrl, 'Destroy', undefined}}, + {2271, {wxFontPickerCtrl, new_0, 0}}, + {2272, {wxFontPickerCtrl, new_3, 3}}, + {2273, {wxFontPickerCtrl, create, 3}}, + {2274, {wxFontPickerCtrl, getSelectedFont, 0}}, + {2275, {wxFontPickerCtrl, setSelectedFont, 1}}, + {2276, {wxFontPickerCtrl, getMaxPointSize, 0}}, + {2277, {wxFontPickerCtrl, setMaxPointSize, 1}}, + {2278, {wxFontPickerCtrl, 'Destroy', undefined}}, + {2281, {wxFindReplaceDialog, new_0, 0}}, + {2282, {wxFindReplaceDialog, new_4, 4}}, + {2283, {wxFindReplaceDialog, destruct, 0}}, + {2284, {wxFindReplaceDialog, create, 4}}, + {2285, {wxFindReplaceDialog, getData, 0}}, + {2286, {wxFindReplaceData, new_0, 0}}, + {2287, {wxFindReplaceData, new_1, 1}}, + {2288, {wxFindReplaceData, getFindString, 0}}, + {2289, {wxFindReplaceData, getReplaceString, 0}}, + {2290, {wxFindReplaceData, getFlags, 0}}, + {2291, {wxFindReplaceData, setFlags, 1}}, + {2292, {wxFindReplaceData, setFindString, 1}}, + {2293, {wxFindReplaceData, setReplaceString, 1}}, + {2294, {wxFindReplaceData, 'Destroy', undefined}}, + {2295, {wxMultiChoiceDialog, new_0, 0}}, + {2297, {wxMultiChoiceDialog, new_5, 5}}, + {2298, {wxMultiChoiceDialog, getSelections, 0}}, + {2299, {wxMultiChoiceDialog, setSelections, 1}}, + {2300, {wxMultiChoiceDialog, 'Destroy', undefined}}, + {2301, {wxSingleChoiceDialog, new_0, 0}}, + {2303, {wxSingleChoiceDialog, new_5, 5}}, + {2304, {wxSingleChoiceDialog, getSelection, 0}}, + {2305, {wxSingleChoiceDialog, getStringSelection, 0}}, + {2306, {wxSingleChoiceDialog, setSelection, 1}}, + {2307, {wxSingleChoiceDialog, 'Destroy', undefined}}, + {2308, {wxTextEntryDialog, new, 3}}, + {2309, {wxTextEntryDialog, getValue, 0}}, + {2310, {wxTextEntryDialog, setValue, 1}}, + {2311, {wxTextEntryDialog, 'Destroy', undefined}}, + {2312, {wxPasswordEntryDialog, new, 3}}, + {2313, {wxPasswordEntryDialog, 'Destroy', undefined}}, + {2314, {wxFontData, new_0, 0}}, + {2315, {wxFontData, new_1, 1}}, + {2316, {wxFontData, destruct, 0}}, + {2317, {wxFontData, enableEffects, 1}}, + {2318, {wxFontData, getAllowSymbols, 0}}, + {2319, {wxFontData, getColour, 0}}, + {2320, {wxFontData, getChosenFont, 0}}, + {2321, {wxFontData, getEnableEffects, 0}}, + {2322, {wxFontData, getInitialFont, 0}}, + {2323, {wxFontData, getShowHelp, 0}}, + {2324, {wxFontData, setAllowSymbols, 1}}, + {2325, {wxFontData, setChosenFont, 1}}, + {2326, {wxFontData, setColour, 1}}, + {2327, {wxFontData, setInitialFont, 1}}, + {2328, {wxFontData, setRange, 2}}, + {2329, {wxFontData, setShowHelp, 1}}, + {2333, {wxFontDialog, new_0, 0}}, + {2335, {wxFontDialog, new_2, 2}}, + {2337, {wxFontDialog, create, 2}}, + {2338, {wxFontDialog, getFontData, 0}}, + {2340, {wxFontDialog, 'Destroy', undefined}}, + {2341, {wxProgressDialog, new, 3}}, + {2342, {wxProgressDialog, destruct, 0}}, + {2343, {wxProgressDialog, resume, 0}}, + {2344, {wxProgressDialog, update_2, 2}}, + {2345, {wxProgressDialog, update_0, 0}}, + {2346, {wxMessageDialog, new, 3}}, + {2347, {wxMessageDialog, destruct, 0}}, + {2348, {wxPageSetupDialog, new, 2}}, + {2349, {wxPageSetupDialog, destruct, 0}}, + {2350, {wxPageSetupDialog, getPageSetupData, 0}}, + {2351, {wxPageSetupDialog, showModal, 0}}, + {2352, {wxPageSetupDialogData, new_0, 0}}, + {2353, {wxPageSetupDialogData, new_1_0, 1}}, + {2354, {wxPageSetupDialogData, new_1_1, 1}}, + {2355, {wxPageSetupDialogData, destruct, 0}}, + {2356, {wxPageSetupDialogData, enableHelp, 1}}, + {2357, {wxPageSetupDialogData, enableMargins, 1}}, + {2358, {wxPageSetupDialogData, enableOrientation, 1}}, + {2359, {wxPageSetupDialogData, enablePaper, 1}}, + {2360, {wxPageSetupDialogData, enablePrinter, 1}}, + {2361, {wxPageSetupDialogData, getDefaultMinMargins, 0}}, + {2362, {wxPageSetupDialogData, getEnableMargins, 0}}, + {2363, {wxPageSetupDialogData, getEnableOrientation, 0}}, + {2364, {wxPageSetupDialogData, getEnablePaper, 0}}, + {2365, {wxPageSetupDialogData, getEnablePrinter, 0}}, + {2366, {wxPageSetupDialogData, getEnableHelp, 0}}, + {2367, {wxPageSetupDialogData, getDefaultInfo, 0}}, + {2368, {wxPageSetupDialogData, getMarginTopLeft, 0}}, + {2369, {wxPageSetupDialogData, getMarginBottomRight, 0}}, + {2370, {wxPageSetupDialogData, getMinMarginTopLeft, 0}}, + {2371, {wxPageSetupDialogData, getMinMarginBottomRight, 0}}, + {2372, {wxPageSetupDialogData, getPaperId, 0}}, + {2373, {wxPageSetupDialogData, getPaperSize, 0}}, + {2375, {wxPageSetupDialogData, getPrintData, 0}}, + {2376, {wxPageSetupDialogData, isOk, 0}}, + {2377, {wxPageSetupDialogData, setDefaultInfo, 1}}, + {2378, {wxPageSetupDialogData, setDefaultMinMargins, 1}}, + {2379, {wxPageSetupDialogData, setMarginTopLeft, 1}}, + {2380, {wxPageSetupDialogData, setMarginBottomRight, 1}}, + {2381, {wxPageSetupDialogData, setMinMarginTopLeft, 1}}, + {2382, {wxPageSetupDialogData, setMinMarginBottomRight, 1}}, + {2383, {wxPageSetupDialogData, setPaperId, 1}}, + {2384, {wxPageSetupDialogData, setPaperSize_1_1, 1}}, + {2385, {wxPageSetupDialogData, setPaperSize_1_0, 1}}, + {2386, {wxPageSetupDialogData, setPrintData, 1}}, + {2387, {wxPrintDialog, new_2_0, 2}}, + {2388, {wxPrintDialog, new_2_1, 2}}, + {2389, {wxPrintDialog, destruct, 0}}, + {2390, {wxPrintDialog, getPrintDialogData, 0}}, + {2391, {wxPrintDialog, getPrintDC, 0}}, + {2392, {wxPrintDialogData, new_0, 0}}, + {2393, {wxPrintDialogData, new_1_1, 1}}, + {2394, {wxPrintDialogData, new_1_0, 1}}, + {2395, {wxPrintDialogData, destruct, 0}}, + {2396, {wxPrintDialogData, enableHelp, 1}}, + {2397, {wxPrintDialogData, enablePageNumbers, 1}}, + {2398, {wxPrintDialogData, enablePrintToFile, 1}}, + {2399, {wxPrintDialogData, enableSelection, 1}}, + {2400, {wxPrintDialogData, getAllPages, 0}}, + {2401, {wxPrintDialogData, getCollate, 0}}, + {2402, {wxPrintDialogData, getFromPage, 0}}, + {2403, {wxPrintDialogData, getMaxPage, 0}}, + {2404, {wxPrintDialogData, getMinPage, 0}}, + {2405, {wxPrintDialogData, getNoCopies, 0}}, + {2406, {wxPrintDialogData, getPrintData, 0}}, + {2407, {wxPrintDialogData, getPrintToFile, 0}}, + {2408, {wxPrintDialogData, getSelection, 0}}, + {2409, {wxPrintDialogData, getToPage, 0}}, + {2410, {wxPrintDialogData, isOk, 0}}, + {2411, {wxPrintDialogData, setCollate, 1}}, + {2412, {wxPrintDialogData, setFromPage, 1}}, + {2413, {wxPrintDialogData, setMaxPage, 1}}, + {2414, {wxPrintDialogData, setMinPage, 1}}, + {2415, {wxPrintDialogData, setNoCopies, 1}}, + {2416, {wxPrintDialogData, setPrintData, 1}}, + {2417, {wxPrintDialogData, setPrintToFile, 1}}, + {2418, {wxPrintDialogData, setSelection, 1}}, + {2419, {wxPrintDialogData, setToPage, 1}}, + {2420, {wxPrintData, new_0, 0}}, + {2421, {wxPrintData, new_1, 1}}, + {2422, {wxPrintData, destruct, 0}}, + {2423, {wxPrintData, getCollate, 0}}, + {2424, {wxPrintData, getBin, 0}}, + {2425, {wxPrintData, getColour, 0}}, + {2426, {wxPrintData, getDuplex, 0}}, + {2427, {wxPrintData, getNoCopies, 0}}, + {2428, {wxPrintData, getOrientation, 0}}, + {2429, {wxPrintData, getPaperId, 0}}, + {2430, {wxPrintData, getPrinterName, 0}}, + {2431, {wxPrintData, getQuality, 0}}, + {2432, {wxPrintData, isOk, 0}}, + {2433, {wxPrintData, setBin, 1}}, + {2434, {wxPrintData, setCollate, 1}}, + {2435, {wxPrintData, setColour, 1}}, + {2436, {wxPrintData, setDuplex, 1}}, + {2437, {wxPrintData, setNoCopies, 1}}, + {2438, {wxPrintData, setOrientation, 1}}, + {2439, {wxPrintData, setPaperId, 1}}, + {2440, {wxPrintData, setPrinterName, 1}}, + {2441, {wxPrintData, setQuality, 1}}, + {2444, {wxPrintPreview, new_2, 2}}, + {2445, {wxPrintPreview, new_3, 3}}, + {2447, {wxPrintPreview, destruct, 0}}, + {2448, {wxPrintPreview, getCanvas, 0}}, + {2449, {wxPrintPreview, getCurrentPage, 0}}, + {2450, {wxPrintPreview, getFrame, 0}}, + {2451, {wxPrintPreview, getMaxPage, 0}}, + {2452, {wxPrintPreview, getMinPage, 0}}, + {2453, {wxPrintPreview, getPrintout, 0}}, + {2454, {wxPrintPreview, getPrintoutForPrinting, 0}}, + {2455, {wxPrintPreview, isOk, 0}}, + {2456, {wxPrintPreview, paintPage, 2}}, + {2457, {wxPrintPreview, print, 1}}, + {2458, {wxPrintPreview, renderPage, 1}}, + {2459, {wxPrintPreview, setCanvas, 1}}, + {2460, {wxPrintPreview, setCurrentPage, 1}}, + {2461, {wxPrintPreview, setFrame, 1}}, + {2462, {wxPrintPreview, setPrintout, 1}}, + {2463, {wxPrintPreview, setZoom, 1}}, + {2464, {wxPreviewFrame, new, 3}}, + {2465, {wxPreviewFrame, destruct, 0}}, + {2466, {wxPreviewFrame, createControlBar, 0}}, + {2467, {wxPreviewFrame, createCanvas, 0}}, + {2468, {wxPreviewFrame, initialize, 0}}, + {2469, {wxPreviewFrame, onCloseWindow, 1}}, + {2470, {wxPreviewControlBar, new, 4}}, + {2471, {wxPreviewControlBar, destruct, 0}}, + {2472, {wxPreviewControlBar, createButtons, 0}}, + {2473, {wxPreviewControlBar, getPrintPreview, 0}}, + {2474, {wxPreviewControlBar, getZoomControl, 0}}, + {2475, {wxPreviewControlBar, setZoomControl, 1}}, + {2477, {wxPrinter, new, 1}}, + {2478, {wxPrinter, createAbortWindow, 2}}, + {2479, {wxPrinter, getAbort, 0}}, + {2480, {wxPrinter, getLastError, 0}}, + {2481, {wxPrinter, getPrintDialogData, 0}}, + {2482, {wxPrinter, print, 3}}, + {2483, {wxPrinter, printDialog, 1}}, + {2484, {wxPrinter, reportError, 3}}, + {2485, {wxPrinter, setup, 1}}, + {2486, {wxPrinter, 'Destroy', undefined}}, + {2487, {wxXmlResource, new_1, 1}}, + {2488, {wxXmlResource, new_2, 2}}, + {2489, {wxXmlResource, destruct, 0}}, + {2490, {wxXmlResource, attachUnknownControl, 3}}, + {2491, {wxXmlResource, clearHandlers, 0}}, + {2492, {wxXmlResource, compareVersion, 4}}, + {2493, {wxXmlResource, get, 0}}, + {2494, {wxXmlResource, getFlags, 0}}, + {2495, {wxXmlResource, getVersion, 0}}, + {2496, {wxXmlResource, getXRCID, 2}}, + {2497, {wxXmlResource, initAllHandlers, 0}}, + {2498, {wxXmlResource, load, 1}}, + {2499, {wxXmlResource, loadBitmap, 1}}, + {2500, {wxXmlResource, loadDialog_2, 2}}, + {2501, {wxXmlResource, loadDialog_3, 3}}, + {2502, {wxXmlResource, loadFrame_2, 2}}, + {2503, {wxXmlResource, loadFrame_3, 3}}, + {2504, {wxXmlResource, loadIcon, 1}}, + {2505, {wxXmlResource, loadMenu, 1}}, + {2506, {wxXmlResource, loadMenuBar_2, 2}}, + {2507, {wxXmlResource, loadMenuBar_1, 1}}, + {2508, {wxXmlResource, loadPanel_2, 2}}, + {2509, {wxXmlResource, loadPanel_3, 3}}, + {2510, {wxXmlResource, loadToolBar, 2}}, + {2511, {wxXmlResource, set, 1}}, + {2512, {wxXmlResource, setFlags, 1}}, + {2513, {wxXmlResource, unload, 1}}, + {2514, {wxXmlResource, xrcctrl, 3}}, + {2515, {wxHtmlEasyPrinting, new, 1}}, + {2516, {wxHtmlEasyPrinting, destruct, 0}}, + {2517, {wxHtmlEasyPrinting, getPrintData, 0}}, + {2518, {wxHtmlEasyPrinting, getPageSetupData, 0}}, + {2519, {wxHtmlEasyPrinting, previewFile, 1}}, + {2520, {wxHtmlEasyPrinting, previewText, 2}}, + {2521, {wxHtmlEasyPrinting, printFile, 1}}, + {2522, {wxHtmlEasyPrinting, printText, 2}}, + {2523, {wxHtmlEasyPrinting, pageSetup, 0}}, + {2524, {wxHtmlEasyPrinting, setFonts, 3}}, + {2525, {wxHtmlEasyPrinting, setHeader, 2}}, + {2526, {wxHtmlEasyPrinting, setFooter, 2}}, + {2528, {wxGLCanvas, new_2, 2}}, + {2529, {wxGLCanvas, new_3_1, 3}}, + {2530, {wxGLCanvas, new_3_0, 3}}, + {2531, {wxGLCanvas, getContext, 0}}, + {2533, {wxGLCanvas, setCurrent, 0}}, + {2534, {wxGLCanvas, swapBuffers, 0}}, + {2535, {wxGLCanvas, 'Destroy', undefined}}, + {2536, {wxAuiManager, new, 1}}, + {2537, {wxAuiManager, destruct, 0}}, + {2538, {wxAuiManager, addPane_2_1, 2}}, + {2539, {wxAuiManager, addPane_3, 3}}, + {2540, {wxAuiManager, addPane_2_0, 2}}, + {2541, {wxAuiManager, detachPane, 1}}, + {2542, {wxAuiManager, getAllPanes, 0}}, + {2543, {wxAuiManager, getArtProvider, 0}}, + {2544, {wxAuiManager, getDockSizeConstraint, 2}}, + {2545, {wxAuiManager, getFlags, 0}}, + {2546, {wxAuiManager, getManagedWindow, 0}}, + {2547, {wxAuiManager, getManager, 1}}, + {2548, {wxAuiManager, getPane_1_1, 1}}, + {2549, {wxAuiManager, getPane_1_0, 1}}, + {2550, {wxAuiManager, hideHint, 0}}, + {2551, {wxAuiManager, insertPane, 3}}, + {2552, {wxAuiManager, loadPaneInfo, 2}}, + {2553, {wxAuiManager, loadPerspective, 2}}, + {2554, {wxAuiManager, savePaneInfo, 1}}, + {2555, {wxAuiManager, savePerspective, 0}}, + {2556, {wxAuiManager, setArtProvider, 1}}, + {2557, {wxAuiManager, setDockSizeConstraint, 2}}, + {2558, {wxAuiManager, setFlags, 1}}, + {2559, {wxAuiManager, setManagedWindow, 1}}, + {2560, {wxAuiManager, showHint, 1}}, + {2561, {wxAuiManager, unInit, 0}}, + {2562, {wxAuiManager, update, 0}}, + {2563, {wxAuiPaneInfo, new_0, 0}}, + {2564, {wxAuiPaneInfo, new_1, 1}}, + {2565, {wxAuiPaneInfo, destruct, 0}}, + {2566, {wxAuiPaneInfo, bestSize_1, 1}}, + {2567, {wxAuiPaneInfo, bestSize_2, 2}}, + {2568, {wxAuiPaneInfo, bottom, 0}}, + {2569, {wxAuiPaneInfo, bottomDockable, 1}}, + {2570, {wxAuiPaneInfo, caption, 1}}, + {2571, {wxAuiPaneInfo, captionVisible, 1}}, + {2572, {wxAuiPaneInfo, centre, 0}}, + {2573, {wxAuiPaneInfo, centrePane, 0}}, + {2574, {wxAuiPaneInfo, closeButton, 1}}, + {2575, {wxAuiPaneInfo, defaultPane, 0}}, + {2576, {wxAuiPaneInfo, destroyOnClose, 1}}, + {2577, {wxAuiPaneInfo, direction, 1}}, + {2578, {wxAuiPaneInfo, dock, 0}}, + {2579, {wxAuiPaneInfo, dockable, 1}}, + {2580, {wxAuiPaneInfo, fixed, 0}}, + {2581, {wxAuiPaneInfo, float, 0}}, + {2582, {wxAuiPaneInfo, floatable, 1}}, + {2583, {wxAuiPaneInfo, floatingPosition_1, 1}}, + {2584, {wxAuiPaneInfo, floatingPosition_2, 2}}, + {2585, {wxAuiPaneInfo, floatingSize_1, 1}}, + {2586, {wxAuiPaneInfo, floatingSize_2, 2}}, + {2587, {wxAuiPaneInfo, gripper, 1}}, + {2588, {wxAuiPaneInfo, gripperTop, 1}}, + {2589, {wxAuiPaneInfo, hasBorder, 0}}, + {2590, {wxAuiPaneInfo, hasCaption, 0}}, + {2591, {wxAuiPaneInfo, hasCloseButton, 0}}, + {2592, {wxAuiPaneInfo, hasFlag, 1}}, + {2593, {wxAuiPaneInfo, hasGripper, 0}}, + {2594, {wxAuiPaneInfo, hasGripperTop, 0}}, + {2595, {wxAuiPaneInfo, hasMaximizeButton, 0}}, + {2596, {wxAuiPaneInfo, hasMinimizeButton, 0}}, + {2597, {wxAuiPaneInfo, hasPinButton, 0}}, + {2598, {wxAuiPaneInfo, hide, 0}}, + {2599, {wxAuiPaneInfo, isBottomDockable, 0}}, + {2600, {wxAuiPaneInfo, isDocked, 0}}, + {2601, {wxAuiPaneInfo, isFixed, 0}}, + {2602, {wxAuiPaneInfo, isFloatable, 0}}, + {2603, {wxAuiPaneInfo, isFloating, 0}}, + {2604, {wxAuiPaneInfo, isLeftDockable, 0}}, + {2605, {wxAuiPaneInfo, isMovable, 0}}, + {2606, {wxAuiPaneInfo, isOk, 0}}, + {2607, {wxAuiPaneInfo, isResizable, 0}}, + {2608, {wxAuiPaneInfo, isRightDockable, 0}}, + {2609, {wxAuiPaneInfo, isShown, 0}}, + {2610, {wxAuiPaneInfo, isToolbar, 0}}, + {2611, {wxAuiPaneInfo, isTopDockable, 0}}, + {2612, {wxAuiPaneInfo, layer, 1}}, + {2613, {wxAuiPaneInfo, left, 0}}, + {2614, {wxAuiPaneInfo, leftDockable, 1}}, + {2615, {wxAuiPaneInfo, maxSize_1, 1}}, + {2616, {wxAuiPaneInfo, maxSize_2, 2}}, + {2617, {wxAuiPaneInfo, maximizeButton, 1}}, + {2618, {wxAuiPaneInfo, minSize_1, 1}}, + {2619, {wxAuiPaneInfo, minSize_2, 2}}, + {2620, {wxAuiPaneInfo, minimizeButton, 1}}, + {2621, {wxAuiPaneInfo, movable, 1}}, + {2622, {wxAuiPaneInfo, name, 1}}, + {2623, {wxAuiPaneInfo, paneBorder, 1}}, + {2624, {wxAuiPaneInfo, pinButton, 1}}, + {2625, {wxAuiPaneInfo, position, 1}}, + {2626, {wxAuiPaneInfo, resizable, 1}}, + {2627, {wxAuiPaneInfo, right, 0}}, + {2628, {wxAuiPaneInfo, rightDockable, 1}}, + {2629, {wxAuiPaneInfo, row, 1}}, + {2630, {wxAuiPaneInfo, safeSet, 1}}, + {2631, {wxAuiPaneInfo, setFlag, 2}}, + {2632, {wxAuiPaneInfo, show, 1}}, + {2633, {wxAuiPaneInfo, toolbarPane, 0}}, + {2634, {wxAuiPaneInfo, top, 0}}, + {2635, {wxAuiPaneInfo, topDockable, 1}}, + {2636, {wxAuiPaneInfo, window, 1}}, + {2637, {wxAuiNotebook, new_0, 0}}, + {2638, {wxAuiNotebook, new_2, 2}}, + {2639, {wxAuiNotebook, addPage, 3}}, + {2640, {wxAuiNotebook, create, 2}}, + {2641, {wxAuiNotebook, deletePage, 1}}, + {2642, {wxAuiNotebook, getArtProvider, 0}}, + {2643, {wxAuiNotebook, getPage, 1}}, + {2644, {wxAuiNotebook, getPageBitmap, 1}}, + {2645, {wxAuiNotebook, getPageCount, 0}}, + {2646, {wxAuiNotebook, getPageIndex, 1}}, + {2647, {wxAuiNotebook, getPageText, 1}}, + {2648, {wxAuiNotebook, getSelection, 0}}, + {2649, {wxAuiNotebook, insertPage, 4}}, + {2650, {wxAuiNotebook, removePage, 1}}, + {2651, {wxAuiNotebook, setArtProvider, 1}}, + {2652, {wxAuiNotebook, setFont, 1}}, + {2653, {wxAuiNotebook, setPageBitmap, 2}}, + {2654, {wxAuiNotebook, setPageText, 2}}, + {2655, {wxAuiNotebook, setSelection, 1}}, + {2656, {wxAuiNotebook, setTabCtrlHeight, 1}}, + {2657, {wxAuiNotebook, setUniformBitmapSize, 1}}, + {2658, {wxAuiNotebook, 'Destroy', undefined}}, + {2659, {wxMDIParentFrame, new_0, 0}}, + {2660, {wxMDIParentFrame, new_4, 4}}, + {2661, {wxMDIParentFrame, destruct, 0}}, + {2662, {wxMDIParentFrame, activateNext, 0}}, + {2663, {wxMDIParentFrame, activatePrevious, 0}}, + {2664, {wxMDIParentFrame, arrangeIcons, 0}}, + {2665, {wxMDIParentFrame, cascade, 0}}, + {2666, {wxMDIParentFrame, create, 4}}, + {2667, {wxMDIParentFrame, getActiveChild, 0}}, + {2668, {wxMDIParentFrame, getClientWindow, 0}}, + {2669, {wxMDIParentFrame, tile, 1}}, + {2670, {wxMDIChildFrame, new_0, 0}}, + {2671, {wxMDIChildFrame, new_4, 4}}, + {2672, {wxMDIChildFrame, destruct, 0}}, + {2673, {wxMDIChildFrame, activate, 0}}, + {2674, {wxMDIChildFrame, create, 4}}, + {2675, {wxMDIChildFrame, maximize, 1}}, + {2676, {wxMDIChildFrame, restore, 0}}, + {2677, {wxMDIClientWindow, new_0, 0}}, + {2678, {wxMDIClientWindow, new_2, 2}}, + {2679, {wxMDIClientWindow, destruct, 0}}, + {2680, {wxMDIClientWindow, createClient, 2}}, + {2681, {wxLayoutAlgorithm, new, 0}}, + {2682, {wxLayoutAlgorithm, layoutFrame, 2}}, + {2683, {wxLayoutAlgorithm, layoutMDIFrame, 2}}, + {2684, {wxLayoutAlgorithm, layoutWindow, 2}}, + {2685, {wxLayoutAlgorithm, 'Destroy', undefined}}, + {2686, {wxEvent, getId, 0}}, + {2687, {wxEvent, getSkipped, 0}}, + {2688, {wxEvent, getTimestamp, 0}}, + {2689, {wxEvent, isCommandEvent, 0}}, + {2690, {wxEvent, resumePropagation, 1}}, + {2691, {wxEvent, shouldPropagate, 0}}, + {2692, {wxEvent, skip, 1}}, + {2693, {wxEvent, stopPropagation, 0}}, + {2694, {wxCommandEvent, getClientData, 0}}, + {2695, {wxCommandEvent, getExtraLong, 0}}, + {2696, {wxCommandEvent, getInt, 0}}, + {2697, {wxCommandEvent, getSelection, 0}}, + {2698, {wxCommandEvent, getString, 0}}, + {2699, {wxCommandEvent, isChecked, 0}}, + {2700, {wxCommandEvent, isSelection, 0}}, + {2701, {wxCommandEvent, setInt, 1}}, + {2702, {wxCommandEvent, setString, 1}}, + {2703, {wxScrollEvent, getOrientation, 0}}, + {2704, {wxScrollEvent, getPosition, 0}}, + {2705, {wxScrollWinEvent, getOrientation, 0}}, + {2706, {wxScrollWinEvent, getPosition, 0}}, + {2707, {wxMouseEvent, altDown, 0}}, + {2708, {wxMouseEvent, button, 1}}, + {2709, {wxMouseEvent, buttonDClick, 1}}, + {2710, {wxMouseEvent, buttonDown, 1}}, + {2711, {wxMouseEvent, buttonUp, 1}}, + {2712, {wxMouseEvent, cmdDown, 0}}, + {2713, {wxMouseEvent, controlDown, 0}}, + {2714, {wxMouseEvent, dragging, 0}}, + {2715, {wxMouseEvent, entering, 0}}, + {2716, {wxMouseEvent, getButton, 0}}, + {2719, {wxMouseEvent, getPosition, 0}}, + {2720, {wxMouseEvent, getLogicalPosition, 1}}, + {2721, {wxMouseEvent, getLinesPerAction, 0}}, + {2722, {wxMouseEvent, getWheelRotation, 0}}, + {2723, {wxMouseEvent, getWheelDelta, 0}}, + {2724, {wxMouseEvent, getX, 0}}, + {2725, {wxMouseEvent, getY, 0}}, + {2726, {wxMouseEvent, isButton, 0}}, + {2727, {wxMouseEvent, isPageScroll, 0}}, + {2728, {wxMouseEvent, leaving, 0}}, + {2729, {wxMouseEvent, leftDClick, 0}}, + {2730, {wxMouseEvent, leftDown, 0}}, + {2731, {wxMouseEvent, leftIsDown, 0}}, + {2732, {wxMouseEvent, leftUp, 0}}, + {2733, {wxMouseEvent, metaDown, 0}}, + {2734, {wxMouseEvent, middleDClick, 0}}, + {2735, {wxMouseEvent, middleDown, 0}}, + {2736, {wxMouseEvent, middleIsDown, 0}}, + {2737, {wxMouseEvent, middleUp, 0}}, + {2738, {wxMouseEvent, moving, 0}}, + {2739, {wxMouseEvent, rightDClick, 0}}, + {2740, {wxMouseEvent, rightDown, 0}}, + {2741, {wxMouseEvent, rightIsDown, 0}}, + {2742, {wxMouseEvent, rightUp, 0}}, + {2743, {wxMouseEvent, shiftDown, 0}}, + {2744, {wxSetCursorEvent, getCursor, 0}}, + {2745, {wxSetCursorEvent, getX, 0}}, + {2746, {wxSetCursorEvent, getY, 0}}, + {2747, {wxSetCursorEvent, hasCursor, 0}}, + {2748, {wxSetCursorEvent, setCursor, 1}}, + {2749, {wxKeyEvent, altDown, 0}}, + {2750, {wxKeyEvent, cmdDown, 0}}, + {2751, {wxKeyEvent, controlDown, 0}}, + {2752, {wxKeyEvent, getKeyCode, 0}}, + {2753, {wxKeyEvent, getModifiers, 0}}, + {2756, {wxKeyEvent, getPosition, 0}}, + {2757, {wxKeyEvent, getRawKeyCode, 0}}, + {2758, {wxKeyEvent, getRawKeyFlags, 0}}, + {2759, {wxKeyEvent, getUnicodeKey, 0}}, + {2760, {wxKeyEvent, getX, 0}}, + {2761, {wxKeyEvent, getY, 0}}, + {2762, {wxKeyEvent, hasModifiers, 0}}, + {2763, {wxKeyEvent, metaDown, 0}}, + {2764, {wxKeyEvent, shiftDown, 0}}, + {2765, {wxSizeEvent, getSize, 0}}, + {2766, {wxMoveEvent, getPosition, 0}}, + {2767, {wxEraseEvent, getDC, 0}}, + {2768, {wxFocusEvent, getWindow, 0}}, + {2769, {wxChildFocusEvent, getWindow, 0}}, + {2770, {wxMenuEvent, getMenu, 0}}, + {2771, {wxMenuEvent, getMenuId, 0}}, + {2772, {wxMenuEvent, isPopup, 0}}, + {2773, {wxCloseEvent, canVeto, 0}}, + {2774, {wxCloseEvent, getLoggingOff, 0}}, + {2775, {wxCloseEvent, setCanVeto, 1}}, + {2776, {wxCloseEvent, setLoggingOff, 1}}, + {2777, {wxCloseEvent, veto, 1}}, + {2778, {wxShowEvent, setShow, 1}}, + {2779, {wxShowEvent, getShow, 0}}, + {2780, {wxIconizeEvent, iconized, 0}}, + {2781, {wxJoystickEvent, buttonDown, 1}}, + {2782, {wxJoystickEvent, buttonIsDown, 1}}, + {2783, {wxJoystickEvent, buttonUp, 1}}, + {2784, {wxJoystickEvent, getButtonChange, 0}}, + {2785, {wxJoystickEvent, getButtonState, 0}}, + {2786, {wxJoystickEvent, getJoystick, 0}}, + {2787, {wxJoystickEvent, getPosition, 0}}, + {2788, {wxJoystickEvent, getZPosition, 0}}, + {2789, {wxJoystickEvent, isButton, 0}}, + {2790, {wxJoystickEvent, isMove, 0}}, + {2791, {wxJoystickEvent, isZMove, 0}}, + {2792, {wxUpdateUIEvent, canUpdate, 1}}, + {2793, {wxUpdateUIEvent, check, 1}}, + {2794, {wxUpdateUIEvent, enable, 1}}, + {2795, {wxUpdateUIEvent, show, 1}}, + {2796, {wxUpdateUIEvent, getChecked, 0}}, + {2797, {wxUpdateUIEvent, getEnabled, 0}}, + {2798, {wxUpdateUIEvent, getShown, 0}}, + {2799, {wxUpdateUIEvent, getSetChecked, 0}}, + {2800, {wxUpdateUIEvent, getSetEnabled, 0}}, + {2801, {wxUpdateUIEvent, getSetShown, 0}}, + {2802, {wxUpdateUIEvent, getSetText, 0}}, + {2803, {wxUpdateUIEvent, getText, 0}}, + {2804, {wxUpdateUIEvent, getMode, 0}}, + {2805, {wxUpdateUIEvent, getUpdateInterval, 0}}, + {2806, {wxUpdateUIEvent, resetUpdateTime, 0}}, + {2807, {wxUpdateUIEvent, setMode, 1}}, + {2808, {wxUpdateUIEvent, setText, 1}}, + {2809, {wxUpdateUIEvent, setUpdateInterval, 1}}, + {2810, {wxMouseCaptureChangedEvent, getCapturedWindow, 0}}, + {2811, {wxPaletteChangedEvent, setChangedWindow, 1}}, + {2812, {wxPaletteChangedEvent, getChangedWindow, 0}}, + {2813, {wxQueryNewPaletteEvent, setPaletteRealized, 1}}, + {2814, {wxQueryNewPaletteEvent, getPaletteRealized, 0}}, + {2815, {wxNavigationKeyEvent, getDirection, 0}}, + {2816, {wxNavigationKeyEvent, setDirection, 1}}, + {2817, {wxNavigationKeyEvent, isWindowChange, 0}}, + {2818, {wxNavigationKeyEvent, setWindowChange, 1}}, + {2819, {wxNavigationKeyEvent, isFromTab, 0}}, + {2820, {wxNavigationKeyEvent, setFromTab, 1}}, + {2821, {wxNavigationKeyEvent, getCurrentFocus, 0}}, + {2822, {wxNavigationKeyEvent, setCurrentFocus, 1}}, + {2823, {wxHelpEvent, getOrigin, 0}}, + {2824, {wxHelpEvent, getPosition, 0}}, + {2825, {wxHelpEvent, setOrigin, 1}}, + {2826, {wxHelpEvent, setPosition, 1}}, + {2827, {wxContextMenuEvent, getPosition, 0}}, + {2828, {wxContextMenuEvent, setPosition, 1}}, + {2829, {wxIdleEvent, canSend, 1}}, + {2830, {wxIdleEvent, getMode, 0}}, + {2831, {wxIdleEvent, requestMore, 1}}, + {2832, {wxIdleEvent, moreRequested, 0}}, + {2833, {wxIdleEvent, setMode, 1}}, + {2834, {wxGridEvent, altDown, 0}}, + {2835, {wxGridEvent, controlDown, 0}}, + {2836, {wxGridEvent, getCol, 0}}, + {2837, {wxGridEvent, getPosition, 0}}, + {2838, {wxGridEvent, getRow, 0}}, + {2839, {wxGridEvent, metaDown, 0}}, + {2840, {wxGridEvent, selecting, 0}}, + {2841, {wxGridEvent, shiftDown, 0}}, + {2842, {wxNotifyEvent, allow, 0}}, + {2843, {wxNotifyEvent, isAllowed, 0}}, + {2844, {wxNotifyEvent, veto, 0}}, + {2845, {wxSashEvent, getEdge, 0}}, + {2846, {wxSashEvent, getDragRect, 0}}, + {2847, {wxSashEvent, getDragStatus, 0}}, + {2848, {wxListEvent, getCacheFrom, 0}}, + {2849, {wxListEvent, getCacheTo, 0}}, + {2850, {wxListEvent, getKeyCode, 0}}, + {2851, {wxListEvent, getIndex, 0}}, + {2852, {wxListEvent, getColumn, 0}}, + {2853, {wxListEvent, getPoint, 0}}, + {2854, {wxListEvent, getLabel, 0}}, + {2855, {wxListEvent, getText, 0}}, + {2856, {wxListEvent, getImage, 0}}, + {2857, {wxListEvent, getData, 0}}, + {2858, {wxListEvent, getMask, 0}}, + {2859, {wxListEvent, getItem, 0}}, + {2860, {wxListEvent, isEditCancelled, 0}}, + {2861, {wxDateEvent, getDate, 0}}, + {2862, {wxCalendarEvent, getWeekDay, 0}}, + {2863, {wxFileDirPickerEvent, getPath, 0}}, + {2864, {wxColourPickerEvent, getColour, 0}}, + {2865, {wxFontPickerEvent, getFont, 0}}, + {2866, {wxStyledTextEvent, getPosition, 0}}, + {2867, {wxStyledTextEvent, getKey, 0}}, + {2868, {wxStyledTextEvent, getModifiers, 0}}, + {2869, {wxStyledTextEvent, getModificationType, 0}}, + {2870, {wxStyledTextEvent, getText, 0}}, + {2871, {wxStyledTextEvent, getLength, 0}}, + {2872, {wxStyledTextEvent, getLinesAdded, 0}}, + {2873, {wxStyledTextEvent, getLine, 0}}, + {2874, {wxStyledTextEvent, getFoldLevelNow, 0}}, + {2875, {wxStyledTextEvent, getFoldLevelPrev, 0}}, + {2876, {wxStyledTextEvent, getMargin, 0}}, + {2877, {wxStyledTextEvent, getMessage, 0}}, + {2878, {wxStyledTextEvent, getWParam, 0}}, + {2879, {wxStyledTextEvent, getLParam, 0}}, + {2880, {wxStyledTextEvent, getListType, 0}}, + {2881, {wxStyledTextEvent, getX, 0}}, + {2882, {wxStyledTextEvent, getY, 0}}, + {2883, {wxStyledTextEvent, getDragText, 0}}, + {2884, {wxStyledTextEvent, getDragAllowMove, 0}}, + {2885, {wxStyledTextEvent, getDragResult, 0}}, + {2886, {wxStyledTextEvent, getShift, 0}}, + {2887, {wxStyledTextEvent, getControl, 0}}, + {2888, {wxStyledTextEvent, getAlt, 0}}, + {2889, {utils, getKeyState, 1}}, + {2890, {utils, getMousePosition, 2}}, + {2891, {utils, getMouseState, 0}}, + {2892, {utils, setDetectableAutoRepeat, 1}}, + {2893, {utils, bell, 0}}, + {2894, {utils, findMenuItemId, 3}}, + {2895, {utils, genericFindWindowAtPoint, 1}}, + {2896, {utils, findWindowAtPoint, 1}}, + {2897, {utils, beginBusyCursor, 1}}, + {2898, {utils, endBusyCursor, 0}}, + {2899, {utils, isBusy, 0}}, + {2900, {utils, shutdown, 1}}, + {2901, {utils, shell, 1}}, + {2902, {utils, launchDefaultBrowser, 2}}, + {2903, {utils, getEmailAddress, 0}}, + {2904, {utils, getUserId, 0}}, + {2905, {utils, getHomeDir, 0}}, + {2906, {utils, newId, 0}}, + {2907, {utils, registerId, 1}}, + {2908, {utils, getCurrentId, 0}}, + {2909, {utils, getOsDescription, 0}}, + {2910, {utils, isPlatformLittleEndian, 0}}, + {2911, {utils, isPlatform64Bit, 0}}, + {2912, {wxPrintout, new, 1}}, + {2913, {wxPrintout, destruct, 0}}, + {2914, {wxPrintout, getDC, 0}}, + {2915, {wxPrintout, getPageSizeMM, 2}}, + {2916, {wxPrintout, getPageSizePixels, 2}}, + {2917, {wxPrintout, getPaperRectPixels, 0}}, + {2918, {wxPrintout, getPPIPrinter, 2}}, + {2919, {wxPrintout, getPPIScreen, 2}}, + {2920, {wxPrintout, getTitle, 0}}, + {2921, {wxPrintout, isPreview, 0}}, + {2922, {wxPrintout, fitThisSizeToPaper, 1}}, + {2923, {wxPrintout, fitThisSizeToPage, 1}}, + {2924, {wxPrintout, fitThisSizeToPageMargins, 2}}, + {2925, {wxPrintout, mapScreenSizeToPaper, 0}}, + {2926, {wxPrintout, mapScreenSizeToPage, 0}}, + {2927, {wxPrintout, mapScreenSizeToPageMargins, 1}}, + {2928, {wxPrintout, mapScreenSizeToDevice, 0}}, + {2929, {wxPrintout, getLogicalPaperRect, 0}}, + {2930, {wxPrintout, getLogicalPageRect, 0}}, + {2931, {wxPrintout, getLogicalPageMarginsRect, 1}}, + {2932, {wxPrintout, setLogicalOrigin, 2}}, + {2933, {wxPrintout, offsetLogicalOrigin, 2}}, + {2934, {wxStyledTextCtrl, new_2, 2}}, + {2935, {wxStyledTextCtrl, new_0, 0}}, + {2936, {wxStyledTextCtrl, destruct, 0}}, + {2937, {wxStyledTextCtrl, create, 2}}, + {2938, {wxStyledTextCtrl, addText, 1}}, + {2939, {wxStyledTextCtrl, addStyledText, 1}}, + {2940, {wxStyledTextCtrl, insertText, 2}}, + {2941, {wxStyledTextCtrl, clearAll, 0}}, + {2942, {wxStyledTextCtrl, clearDocumentStyle, 0}}, + {2943, {wxStyledTextCtrl, getLength, 0}}, + {2944, {wxStyledTextCtrl, getCharAt, 1}}, + {2945, {wxStyledTextCtrl, getCurrentPos, 0}}, + {2946, {wxStyledTextCtrl, getAnchor, 0}}, + {2947, {wxStyledTextCtrl, getStyleAt, 1}}, + {2948, {wxStyledTextCtrl, redo, 0}}, + {2949, {wxStyledTextCtrl, setUndoCollection, 1}}, + {2950, {wxStyledTextCtrl, selectAll, 0}}, + {2951, {wxStyledTextCtrl, setSavePoint, 0}}, + {2952, {wxStyledTextCtrl, getStyledText, 2}}, + {2953, {wxStyledTextCtrl, canRedo, 0}}, + {2954, {wxStyledTextCtrl, markerLineFromHandle, 1}}, + {2955, {wxStyledTextCtrl, markerDeleteHandle, 1}}, + {2956, {wxStyledTextCtrl, getUndoCollection, 0}}, + {2957, {wxStyledTextCtrl, getViewWhiteSpace, 0}}, + {2958, {wxStyledTextCtrl, setViewWhiteSpace, 1}}, + {2959, {wxStyledTextCtrl, positionFromPoint, 1}}, + {2960, {wxStyledTextCtrl, positionFromPointClose, 2}}, + {2961, {wxStyledTextCtrl, gotoLine, 1}}, + {2962, {wxStyledTextCtrl, gotoPos, 1}}, + {2963, {wxStyledTextCtrl, setAnchor, 1}}, + {2964, {wxStyledTextCtrl, getCurLine, 1}}, + {2965, {wxStyledTextCtrl, getEndStyled, 0}}, + {2966, {wxStyledTextCtrl, convertEOLs, 1}}, + {2967, {wxStyledTextCtrl, getEOLMode, 0}}, + {2968, {wxStyledTextCtrl, setEOLMode, 1}}, + {2969, {wxStyledTextCtrl, startStyling, 2}}, + {2970, {wxStyledTextCtrl, setStyling, 2}}, + {2971, {wxStyledTextCtrl, getBufferedDraw, 0}}, + {2972, {wxStyledTextCtrl, setBufferedDraw, 1}}, + {2973, {wxStyledTextCtrl, setTabWidth, 1}}, + {2974, {wxStyledTextCtrl, getTabWidth, 0}}, + {2975, {wxStyledTextCtrl, setCodePage, 1}}, + {2976, {wxStyledTextCtrl, markerDefine, 3}}, + {2977, {wxStyledTextCtrl, markerSetForeground, 2}}, + {2978, {wxStyledTextCtrl, markerSetBackground, 2}}, + {2979, {wxStyledTextCtrl, markerAdd, 2}}, + {2980, {wxStyledTextCtrl, markerDelete, 2}}, + {2981, {wxStyledTextCtrl, markerDeleteAll, 1}}, + {2982, {wxStyledTextCtrl, markerGet, 1}}, + {2983, {wxStyledTextCtrl, markerNext, 2}}, + {2984, {wxStyledTextCtrl, markerPrevious, 2}}, + {2985, {wxStyledTextCtrl, markerDefineBitmap, 2}}, + {2986, {wxStyledTextCtrl, markerAddSet, 2}}, + {2987, {wxStyledTextCtrl, markerSetAlpha, 2}}, + {2988, {wxStyledTextCtrl, setMarginType, 2}}, + {2989, {wxStyledTextCtrl, getMarginType, 1}}, + {2990, {wxStyledTextCtrl, setMarginWidth, 2}}, + {2991, {wxStyledTextCtrl, getMarginWidth, 1}}, + {2992, {wxStyledTextCtrl, setMarginMask, 2}}, + {2993, {wxStyledTextCtrl, getMarginMask, 1}}, + {2994, {wxStyledTextCtrl, setMarginSensitive, 2}}, + {2995, {wxStyledTextCtrl, getMarginSensitive, 1}}, + {2996, {wxStyledTextCtrl, styleClearAll, 0}}, + {2997, {wxStyledTextCtrl, styleSetForeground, 2}}, + {2998, {wxStyledTextCtrl, styleSetBackground, 2}}, + {2999, {wxStyledTextCtrl, styleSetBold, 2}}, + {3000, {wxStyledTextCtrl, styleSetItalic, 2}}, + {3001, {wxStyledTextCtrl, styleSetSize, 2}}, + {3002, {wxStyledTextCtrl, styleSetFaceName, 2}}, + {3003, {wxStyledTextCtrl, styleSetEOLFilled, 2}}, + {3004, {wxStyledTextCtrl, styleResetDefault, 0}}, + {3005, {wxStyledTextCtrl, styleSetUnderline, 2}}, + {3006, {wxStyledTextCtrl, styleSetCase, 2}}, + {3007, {wxStyledTextCtrl, styleSetHotSpot, 2}}, + {3008, {wxStyledTextCtrl, setSelForeground, 2}}, + {3009, {wxStyledTextCtrl, setSelBackground, 2}}, + {3010, {wxStyledTextCtrl, getSelAlpha, 0}}, + {3011, {wxStyledTextCtrl, setSelAlpha, 1}}, + {3012, {wxStyledTextCtrl, setCaretForeground, 1}}, + {3013, {wxStyledTextCtrl, cmdKeyAssign, 3}}, + {3014, {wxStyledTextCtrl, cmdKeyClear, 2}}, + {3015, {wxStyledTextCtrl, cmdKeyClearAll, 0}}, + {3016, {wxStyledTextCtrl, setStyleBytes, 2}}, + {3017, {wxStyledTextCtrl, styleSetVisible, 2}}, + {3018, {wxStyledTextCtrl, getCaretPeriod, 0}}, + {3019, {wxStyledTextCtrl, setCaretPeriod, 1}}, + {3020, {wxStyledTextCtrl, setWordChars, 1}}, + {3021, {wxStyledTextCtrl, beginUndoAction, 0}}, + {3022, {wxStyledTextCtrl, endUndoAction, 0}}, + {3023, {wxStyledTextCtrl, indicatorSetStyle, 2}}, + {3024, {wxStyledTextCtrl, indicatorGetStyle, 1}}, + {3025, {wxStyledTextCtrl, indicatorSetForeground, 2}}, + {3026, {wxStyledTextCtrl, indicatorGetForeground, 1}}, + {3027, {wxStyledTextCtrl, setWhitespaceForeground, 2}}, + {3028, {wxStyledTextCtrl, setWhitespaceBackground, 2}}, + {3029, {wxStyledTextCtrl, getStyleBits, 0}}, + {3030, {wxStyledTextCtrl, setLineState, 2}}, + {3031, {wxStyledTextCtrl, getLineState, 1}}, + {3032, {wxStyledTextCtrl, getMaxLineState, 0}}, + {3033, {wxStyledTextCtrl, getCaretLineVisible, 0}}, + {3034, {wxStyledTextCtrl, setCaretLineVisible, 1}}, + {3035, {wxStyledTextCtrl, getCaretLineBackground, 0}}, + {3036, {wxStyledTextCtrl, setCaretLineBackground, 1}}, + {3037, {wxStyledTextCtrl, autoCompShow, 2}}, + {3038, {wxStyledTextCtrl, autoCompCancel, 0}}, + {3039, {wxStyledTextCtrl, autoCompActive, 0}}, + {3040, {wxStyledTextCtrl, autoCompPosStart, 0}}, + {3041, {wxStyledTextCtrl, autoCompComplete, 0}}, + {3042, {wxStyledTextCtrl, autoCompStops, 1}}, + {3043, {wxStyledTextCtrl, autoCompSetSeparator, 1}}, + {3044, {wxStyledTextCtrl, autoCompGetSeparator, 0}}, + {3045, {wxStyledTextCtrl, autoCompSelect, 1}}, + {3046, {wxStyledTextCtrl, autoCompSetCancelAtStart, 1}}, + {3047, {wxStyledTextCtrl, autoCompGetCancelAtStart, 0}}, + {3048, {wxStyledTextCtrl, autoCompSetFillUps, 1}}, + {3049, {wxStyledTextCtrl, autoCompSetChooseSingle, 1}}, + {3050, {wxStyledTextCtrl, autoCompGetChooseSingle, 0}}, + {3051, {wxStyledTextCtrl, autoCompSetIgnoreCase, 1}}, + {3052, {wxStyledTextCtrl, autoCompGetIgnoreCase, 0}}, + {3053, {wxStyledTextCtrl, userListShow, 2}}, + {3054, {wxStyledTextCtrl, autoCompSetAutoHide, 1}}, + {3055, {wxStyledTextCtrl, autoCompGetAutoHide, 0}}, + {3056, {wxStyledTextCtrl, autoCompSetDropRestOfWord, 1}}, + {3057, {wxStyledTextCtrl, autoCompGetDropRestOfWord, 0}}, + {3058, {wxStyledTextCtrl, registerImage, 2}}, + {3059, {wxStyledTextCtrl, clearRegisteredImages, 0}}, + {3060, {wxStyledTextCtrl, autoCompGetTypeSeparator, 0}}, + {3061, {wxStyledTextCtrl, autoCompSetTypeSeparator, 1}}, + {3062, {wxStyledTextCtrl, autoCompSetMaxWidth, 1}}, + {3063, {wxStyledTextCtrl, autoCompGetMaxWidth, 0}}, + {3064, {wxStyledTextCtrl, autoCompSetMaxHeight, 1}}, + {3065, {wxStyledTextCtrl, autoCompGetMaxHeight, 0}}, + {3066, {wxStyledTextCtrl, setIndent, 1}}, + {3067, {wxStyledTextCtrl, getIndent, 0}}, + {3068, {wxStyledTextCtrl, setUseTabs, 1}}, + {3069, {wxStyledTextCtrl, getUseTabs, 0}}, + {3070, {wxStyledTextCtrl, setLineIndentation, 2}}, + {3071, {wxStyledTextCtrl, getLineIndentation, 1}}, + {3072, {wxStyledTextCtrl, getLineIndentPosition, 1}}, + {3073, {wxStyledTextCtrl, getColumn, 1}}, + {3074, {wxStyledTextCtrl, setUseHorizontalScrollBar, 1}}, + {3075, {wxStyledTextCtrl, getUseHorizontalScrollBar, 0}}, + {3076, {wxStyledTextCtrl, setIndentationGuides, 1}}, + {3077, {wxStyledTextCtrl, getIndentationGuides, 0}}, + {3078, {wxStyledTextCtrl, setHighlightGuide, 1}}, + {3079, {wxStyledTextCtrl, getHighlightGuide, 0}}, + {3080, {wxStyledTextCtrl, getLineEndPosition, 1}}, + {3081, {wxStyledTextCtrl, getCodePage, 0}}, + {3082, {wxStyledTextCtrl, getCaretForeground, 0}}, + {3083, {wxStyledTextCtrl, getReadOnly, 0}}, + {3084, {wxStyledTextCtrl, setCurrentPos, 1}}, + {3085, {wxStyledTextCtrl, setSelectionStart, 1}}, + {3086, {wxStyledTextCtrl, getSelectionStart, 0}}, + {3087, {wxStyledTextCtrl, setSelectionEnd, 1}}, + {3088, {wxStyledTextCtrl, getSelectionEnd, 0}}, + {3089, {wxStyledTextCtrl, setPrintMagnification, 1}}, + {3090, {wxStyledTextCtrl, getPrintMagnification, 0}}, + {3091, {wxStyledTextCtrl, setPrintColourMode, 1}}, + {3092, {wxStyledTextCtrl, getPrintColourMode, 0}}, + {3093, {wxStyledTextCtrl, findText, 4}}, + {3094, {wxStyledTextCtrl, formatRange, 7}}, + {3095, {wxStyledTextCtrl, getFirstVisibleLine, 0}}, + {3096, {wxStyledTextCtrl, getLine, 1}}, + {3097, {wxStyledTextCtrl, getLineCount, 0}}, + {3098, {wxStyledTextCtrl, setMarginLeft, 1}}, + {3099, {wxStyledTextCtrl, getMarginLeft, 0}}, + {3100, {wxStyledTextCtrl, setMarginRight, 1}}, + {3101, {wxStyledTextCtrl, getMarginRight, 0}}, + {3102, {wxStyledTextCtrl, getModify, 0}}, + {3103, {wxStyledTextCtrl, setSelection, 2}}, + {3104, {wxStyledTextCtrl, getSelectedText, 0}}, + {3105, {wxStyledTextCtrl, getTextRange, 2}}, + {3106, {wxStyledTextCtrl, hideSelection, 1}}, + {3107, {wxStyledTextCtrl, lineFromPosition, 1}}, + {3108, {wxStyledTextCtrl, positionFromLine, 1}}, + {3109, {wxStyledTextCtrl, lineScroll, 2}}, + {3110, {wxStyledTextCtrl, ensureCaretVisible, 0}}, + {3111, {wxStyledTextCtrl, replaceSelection, 1}}, + {3112, {wxStyledTextCtrl, setReadOnly, 1}}, + {3113, {wxStyledTextCtrl, canPaste, 0}}, + {3114, {wxStyledTextCtrl, canUndo, 0}}, + {3115, {wxStyledTextCtrl, emptyUndoBuffer, 0}}, + {3116, {wxStyledTextCtrl, undo, 0}}, + {3117, {wxStyledTextCtrl, cut, 0}}, + {3118, {wxStyledTextCtrl, copy, 0}}, + {3119, {wxStyledTextCtrl, paste, 0}}, + {3120, {wxStyledTextCtrl, clear, 0}}, + {3121, {wxStyledTextCtrl, setText, 1}}, + {3122, {wxStyledTextCtrl, getText, 0}}, + {3123, {wxStyledTextCtrl, getTextLength, 0}}, + {3124, {wxStyledTextCtrl, getOvertype, 0}}, + {3125, {wxStyledTextCtrl, setCaretWidth, 1}}, + {3126, {wxStyledTextCtrl, getCaretWidth, 0}}, + {3127, {wxStyledTextCtrl, setTargetStart, 1}}, + {3128, {wxStyledTextCtrl, getTargetStart, 0}}, + {3129, {wxStyledTextCtrl, setTargetEnd, 1}}, + {3130, {wxStyledTextCtrl, getTargetEnd, 0}}, + {3131, {wxStyledTextCtrl, replaceTarget, 1}}, + {3132, {wxStyledTextCtrl, searchInTarget, 1}}, + {3133, {wxStyledTextCtrl, setSearchFlags, 1}}, + {3134, {wxStyledTextCtrl, getSearchFlags, 0}}, + {3135, {wxStyledTextCtrl, callTipShow, 2}}, + {3136, {wxStyledTextCtrl, callTipCancel, 0}}, + {3137, {wxStyledTextCtrl, callTipActive, 0}}, + {3138, {wxStyledTextCtrl, callTipPosAtStart, 0}}, + {3139, {wxStyledTextCtrl, callTipSetHighlight, 2}}, + {3140, {wxStyledTextCtrl, callTipSetBackground, 1}}, + {3141, {wxStyledTextCtrl, callTipSetForeground, 1}}, + {3142, {wxStyledTextCtrl, callTipSetForegroundHighlight, 1}}, + {3143, {wxStyledTextCtrl, callTipUseStyle, 1}}, + {3144, {wxStyledTextCtrl, visibleFromDocLine, 1}}, + {3145, {wxStyledTextCtrl, docLineFromVisible, 1}}, + {3146, {wxStyledTextCtrl, wrapCount, 1}}, + {3147, {wxStyledTextCtrl, setFoldLevel, 2}}, + {3148, {wxStyledTextCtrl, getFoldLevel, 1}}, + {3149, {wxStyledTextCtrl, getLastChild, 2}}, + {3150, {wxStyledTextCtrl, getFoldParent, 1}}, + {3151, {wxStyledTextCtrl, showLines, 2}}, + {3152, {wxStyledTextCtrl, hideLines, 2}}, + {3153, {wxStyledTextCtrl, getLineVisible, 1}}, + {3154, {wxStyledTextCtrl, setFoldExpanded, 2}}, + {3155, {wxStyledTextCtrl, getFoldExpanded, 1}}, + {3156, {wxStyledTextCtrl, toggleFold, 1}}, + {3157, {wxStyledTextCtrl, ensureVisible, 1}}, + {3158, {wxStyledTextCtrl, setFoldFlags, 1}}, + {3159, {wxStyledTextCtrl, ensureVisibleEnforcePolicy, 1}}, + {3160, {wxStyledTextCtrl, setTabIndents, 1}}, + {3161, {wxStyledTextCtrl, getTabIndents, 0}}, + {3162, {wxStyledTextCtrl, setBackSpaceUnIndents, 1}}, + {3163, {wxStyledTextCtrl, getBackSpaceUnIndents, 0}}, + {3164, {wxStyledTextCtrl, setMouseDwellTime, 1}}, + {3165, {wxStyledTextCtrl, getMouseDwellTime, 0}}, + {3166, {wxStyledTextCtrl, wordStartPosition, 2}}, + {3167, {wxStyledTextCtrl, wordEndPosition, 2}}, + {3168, {wxStyledTextCtrl, setWrapMode, 1}}, + {3169, {wxStyledTextCtrl, getWrapMode, 0}}, + {3170, {wxStyledTextCtrl, setWrapVisualFlags, 1}}, + {3171, {wxStyledTextCtrl, getWrapVisualFlags, 0}}, + {3172, {wxStyledTextCtrl, setWrapVisualFlagsLocation, 1}}, + {3173, {wxStyledTextCtrl, getWrapVisualFlagsLocation, 0}}, + {3174, {wxStyledTextCtrl, setWrapStartIndent, 1}}, + {3175, {wxStyledTextCtrl, getWrapStartIndent, 0}}, + {3176, {wxStyledTextCtrl, setLayoutCache, 1}}, + {3177, {wxStyledTextCtrl, getLayoutCache, 0}}, + {3178, {wxStyledTextCtrl, setScrollWidth, 1}}, + {3179, {wxStyledTextCtrl, getScrollWidth, 0}}, + {3180, {wxStyledTextCtrl, textWidth, 2}}, + {3181, {wxStyledTextCtrl, getEndAtLastLine, 0}}, + {3182, {wxStyledTextCtrl, textHeight, 1}}, + {3183, {wxStyledTextCtrl, setUseVerticalScrollBar, 1}}, + {3184, {wxStyledTextCtrl, getUseVerticalScrollBar, 0}}, + {3185, {wxStyledTextCtrl, appendText, 1}}, + {3186, {wxStyledTextCtrl, getTwoPhaseDraw, 0}}, + {3187, {wxStyledTextCtrl, setTwoPhaseDraw, 1}}, + {3188, {wxStyledTextCtrl, targetFromSelection, 0}}, + {3189, {wxStyledTextCtrl, linesJoin, 0}}, + {3190, {wxStyledTextCtrl, linesSplit, 1}}, + {3191, {wxStyledTextCtrl, setFoldMarginColour, 2}}, + {3192, {wxStyledTextCtrl, setFoldMarginHiColour, 2}}, + {3193, {wxStyledTextCtrl, lineDown, 0}}, + {3194, {wxStyledTextCtrl, lineDownExtend, 0}}, + {3195, {wxStyledTextCtrl, lineUp, 0}}, + {3196, {wxStyledTextCtrl, lineUpExtend, 0}}, + {3197, {wxStyledTextCtrl, charLeft, 0}}, + {3198, {wxStyledTextCtrl, charLeftExtend, 0}}, + {3199, {wxStyledTextCtrl, charRight, 0}}, + {3200, {wxStyledTextCtrl, charRightExtend, 0}}, + {3201, {wxStyledTextCtrl, wordLeft, 0}}, + {3202, {wxStyledTextCtrl, wordLeftExtend, 0}}, + {3203, {wxStyledTextCtrl, wordRight, 0}}, + {3204, {wxStyledTextCtrl, wordRightExtend, 0}}, + {3205, {wxStyledTextCtrl, home, 0}}, + {3206, {wxStyledTextCtrl, homeExtend, 0}}, + {3207, {wxStyledTextCtrl, lineEnd, 0}}, + {3208, {wxStyledTextCtrl, lineEndExtend, 0}}, + {3209, {wxStyledTextCtrl, documentStart, 0}}, + {3210, {wxStyledTextCtrl, documentStartExtend, 0}}, + {3211, {wxStyledTextCtrl, documentEnd, 0}}, + {3212, {wxStyledTextCtrl, documentEndExtend, 0}}, + {3213, {wxStyledTextCtrl, pageUp, 0}}, + {3214, {wxStyledTextCtrl, pageUpExtend, 0}}, + {3215, {wxStyledTextCtrl, pageDown, 0}}, + {3216, {wxStyledTextCtrl, pageDownExtend, 0}}, + {3217, {wxStyledTextCtrl, editToggleOvertype, 0}}, + {3218, {wxStyledTextCtrl, cancel, 0}}, + {3219, {wxStyledTextCtrl, deleteBack, 0}}, + {3220, {wxStyledTextCtrl, tab, 0}}, + {3221, {wxStyledTextCtrl, backTab, 0}}, + {3222, {wxStyledTextCtrl, newLine, 0}}, + {3223, {wxStyledTextCtrl, formFeed, 0}}, + {3224, {wxStyledTextCtrl, vCHome, 0}}, + {3225, {wxStyledTextCtrl, vCHomeExtend, 0}}, + {3226, {wxStyledTextCtrl, zoomIn, 0}}, + {3227, {wxStyledTextCtrl, zoomOut, 0}}, + {3228, {wxStyledTextCtrl, delWordLeft, 0}}, + {3229, {wxStyledTextCtrl, delWordRight, 0}}, + {3230, {wxStyledTextCtrl, lineCut, 0}}, + {3231, {wxStyledTextCtrl, lineDelete, 0}}, + {3232, {wxStyledTextCtrl, lineTranspose, 0}}, + {3233, {wxStyledTextCtrl, lineDuplicate, 0}}, + {3234, {wxStyledTextCtrl, lowerCase, 0}}, + {3235, {wxStyledTextCtrl, upperCase, 0}}, + {3236, {wxStyledTextCtrl, lineScrollDown, 0}}, + {3237, {wxStyledTextCtrl, lineScrollUp, 0}}, + {3238, {wxStyledTextCtrl, deleteBackNotLine, 0}}, + {3239, {wxStyledTextCtrl, homeDisplay, 0}}, + {3240, {wxStyledTextCtrl, homeDisplayExtend, 0}}, + {3241, {wxStyledTextCtrl, lineEndDisplay, 0}}, + {3242, {wxStyledTextCtrl, lineEndDisplayExtend, 0}}, + {3243, {wxStyledTextCtrl, homeWrapExtend, 0}}, + {3244, {wxStyledTextCtrl, lineEndWrap, 0}}, + {3245, {wxStyledTextCtrl, lineEndWrapExtend, 0}}, + {3246, {wxStyledTextCtrl, vCHomeWrap, 0}}, + {3247, {wxStyledTextCtrl, vCHomeWrapExtend, 0}}, + {3248, {wxStyledTextCtrl, lineCopy, 0}}, + {3249, {wxStyledTextCtrl, moveCaretInsideView, 0}}, + {3250, {wxStyledTextCtrl, lineLength, 1}}, + {3251, {wxStyledTextCtrl, braceHighlight, 2}}, + {3252, {wxStyledTextCtrl, braceBadLight, 1}}, + {3253, {wxStyledTextCtrl, braceMatch, 1}}, + {3254, {wxStyledTextCtrl, getViewEOL, 0}}, + {3255, {wxStyledTextCtrl, setViewEOL, 1}}, + {3256, {wxStyledTextCtrl, setModEventMask, 1}}, + {3257, {wxStyledTextCtrl, getEdgeColumn, 0}}, + {3258, {wxStyledTextCtrl, setEdgeColumn, 1}}, + {3259, {wxStyledTextCtrl, getEdgeMode, 0}}, + {3260, {wxStyledTextCtrl, getEdgeColour, 0}}, + {3261, {wxStyledTextCtrl, setEdgeColour, 1}}, + {3262, {wxStyledTextCtrl, searchAnchor, 0}}, + {3263, {wxStyledTextCtrl, searchNext, 2}}, + {3264, {wxStyledTextCtrl, searchPrev, 2}}, + {3265, {wxStyledTextCtrl, linesOnScreen, 0}}, + {3266, {wxStyledTextCtrl, usePopUp, 1}}, + {3267, {wxStyledTextCtrl, selectionIsRectangle, 0}}, + {3268, {wxStyledTextCtrl, setZoom, 1}}, + {3269, {wxStyledTextCtrl, getZoom, 0}}, + {3270, {wxStyledTextCtrl, getModEventMask, 0}}, + {3271, {wxStyledTextCtrl, setSTCFocus, 1}}, + {3272, {wxStyledTextCtrl, getSTCFocus, 0}}, + {3273, {wxStyledTextCtrl, setStatus, 1}}, + {3274, {wxStyledTextCtrl, getStatus, 0}}, + {3275, {wxStyledTextCtrl, setMouseDownCaptures, 1}}, + {3276, {wxStyledTextCtrl, getMouseDownCaptures, 0}}, + {3277, {wxStyledTextCtrl, setSTCCursor, 1}}, + {3278, {wxStyledTextCtrl, getSTCCursor, 0}}, + {3279, {wxStyledTextCtrl, setControlCharSymbol, 1}}, + {3280, {wxStyledTextCtrl, getControlCharSymbol, 0}}, + {3281, {wxStyledTextCtrl, wordPartLeft, 0}}, + {3282, {wxStyledTextCtrl, wordPartLeftExtend, 0}}, + {3283, {wxStyledTextCtrl, wordPartRight, 0}}, + {3284, {wxStyledTextCtrl, wordPartRightExtend, 0}}, + {3285, {wxStyledTextCtrl, setVisiblePolicy, 2}}, + {3286, {wxStyledTextCtrl, delLineLeft, 0}}, + {3287, {wxStyledTextCtrl, delLineRight, 0}}, + {3288, {wxStyledTextCtrl, getXOffset, 0}}, + {3289, {wxStyledTextCtrl, chooseCaretX, 0}}, + {3290, {wxStyledTextCtrl, setXCaretPolicy, 2}}, + {3291, {wxStyledTextCtrl, setYCaretPolicy, 2}}, + {3292, {wxStyledTextCtrl, getPrintWrapMode, 0}}, + {3293, {wxStyledTextCtrl, setHotspotActiveForeground, 2}}, + {3294, {wxStyledTextCtrl, setHotspotActiveBackground, 2}}, + {3295, {wxStyledTextCtrl, setHotspotActiveUnderline, 1}}, + {3296, {wxStyledTextCtrl, setHotspotSingleLine, 1}}, + {3297, {wxStyledTextCtrl, paraDownExtend, 0}}, + {3298, {wxStyledTextCtrl, paraUp, 0}}, + {3299, {wxStyledTextCtrl, paraUpExtend, 0}}, + {3300, {wxStyledTextCtrl, positionBefore, 1}}, + {3301, {wxStyledTextCtrl, positionAfter, 1}}, + {3302, {wxStyledTextCtrl, copyRange, 2}}, + {3303, {wxStyledTextCtrl, copyText, 2}}, + {3304, {wxStyledTextCtrl, setSelectionMode, 1}}, + {3305, {wxStyledTextCtrl, getSelectionMode, 0}}, + {3306, {wxStyledTextCtrl, lineDownRectExtend, 0}}, + {3307, {wxStyledTextCtrl, lineUpRectExtend, 0}}, + {3308, {wxStyledTextCtrl, charLeftRectExtend, 0}}, + {3309, {wxStyledTextCtrl, charRightRectExtend, 0}}, + {3310, {wxStyledTextCtrl, homeRectExtend, 0}}, + {3311, {wxStyledTextCtrl, vCHomeRectExtend, 0}}, + {3312, {wxStyledTextCtrl, lineEndRectExtend, 0}}, + {3313, {wxStyledTextCtrl, pageUpRectExtend, 0}}, + {3314, {wxStyledTextCtrl, pageDownRectExtend, 0}}, + {3315, {wxStyledTextCtrl, stutteredPageUp, 0}}, + {3316, {wxStyledTextCtrl, stutteredPageUpExtend, 0}}, + {3317, {wxStyledTextCtrl, stutteredPageDown, 0}}, + {3318, {wxStyledTextCtrl, stutteredPageDownExtend, 0}}, + {3319, {wxStyledTextCtrl, wordLeftEnd, 0}}, + {3320, {wxStyledTextCtrl, wordLeftEndExtend, 0}}, + {3321, {wxStyledTextCtrl, wordRightEnd, 0}}, + {3322, {wxStyledTextCtrl, wordRightEndExtend, 0}}, + {3323, {wxStyledTextCtrl, setWhitespaceChars, 1}}, + {3324, {wxStyledTextCtrl, setCharsDefault, 0}}, + {3325, {wxStyledTextCtrl, autoCompGetCurrent, 0}}, + {3326, {wxStyledTextCtrl, allocate, 1}}, + {3327, {wxStyledTextCtrl, findColumn, 2}}, + {3328, {wxStyledTextCtrl, getCaretSticky, 0}}, + {3329, {wxStyledTextCtrl, setCaretSticky, 1}}, + {3330, {wxStyledTextCtrl, toggleCaretSticky, 0}}, + {3331, {wxStyledTextCtrl, setPasteConvertEndings, 1}}, + {3332, {wxStyledTextCtrl, getPasteConvertEndings, 0}}, + {3333, {wxStyledTextCtrl, selectionDuplicate, 0}}, + {3334, {wxStyledTextCtrl, setCaretLineBackAlpha, 1}}, + {3335, {wxStyledTextCtrl, getCaretLineBackAlpha, 0}}, + {3336, {wxStyledTextCtrl, startRecord, 0}}, + {3337, {wxStyledTextCtrl, stopRecord, 0}}, + {3338, {wxStyledTextCtrl, setLexer, 1}}, + {3339, {wxStyledTextCtrl, getLexer, 0}}, + {3340, {wxStyledTextCtrl, colourise, 2}}, + {3341, {wxStyledTextCtrl, setProperty, 2}}, + {3342, {wxStyledTextCtrl, setKeyWords, 2}}, + {3343, {wxStyledTextCtrl, setLexerLanguage, 1}}, + {3344, {wxStyledTextCtrl, getProperty, 1}}, + {3345, {wxStyledTextCtrl, getStyleBitsNeeded, 0}}, + {3346, {wxStyledTextCtrl, getCurrentLine, 0}}, + {3347, {wxStyledTextCtrl, styleSetSpec, 2}}, + {3348, {wxStyledTextCtrl, styleSetFont, 2}}, + {3349, {wxStyledTextCtrl, styleSetFontAttr, 7}}, + {3350, {wxStyledTextCtrl, styleSetCharacterSet, 2}}, + {3351, {wxStyledTextCtrl, styleSetFontEncoding, 2}}, + {3352, {wxStyledTextCtrl, cmdKeyExecute, 1}}, + {3353, {wxStyledTextCtrl, setMargins, 2}}, + {3354, {wxStyledTextCtrl, getSelection, 2}}, + {3355, {wxStyledTextCtrl, pointFromPosition, 1}}, + {3356, {wxStyledTextCtrl, scrollToLine, 1}}, + {3357, {wxStyledTextCtrl, scrollToColumn, 1}}, + {3358, {wxStyledTextCtrl, sendMsg, 2}}, + {3359, {wxStyledTextCtrl, setVScrollBar, 1}}, + {3360, {wxStyledTextCtrl, setHScrollBar, 1}}, + {3361, {wxStyledTextCtrl, getLastKeydownProcessed, 0}}, + {3362, {wxStyledTextCtrl, setLastKeydownProcessed, 1}}, + {3363, {wxStyledTextCtrl, saveFile, 1}}, + {3364, {wxStyledTextCtrl, loadFile, 1}}, + {3365, {wxStyledTextCtrl, doDragOver, 3}}, + {3366, {wxStyledTextCtrl, doDropText, 3}}, + {3367, {wxStyledTextCtrl, getUseAntiAliasing, 0}}, + {3368, {wxStyledTextCtrl, addTextRaw, 1}}, + {3369, {wxStyledTextCtrl, insertTextRaw, 2}}, + {3370, {wxStyledTextCtrl, getCurLineRaw, 1}}, + {3371, {wxStyledTextCtrl, getLineRaw, 1}}, + {3372, {wxStyledTextCtrl, getSelectedTextRaw, 0}}, + {3373, {wxStyledTextCtrl, getTextRangeRaw, 2}}, + {3374, {wxStyledTextCtrl, setTextRaw, 1}}, + {3375, {wxStyledTextCtrl, getTextRaw, 0}}, + {3376, {wxStyledTextCtrl, appendTextRaw, 1}}, + {3377, {wxArtProvider, getBitmap, 2}}, + {3378, {wxArtProvider, getIcon, 2}}, + {3379, {wxTreeEvent, getKeyCode, 0}}, + {3380, {wxTreeEvent, getItem, 0}}, + {3381, {wxTreeEvent, getKeyEvent, 0}}, + {3382, {wxTreeEvent, getLabel, 0}}, + {3383, {wxTreeEvent, getOldItem, 0}}, + {3384, {wxTreeEvent, getPoint, 0}}, + {3385, {wxTreeEvent, isEditCancelled, 0}}, + {3386, {wxTreeEvent, setToolTip, 1}}, + {3387, {wxNotebookEvent, getOldSelection, 0}}, + {3388, {wxNotebookEvent, getSelection, 0}}, + {3389, {wxNotebookEvent, setOldSelection, 1}}, + {3390, {wxNotebookEvent, setSelection, 1}}, + {3391, {wxFileDataObject, new, 0}}, + {3392, {wxFileDataObject, addFile, 1}}, + {3393, {wxFileDataObject, getFilenames, 0}}, + {3394, {wxFileDataObject, 'Destroy', undefined}}, + {3395, {wxTextDataObject, new, 1}}, + {3396, {wxTextDataObject, getTextLength, 0}}, + {3397, {wxTextDataObject, getText, 0}}, + {3398, {wxTextDataObject, setText, 1}}, + {3399, {wxTextDataObject, 'Destroy', undefined}}, + {3400, {wxBitmapDataObject, new_1_1, 1}}, + {3401, {wxBitmapDataObject, new_1_0, 1}}, + {3402, {wxBitmapDataObject, getBitmap, 0}}, + {3403, {wxBitmapDataObject, setBitmap, 1}}, + {3404, {wxBitmapDataObject, 'Destroy', undefined}}, + {3406, {wxClipboard, new, 0}}, + {3407, {wxClipboard, destruct, 0}}, + {3408, {wxClipboard, addData, 1}}, + {3409, {wxClipboard, clear, 0}}, + {3410, {wxClipboard, close, 0}}, + {3411, {wxClipboard, flush, 0}}, + {3412, {wxClipboard, getData, 1}}, + {3413, {wxClipboard, isOpened, 0}}, + {3414, {wxClipboard, open, 0}}, + {3415, {wxClipboard, setData, 1}}, + {3417, {wxClipboard, usePrimarySelection, 1}}, + {3418, {wxClipboard, isSupported, 1}}, + {3419, {wxClipboard, get, 0}}, + {3420, {wxSpinEvent, getPosition, 0}}, + {3421, {wxSpinEvent, setPosition, 1}}, + {3422, {wxSplitterWindow, new_0, 0}}, + {3423, {wxSplitterWindow, new_2, 2}}, + {3424, {wxSplitterWindow, destruct, 0}}, + {3425, {wxSplitterWindow, create, 2}}, + {3426, {wxSplitterWindow, getMinimumPaneSize, 0}}, + {3427, {wxSplitterWindow, getSashGravity, 0}}, + {3428, {wxSplitterWindow, getSashPosition, 0}}, + {3429, {wxSplitterWindow, getSplitMode, 0}}, + {3430, {wxSplitterWindow, getWindow1, 0}}, + {3431, {wxSplitterWindow, getWindow2, 0}}, + {3432, {wxSplitterWindow, initialize, 1}}, + {3433, {wxSplitterWindow, isSplit, 0}}, + {3434, {wxSplitterWindow, replaceWindow, 2}}, + {3435, {wxSplitterWindow, setSashGravity, 1}}, + {3436, {wxSplitterWindow, setSashPosition, 2}}, + {3437, {wxSplitterWindow, setSashSize, 1}}, + {3438, {wxSplitterWindow, setMinimumPaneSize, 1}}, + {3439, {wxSplitterWindow, setSplitMode, 1}}, + {3440, {wxSplitterWindow, splitHorizontally, 3}}, + {3441, {wxSplitterWindow, splitVertically, 3}}, + {3442, {wxSplitterWindow, unsplit, 1}}, + {3443, {wxSplitterWindow, updateSize, 0}}, + {3444, {wxSplitterEvent, getSashPosition, 0}}, + {3445, {wxSplitterEvent, getX, 0}}, + {3446, {wxSplitterEvent, getY, 0}}, + {3447, {wxSplitterEvent, getWindowBeingRemoved, 0}}, + {3448, {wxSplitterEvent, setSashPosition, 1}}, + {3449, {wxHtmlWindow, new_0, 0}}, + {3450, {wxHtmlWindow, new_2, 2}}, + {3451, {wxHtmlWindow, appendToPage, 1}}, + {3452, {wxHtmlWindow, getOpenedAnchor, 0}}, + {3453, {wxHtmlWindow, getOpenedPage, 0}}, + {3454, {wxHtmlWindow, getOpenedPageTitle, 0}}, + {3455, {wxHtmlWindow, getRelatedFrame, 0}}, + {3456, {wxHtmlWindow, historyBack, 0}}, + {3457, {wxHtmlWindow, historyCanBack, 0}}, + {3458, {wxHtmlWindow, historyCanForward, 0}}, + {3459, {wxHtmlWindow, historyClear, 0}}, + {3460, {wxHtmlWindow, historyForward, 0}}, + {3461, {wxHtmlWindow, loadFile, 1}}, + {3462, {wxHtmlWindow, loadPage, 1}}, + {3463, {wxHtmlWindow, selectAll, 0}}, + {3464, {wxHtmlWindow, selectionToText, 0}}, + {3465, {wxHtmlWindow, selectLine, 1}}, + {3466, {wxHtmlWindow, selectWord, 1}}, + {3467, {wxHtmlWindow, setBorders, 1}}, + {3468, {wxHtmlWindow, setFonts, 3}}, + {3469, {wxHtmlWindow, setPage, 1}}, + {3470, {wxHtmlWindow, setRelatedFrame, 2}}, + {3471, {wxHtmlWindow, setRelatedStatusBar, 1}}, + {3472, {wxHtmlWindow, toText, 0}}, + {3473, {wxHtmlWindow, 'Destroy', undefined}}, + {3474, {wxHtmlLinkEvent, getLinkInfo, 0}}, + {3475, {wxAuiNotebookEvent, setSelection, 1}}, + {3476, {wxAuiNotebookEvent, getSelection, 0}}, + {3477, {wxAuiNotebookEvent, setOldSelection, 1}}, + {3478, {wxAuiNotebookEvent, getOldSelection, 0}}, + {3479, {wxAuiNotebookEvent, setDragSource, 1}}, + {3480, {wxAuiNotebookEvent, getDragSource, 0}}, + {3481, {wxAuiManagerEvent, setManager, 1}}, + {3482, {wxAuiManagerEvent, getManager, 0}}, + {3483, {wxAuiManagerEvent, setPane, 1}}, + {3484, {wxAuiManagerEvent, getPane, 0}}, + {3485, {wxAuiManagerEvent, setButton, 1}}, + {3486, {wxAuiManagerEvent, getButton, 0}}, + {3487, {wxAuiManagerEvent, setDC, 1}}, + {3488, {wxAuiManagerEvent, getDC, 0}}, + {3489, {wxAuiManagerEvent, veto, 1}}, + {3490, {wxAuiManagerEvent, getVeto, 0}}, + {3491, {wxAuiManagerEvent, setCanVeto, 1}}, + {3492, {wxAuiManagerEvent, canVeto, 0}}, + {3493, {wxLogNull, new, 0}}, + {3494, {wxLogNull, 'Destroy', undefined}}, {-1, {mod, func, -1}} ]. diff --git a/lib/wx/src/gen/wxe_funcs.hrl b/lib/wx/src/gen/wxe_funcs.hrl index b1d5e50647..7b5ca229c8 100644 --- a/lib/wx/src/gen/wxe_funcs.hrl +++ b/lib/wx/src/gen/wxe_funcs.hrl @@ -767,2509 +767,2509 @@ -define(wxControlWithItems_Clear, 882). -define(wxControlWithItems_Delete, 883). -define(wxControlWithItems_FindString, 884). --define(wxControlWithItems_getClientData, 886). --define(wxControlWithItems_setClientData, 888). --define(wxControlWithItems_GetCount, 889). --define(wxControlWithItems_GetSelection, 890). --define(wxControlWithItems_GetString, 891). --define(wxControlWithItems_GetStringSelection, 892). --define(wxControlWithItems_Insert_2, 893). --define(wxControlWithItems_Insert_3, 894). --define(wxControlWithItems_IsEmpty, 895). --define(wxControlWithItems_Select, 896). --define(wxControlWithItems_SetSelection, 897). --define(wxControlWithItems_SetString, 898). --define(wxControlWithItems_SetStringSelection, 899). --define(wxMenu_new_2, 902). --define(wxMenu_new_1, 903). --define(wxMenu_destruct, 905). --define(wxMenu_Append_3, 906). --define(wxMenu_Append_1, 907). --define(wxMenu_Append_4_0, 908). --define(wxMenu_Append_4_1, 909). --define(wxMenu_AppendCheckItem, 910). --define(wxMenu_AppendRadioItem, 911). --define(wxMenu_AppendSeparator, 912). --define(wxMenu_Break, 913). --define(wxMenu_Check, 914). --define(wxMenu_Delete_1_0, 915). --define(wxMenu_Delete_1_1, 916). --define(wxMenu_Destroy_1_0, 917). --define(wxMenu_Destroy_1_1, 918). --define(wxMenu_Enable, 919). --define(wxMenu_FindItem_1, 920). --define(wxMenu_FindItem_2, 921). --define(wxMenu_FindItemByPosition, 922). --define(wxMenu_GetHelpString, 923). --define(wxMenu_GetLabel, 924). --define(wxMenu_GetMenuItemCount, 925). --define(wxMenu_GetMenuItems, 926). --define(wxMenu_GetTitle, 928). --define(wxMenu_Insert_2, 929). --define(wxMenu_Insert_3, 930). --define(wxMenu_Insert_5_1, 931). --define(wxMenu_Insert_5_0, 932). --define(wxMenu_InsertCheckItem, 933). --define(wxMenu_InsertRadioItem, 934). --define(wxMenu_InsertSeparator, 935). --define(wxMenu_IsChecked, 936). --define(wxMenu_IsEnabled, 937). --define(wxMenu_Prepend_1, 938). --define(wxMenu_Prepend_2, 939). --define(wxMenu_Prepend_4_1, 940). --define(wxMenu_Prepend_4_0, 941). --define(wxMenu_PrependCheckItem, 942). --define(wxMenu_PrependRadioItem, 943). --define(wxMenu_PrependSeparator, 944). --define(wxMenu_Remove_1_0, 945). --define(wxMenu_Remove_1_1, 946). --define(wxMenu_SetHelpString, 947). --define(wxMenu_SetLabel, 948). --define(wxMenu_SetTitle, 949). --define(wxMenuItem_new, 950). --define(wxMenuItem_destruct, 952). --define(wxMenuItem_Check, 953). --define(wxMenuItem_Enable, 954). --define(wxMenuItem_GetBitmap, 955). --define(wxMenuItem_GetHelp, 956). --define(wxMenuItem_GetId, 957). --define(wxMenuItem_GetKind, 958). --define(wxMenuItem_GetLabel, 959). --define(wxMenuItem_GetLabelFromText, 960). --define(wxMenuItem_GetMenu, 961). --define(wxMenuItem_GetText, 962). --define(wxMenuItem_GetSubMenu, 963). --define(wxMenuItem_IsCheckable, 964). --define(wxMenuItem_IsChecked, 965). --define(wxMenuItem_IsEnabled, 966). --define(wxMenuItem_IsSeparator, 967). --define(wxMenuItem_IsSubMenu, 968). --define(wxMenuItem_SetBitmap, 969). --define(wxMenuItem_SetHelp, 970). --define(wxMenuItem_SetMenu, 971). --define(wxMenuItem_SetSubMenu, 972). --define(wxMenuItem_SetText, 973). --define(wxToolBar_AddControl, 974). --define(wxToolBar_AddSeparator, 975). --define(wxToolBar_AddTool_5, 976). --define(wxToolBar_AddTool_4_0, 977). --define(wxToolBar_AddTool_1, 978). --define(wxToolBar_AddTool_4_1, 979). --define(wxToolBar_AddTool_3, 980). --define(wxToolBar_AddTool_6, 981). --define(wxToolBar_AddCheckTool, 982). --define(wxToolBar_AddRadioTool, 983). --define(wxToolBar_DeleteTool, 984). --define(wxToolBar_DeleteToolByPos, 985). --define(wxToolBar_EnableTool, 986). --define(wxToolBar_FindById, 987). --define(wxToolBar_FindControl, 988). --define(wxToolBar_FindToolForPosition, 989). --define(wxToolBar_GetToolSize, 990). --define(wxToolBar_GetToolBitmapSize, 991). --define(wxToolBar_GetMargins, 992). --define(wxToolBar_GetToolEnabled, 993). --define(wxToolBar_GetToolLongHelp, 994). --define(wxToolBar_GetToolPacking, 995). --define(wxToolBar_GetToolPos, 996). --define(wxToolBar_GetToolSeparation, 997). --define(wxToolBar_GetToolShortHelp, 998). --define(wxToolBar_GetToolState, 999). --define(wxToolBar_InsertControl, 1000). --define(wxToolBar_InsertSeparator, 1001). --define(wxToolBar_InsertTool_5, 1002). --define(wxToolBar_InsertTool_2, 1003). --define(wxToolBar_InsertTool_4, 1004). --define(wxToolBar_Realize, 1005). --define(wxToolBar_RemoveTool, 1006). --define(wxToolBar_SetMargins, 1007). --define(wxToolBar_SetToolBitmapSize, 1008). --define(wxToolBar_SetToolLongHelp, 1009). --define(wxToolBar_SetToolPacking, 1010). --define(wxToolBar_SetToolShortHelp, 1011). --define(wxToolBar_SetToolSeparation, 1012). --define(wxToolBar_ToggleTool, 1013). --define(wxStatusBar_new_0, 1015). --define(wxStatusBar_new_2, 1016). --define(wxStatusBar_destruct, 1018). --define(wxStatusBar_Create, 1019). --define(wxStatusBar_GetFieldRect, 1020). --define(wxStatusBar_GetFieldsCount, 1021). --define(wxStatusBar_GetStatusText, 1022). --define(wxStatusBar_PopStatusText, 1023). --define(wxStatusBar_PushStatusText, 1024). --define(wxStatusBar_SetFieldsCount, 1025). --define(wxStatusBar_SetMinHeight, 1026). --define(wxStatusBar_SetStatusText, 1027). --define(wxStatusBar_SetStatusWidths, 1028). --define(wxStatusBar_SetStatusStyles, 1029). --define(wxBitmap_new_0, 1030). --define(wxBitmap_new_3, 1031). --define(wxBitmap_new_4, 1032). --define(wxBitmap_new_2_0, 1033). --define(wxBitmap_new_2_1, 1034). --define(wxBitmap_destruct, 1035). --define(wxBitmap_ConvertToImage, 1036). --define(wxBitmap_CopyFromIcon, 1037). --define(wxBitmap_Create, 1038). --define(wxBitmap_GetDepth, 1039). --define(wxBitmap_GetHeight, 1040). --define(wxBitmap_GetPalette, 1041). --define(wxBitmap_GetMask, 1042). --define(wxBitmap_GetWidth, 1043). --define(wxBitmap_GetSubBitmap, 1044). --define(wxBitmap_LoadFile, 1045). --define(wxBitmap_Ok, 1046). --define(wxBitmap_SaveFile, 1047). --define(wxBitmap_SetDepth, 1048). --define(wxBitmap_SetHeight, 1049). --define(wxBitmap_SetMask, 1050). --define(wxBitmap_SetPalette, 1051). --define(wxBitmap_SetWidth, 1052). --define(wxIcon_new_0, 1053). --define(wxIcon_new_2, 1054). --define(wxIcon_new_1, 1055). --define(wxIcon_CopyFromBitmap, 1056). --define(wxIcon_destroy, 1057). --define(wxIconBundle_new_0, 1058). --define(wxIconBundle_new_2, 1059). --define(wxIconBundle_new_1_0, 1060). --define(wxIconBundle_new_1_1, 1061). --define(wxIconBundle_destruct, 1062). --define(wxIconBundle_AddIcon_2, 1063). --define(wxIconBundle_AddIcon_1, 1064). --define(wxIconBundle_GetIcon_1_1, 1065). --define(wxIconBundle_GetIcon_1_0, 1066). --define(wxCursor_new_0, 1067). --define(wxCursor_new_1_0, 1068). --define(wxCursor_new_1_1, 1069). --define(wxCursor_new_4, 1070). --define(wxCursor_destruct, 1071). --define(wxCursor_Ok, 1072). --define(wxMask_new_0, 1073). --define(wxMask_new_2_1, 1074). --define(wxMask_new_2_0, 1075). --define(wxMask_new_1, 1076). --define(wxMask_destruct, 1077). --define(wxMask_Create_2_1, 1078). --define(wxMask_Create_2_0, 1079). --define(wxMask_Create_1, 1080). --define(wxImage_new_0, 1081). --define(wxImage_new_3_0, 1082). --define(wxImage_new_4, 1083). --define(wxImage_new_5, 1084). --define(wxImage_new_2, 1085). --define(wxImage_new_3_1, 1086). --define(wxImage_Blur, 1087). --define(wxImage_BlurHorizontal, 1088). --define(wxImage_BlurVertical, 1089). --define(wxImage_ConvertAlphaToMask, 1090). --define(wxImage_ConvertToGreyscale, 1091). --define(wxImage_ConvertToMono, 1092). --define(wxImage_Copy, 1093). --define(wxImage_Create_3, 1094). --define(wxImage_Create_4, 1095). --define(wxImage_Create_5, 1096). --define(wxImage_Destroy, 1097). --define(wxImage_FindFirstUnusedColour, 1098). --define(wxImage_GetImageExtWildcard, 1099). --define(wxImage_GetAlpha_2, 1100). --define(wxImage_GetAlpha_0, 1101). --define(wxImage_GetBlue, 1102). --define(wxImage_GetData, 1103). --define(wxImage_GetGreen, 1104). --define(wxImage_GetImageCount, 1105). --define(wxImage_GetHeight, 1106). --define(wxImage_GetMaskBlue, 1107). --define(wxImage_GetMaskGreen, 1108). --define(wxImage_GetMaskRed, 1109). --define(wxImage_GetOrFindMaskColour, 1110). --define(wxImage_GetPalette, 1111). --define(wxImage_GetRed, 1112). --define(wxImage_GetSubImage, 1113). --define(wxImage_GetWidth, 1114). --define(wxImage_HasAlpha, 1115). --define(wxImage_HasMask, 1116). --define(wxImage_GetOption, 1117). --define(wxImage_GetOptionInt, 1118). --define(wxImage_HasOption, 1119). --define(wxImage_InitAlpha, 1120). --define(wxImage_InitStandardHandlers, 1121). --define(wxImage_IsTransparent, 1122). --define(wxImage_LoadFile_2, 1123). --define(wxImage_LoadFile_3, 1124). --define(wxImage_Ok, 1125). --define(wxImage_RemoveHandler, 1126). --define(wxImage_Mirror, 1127). --define(wxImage_Replace, 1128). --define(wxImage_Rescale, 1129). --define(wxImage_Resize, 1130). --define(wxImage_Rotate, 1131). --define(wxImage_RotateHue, 1132). --define(wxImage_Rotate90, 1133). --define(wxImage_SaveFile_1, 1134). --define(wxImage_SaveFile_2_0, 1135). --define(wxImage_SaveFile_2_1, 1136). --define(wxImage_Scale, 1137). --define(wxImage_Size, 1138). --define(wxImage_SetAlpha_3, 1139). --define(wxImage_SetAlpha_2, 1140). --define(wxImage_SetData_2, 1141). --define(wxImage_SetData_4, 1142). --define(wxImage_SetMask, 1143). --define(wxImage_SetMaskColour, 1144). --define(wxImage_SetMaskFromImage, 1145). --define(wxImage_SetOption_2_1, 1146). --define(wxImage_SetOption_2_0, 1147). --define(wxImage_SetPalette, 1148). --define(wxImage_SetRGB_5, 1149). --define(wxImage_SetRGB_4, 1150). --define(wxImage_destroy, 1151). --define(wxBrush_new_0, 1152). --define(wxBrush_new_2, 1153). --define(wxBrush_new_1, 1154). --define(wxBrush_destruct, 1156). --define(wxBrush_GetColour, 1157). --define(wxBrush_GetStipple, 1158). --define(wxBrush_GetStyle, 1159). --define(wxBrush_IsHatch, 1160). --define(wxBrush_IsOk, 1161). --define(wxBrush_SetColour_1, 1162). --define(wxBrush_SetColour_3, 1163). --define(wxBrush_SetStipple, 1164). --define(wxBrush_SetStyle, 1165). --define(wxPen_new_0, 1166). --define(wxPen_new_2, 1167). --define(wxPen_destruct, 1168). --define(wxPen_GetCap, 1169). --define(wxPen_GetColour, 1170). --define(wxPen_GetJoin, 1171). --define(wxPen_GetStyle, 1172). --define(wxPen_GetWidth, 1173). --define(wxPen_IsOk, 1174). --define(wxPen_SetCap, 1175). --define(wxPen_SetColour_1, 1176). --define(wxPen_SetColour_3, 1177). --define(wxPen_SetJoin, 1178). --define(wxPen_SetStyle, 1179). --define(wxPen_SetWidth, 1180). --define(wxRegion_new_0, 1181). --define(wxRegion_new_4, 1182). --define(wxRegion_new_2, 1183). --define(wxRegion_new_1_1, 1184). --define(wxRegion_new_1_0, 1186). --define(wxRegion_destruct, 1188). --define(wxRegion_Clear, 1189). --define(wxRegion_Contains_2, 1190). --define(wxRegion_Contains_1_0, 1191). --define(wxRegion_Contains_4, 1192). --define(wxRegion_Contains_1_1, 1193). --define(wxRegion_ConvertToBitmap, 1194). --define(wxRegion_GetBox, 1195). --define(wxRegion_Intersect_4, 1196). --define(wxRegion_Intersect_1_1, 1197). --define(wxRegion_Intersect_1_0, 1198). --define(wxRegion_IsEmpty, 1199). --define(wxRegion_Subtract_4, 1200). --define(wxRegion_Subtract_1_1, 1201). --define(wxRegion_Subtract_1_0, 1202). --define(wxRegion_Offset_2, 1203). --define(wxRegion_Offset_1, 1204). --define(wxRegion_Union_4, 1205). --define(wxRegion_Union_1_2, 1206). --define(wxRegion_Union_1_1, 1207). --define(wxRegion_Union_1_0, 1208). --define(wxRegion_Union_3, 1209). --define(wxRegion_Xor_4, 1210). --define(wxRegion_Xor_1_1, 1211). --define(wxRegion_Xor_1_0, 1212). --define(wxAcceleratorTable_new_0, 1213). --define(wxAcceleratorTable_new_2, 1214). --define(wxAcceleratorTable_destruct, 1215). --define(wxAcceleratorTable_Ok, 1216). --define(wxAcceleratorEntry_new_1_0, 1217). --define(wxAcceleratorEntry_new_1_1, 1218). --define(wxAcceleratorEntry_GetCommand, 1219). --define(wxAcceleratorEntry_GetFlags, 1220). --define(wxAcceleratorEntry_GetKeyCode, 1221). --define(wxAcceleratorEntry_Set, 1222). --define(wxAcceleratorEntry_destroy, 1223). --define(wxCaret_new_3, 1228). --define(wxCaret_new_2, 1229). --define(wxCaret_destruct, 1231). --define(wxCaret_Create_3, 1232). --define(wxCaret_Create_2, 1233). --define(wxCaret_GetBlinkTime, 1234). --define(wxCaret_GetPosition, 1236). --define(wxCaret_GetSize, 1238). --define(wxCaret_GetWindow, 1239). --define(wxCaret_Hide, 1240). --define(wxCaret_IsOk, 1241). --define(wxCaret_IsVisible, 1242). --define(wxCaret_Move_2, 1243). --define(wxCaret_Move_1, 1244). --define(wxCaret_SetBlinkTime, 1245). --define(wxCaret_SetSize_2, 1246). --define(wxCaret_SetSize_1, 1247). --define(wxCaret_Show, 1248). --define(wxSizer_Add_2_1, 1249). --define(wxSizer_Add_2_0, 1250). --define(wxSizer_Add_3, 1251). --define(wxSizer_Add_2_3, 1252). --define(wxSizer_Add_2_2, 1253). --define(wxSizer_AddSpacer, 1254). --define(wxSizer_AddStretchSpacer, 1255). --define(wxSizer_CalcMin, 1256). --define(wxSizer_Clear, 1257). --define(wxSizer_Detach_1_2, 1258). --define(wxSizer_Detach_1_1, 1259). --define(wxSizer_Detach_1_0, 1260). --define(wxSizer_Fit, 1261). --define(wxSizer_FitInside, 1262). --define(wxSizer_GetChildren, 1263). --define(wxSizer_GetItem_2_1, 1264). --define(wxSizer_GetItem_2_0, 1265). --define(wxSizer_GetItem_1, 1266). --define(wxSizer_GetSize, 1267). --define(wxSizer_GetPosition, 1268). --define(wxSizer_GetMinSize, 1269). --define(wxSizer_Hide_2_0, 1270). --define(wxSizer_Hide_2_1, 1271). --define(wxSizer_Hide_1, 1272). --define(wxSizer_Insert_3_1, 1273). --define(wxSizer_Insert_3_0, 1274). --define(wxSizer_Insert_4, 1275). --define(wxSizer_Insert_3_3, 1276). --define(wxSizer_Insert_3_2, 1277). --define(wxSizer_Insert_2, 1278). --define(wxSizer_InsertSpacer, 1279). --define(wxSizer_InsertStretchSpacer, 1280). --define(wxSizer_IsShown_1_2, 1281). --define(wxSizer_IsShown_1_1, 1282). --define(wxSizer_IsShown_1_0, 1283). --define(wxSizer_Layout, 1284). --define(wxSizer_Prepend_2_1, 1285). --define(wxSizer_Prepend_2_0, 1286). --define(wxSizer_Prepend_3, 1287). --define(wxSizer_Prepend_2_3, 1288). --define(wxSizer_Prepend_2_2, 1289). --define(wxSizer_Prepend_1, 1290). --define(wxSizer_PrependSpacer, 1291). --define(wxSizer_PrependStretchSpacer, 1292). --define(wxSizer_RecalcSizes, 1293). --define(wxSizer_Remove_1_1, 1294). --define(wxSizer_Remove_1_0, 1295). --define(wxSizer_Replace_3_1, 1296). --define(wxSizer_Replace_3_0, 1297). --define(wxSizer_Replace_2, 1298). --define(wxSizer_SetDimension, 1299). --define(wxSizer_SetMinSize_2, 1300). --define(wxSizer_SetMinSize_1, 1301). --define(wxSizer_SetItemMinSize_3_2, 1302). --define(wxSizer_SetItemMinSize_2_2, 1303). --define(wxSizer_SetItemMinSize_3_1, 1304). --define(wxSizer_SetItemMinSize_2_1, 1305). --define(wxSizer_SetItemMinSize_3_0, 1306). --define(wxSizer_SetItemMinSize_2_0, 1307). --define(wxSizer_SetSizeHints, 1308). --define(wxSizer_SetVirtualSizeHints, 1309). --define(wxSizer_Show_2_2, 1310). --define(wxSizer_Show_2_1, 1311). --define(wxSizer_Show_2_0, 1312). --define(wxSizer_Show_1, 1313). --define(wxSizerFlags_new, 1314). --define(wxSizerFlags_Align, 1315). --define(wxSizerFlags_Border_2, 1316). --define(wxSizerFlags_Border_1, 1317). --define(wxSizerFlags_Center, 1318). --define(wxSizerFlags_Centre, 1319). --define(wxSizerFlags_Expand, 1320). --define(wxSizerFlags_Left, 1321). --define(wxSizerFlags_Proportion, 1322). --define(wxSizerFlags_Right, 1323). --define(wxSizerFlags_destroy, 1324). --define(wxSizerItem_new_5_1, 1325). --define(wxSizerItem_new_2_1, 1326). --define(wxSizerItem_new_5_0, 1327). --define(wxSizerItem_new_2_0, 1328). --define(wxSizerItem_new_6, 1329). --define(wxSizerItem_new_3, 1330). --define(wxSizerItem_new_0, 1331). --define(wxSizerItem_destruct, 1332). --define(wxSizerItem_CalcMin, 1333). --define(wxSizerItem_DeleteWindows, 1334). --define(wxSizerItem_DetachSizer, 1335). --define(wxSizerItem_GetBorder, 1336). --define(wxSizerItem_GetFlag, 1337). --define(wxSizerItem_GetMinSize, 1338). --define(wxSizerItem_GetPosition, 1339). --define(wxSizerItem_GetProportion, 1340). --define(wxSizerItem_GetRatio, 1341). --define(wxSizerItem_GetRect, 1342). --define(wxSizerItem_GetSize, 1343). --define(wxSizerItem_GetSizer, 1344). --define(wxSizerItem_GetSpacer, 1345). --define(wxSizerItem_GetUserData, 1346). --define(wxSizerItem_GetWindow, 1347). --define(wxSizerItem_IsSizer, 1348). --define(wxSizerItem_IsShown, 1349). --define(wxSizerItem_IsSpacer, 1350). --define(wxSizerItem_IsWindow, 1351). --define(wxSizerItem_SetBorder, 1352). --define(wxSizerItem_SetDimension, 1353). --define(wxSizerItem_SetFlag, 1354). --define(wxSizerItem_SetInitSize, 1355). --define(wxSizerItem_SetMinSize_1, 1356). --define(wxSizerItem_SetMinSize_2, 1357). --define(wxSizerItem_SetProportion, 1358). --define(wxSizerItem_SetRatio_2, 1359). --define(wxSizerItem_SetRatio_1_1, 1360). --define(wxSizerItem_SetRatio_1_0, 1361). --define(wxSizerItem_SetSizer, 1362). --define(wxSizerItem_SetSpacer_1, 1363). --define(wxSizerItem_SetSpacer_2, 1364). --define(wxSizerItem_SetWindow, 1365). --define(wxSizerItem_Show, 1366). --define(wxBoxSizer_new, 1367). --define(wxBoxSizer_GetOrientation, 1368). --define(wxBoxSizer_destroy, 1369). --define(wxStaticBoxSizer_new_2, 1370). --define(wxStaticBoxSizer_new_3, 1371). --define(wxStaticBoxSizer_GetStaticBox, 1372). --define(wxStaticBoxSizer_destroy, 1373). --define(wxGridSizer_new_4, 1374). --define(wxGridSizer_new_2, 1375). --define(wxGridSizer_GetCols, 1376). --define(wxGridSizer_GetHGap, 1377). --define(wxGridSizer_GetRows, 1378). --define(wxGridSizer_GetVGap, 1379). --define(wxGridSizer_SetCols, 1380). --define(wxGridSizer_SetHGap, 1381). --define(wxGridSizer_SetRows, 1382). --define(wxGridSizer_SetVGap, 1383). --define(wxGridSizer_destroy, 1384). --define(wxFlexGridSizer_new_4, 1385). --define(wxFlexGridSizer_new_2, 1386). --define(wxFlexGridSizer_AddGrowableCol, 1387). --define(wxFlexGridSizer_AddGrowableRow, 1388). --define(wxFlexGridSizer_GetFlexibleDirection, 1389). --define(wxFlexGridSizer_GetNonFlexibleGrowMode, 1390). --define(wxFlexGridSizer_RemoveGrowableCol, 1391). --define(wxFlexGridSizer_RemoveGrowableRow, 1392). --define(wxFlexGridSizer_SetFlexibleDirection, 1393). --define(wxFlexGridSizer_SetNonFlexibleGrowMode, 1394). --define(wxFlexGridSizer_destroy, 1395). --define(wxGridBagSizer_new, 1396). --define(wxGridBagSizer_Add_3_2, 1397). --define(wxGridBagSizer_Add_3_1, 1398). --define(wxGridBagSizer_Add_4, 1399). --define(wxGridBagSizer_Add_1_0, 1400). --define(wxGridBagSizer_Add_2_1, 1401). --define(wxGridBagSizer_Add_2_0, 1402). --define(wxGridBagSizer_Add_3_0, 1403). --define(wxGridBagSizer_Add_1_1, 1404). --define(wxGridBagSizer_CalcMin, 1405). --define(wxGridBagSizer_CheckForIntersection_2, 1406). --define(wxGridBagSizer_CheckForIntersection_3, 1407). --define(wxGridBagSizer_FindItem_1_1, 1408). --define(wxGridBagSizer_FindItem_1_0, 1409). --define(wxGridBagSizer_FindItemAtPoint, 1410). --define(wxGridBagSizer_FindItemAtPosition, 1411). --define(wxGridBagSizer_FindItemWithData, 1412). --define(wxGridBagSizer_GetCellSize, 1413). --define(wxGridBagSizer_GetEmptyCellSize, 1414). --define(wxGridBagSizer_GetItemPosition_1_2, 1415). --define(wxGridBagSizer_GetItemPosition_1_1, 1416). --define(wxGridBagSizer_GetItemPosition_1_0, 1417). --define(wxGridBagSizer_GetItemSpan_1_2, 1418). --define(wxGridBagSizer_GetItemSpan_1_1, 1419). --define(wxGridBagSizer_GetItemSpan_1_0, 1420). --define(wxGridBagSizer_SetEmptyCellSize, 1421). --define(wxGridBagSizer_SetItemPosition_2_2, 1422). --define(wxGridBagSizer_SetItemPosition_2_1, 1423). --define(wxGridBagSizer_SetItemPosition_2_0, 1424). --define(wxGridBagSizer_SetItemSpan_2_2, 1425). --define(wxGridBagSizer_SetItemSpan_2_1, 1426). --define(wxGridBagSizer_SetItemSpan_2_0, 1427). --define(wxGridBagSizer_destroy, 1428). --define(wxStdDialogButtonSizer_new, 1429). --define(wxStdDialogButtonSizer_AddButton, 1430). --define(wxStdDialogButtonSizer_Realize, 1431). --define(wxStdDialogButtonSizer_SetAffirmativeButton, 1432). --define(wxStdDialogButtonSizer_SetCancelButton, 1433). --define(wxStdDialogButtonSizer_SetNegativeButton, 1434). --define(wxStdDialogButtonSizer_destroy, 1435). --define(wxFont_new_0, 1436). --define(wxFont_new_1, 1437). --define(wxFont_new_5, 1438). --define(wxFont_destruct, 1440). --define(wxFont_IsFixedWidth, 1441). --define(wxFont_GetDefaultEncoding, 1442). --define(wxFont_GetFaceName, 1443). --define(wxFont_GetFamily, 1444). --define(wxFont_GetNativeFontInfoDesc, 1445). --define(wxFont_GetNativeFontInfoUserDesc, 1446). --define(wxFont_GetPointSize, 1447). --define(wxFont_GetStyle, 1448). --define(wxFont_GetUnderlined, 1449). --define(wxFont_GetWeight, 1450). --define(wxFont_Ok, 1451). --define(wxFont_SetDefaultEncoding, 1452). --define(wxFont_SetFaceName, 1453). --define(wxFont_SetFamily, 1454). --define(wxFont_SetPointSize, 1455). --define(wxFont_SetStyle, 1456). --define(wxFont_SetUnderlined, 1457). --define(wxFont_SetWeight, 1458). --define(wxToolTip_Enable, 1459). --define(wxToolTip_SetDelay, 1460). --define(wxToolTip_new, 1461). --define(wxToolTip_SetTip, 1462). --define(wxToolTip_GetTip, 1463). --define(wxToolTip_GetWindow, 1464). --define(wxToolTip_destroy, 1465). --define(wxButton_new_3, 1467). --define(wxButton_new_0, 1468). --define(wxButton_destruct, 1469). --define(wxButton_Create, 1470). --define(wxButton_GetDefaultSize, 1471). --define(wxButton_SetDefault, 1472). --define(wxButton_SetLabel, 1473). --define(wxBitmapButton_new_4, 1475). --define(wxBitmapButton_new_0, 1476). --define(wxBitmapButton_Create, 1477). --define(wxBitmapButton_GetBitmapDisabled, 1478). --define(wxBitmapButton_GetBitmapFocus, 1480). --define(wxBitmapButton_GetBitmapLabel, 1482). --define(wxBitmapButton_GetBitmapSelected, 1484). --define(wxBitmapButton_SetBitmapDisabled, 1486). --define(wxBitmapButton_SetBitmapFocus, 1487). --define(wxBitmapButton_SetBitmapLabel, 1488). --define(wxBitmapButton_SetBitmapSelected, 1489). --define(wxBitmapButton_destroy, 1490). --define(wxToggleButton_new_0, 1491). --define(wxToggleButton_new_4, 1492). --define(wxToggleButton_Create, 1493). --define(wxToggleButton_GetValue, 1494). --define(wxToggleButton_SetValue, 1495). --define(wxToggleButton_destroy, 1496). --define(wxCalendarCtrl_new_0, 1497). --define(wxCalendarCtrl_new_3, 1498). --define(wxCalendarCtrl_Create, 1499). --define(wxCalendarCtrl_destruct, 1500). --define(wxCalendarCtrl_SetDate, 1501). --define(wxCalendarCtrl_GetDate, 1502). --define(wxCalendarCtrl_EnableYearChange, 1503). --define(wxCalendarCtrl_EnableMonthChange, 1504). --define(wxCalendarCtrl_EnableHolidayDisplay, 1505). --define(wxCalendarCtrl_SetHeaderColours, 1506). --define(wxCalendarCtrl_GetHeaderColourFg, 1507). --define(wxCalendarCtrl_GetHeaderColourBg, 1508). --define(wxCalendarCtrl_SetHighlightColours, 1509). --define(wxCalendarCtrl_GetHighlightColourFg, 1510). --define(wxCalendarCtrl_GetHighlightColourBg, 1511). --define(wxCalendarCtrl_SetHolidayColours, 1512). --define(wxCalendarCtrl_GetHolidayColourFg, 1513). --define(wxCalendarCtrl_GetHolidayColourBg, 1514). --define(wxCalendarCtrl_GetAttr, 1515). --define(wxCalendarCtrl_SetAttr, 1516). --define(wxCalendarCtrl_SetHoliday, 1517). --define(wxCalendarCtrl_ResetAttr, 1518). --define(wxCalendarCtrl_HitTest, 1519). --define(wxCalendarDateAttr_new_0, 1520). --define(wxCalendarDateAttr_new_2_1, 1521). --define(wxCalendarDateAttr_new_2_0, 1522). --define(wxCalendarDateAttr_SetTextColour, 1523). --define(wxCalendarDateAttr_SetBackgroundColour, 1524). --define(wxCalendarDateAttr_SetBorderColour, 1525). --define(wxCalendarDateAttr_SetFont, 1526). --define(wxCalendarDateAttr_SetBorder, 1527). --define(wxCalendarDateAttr_SetHoliday, 1528). --define(wxCalendarDateAttr_HasTextColour, 1529). --define(wxCalendarDateAttr_HasBackgroundColour, 1530). --define(wxCalendarDateAttr_HasBorderColour, 1531). --define(wxCalendarDateAttr_HasFont, 1532). --define(wxCalendarDateAttr_HasBorder, 1533). --define(wxCalendarDateAttr_IsHoliday, 1534). --define(wxCalendarDateAttr_GetTextColour, 1535). --define(wxCalendarDateAttr_GetBackgroundColour, 1536). --define(wxCalendarDateAttr_GetBorderColour, 1537). --define(wxCalendarDateAttr_GetFont, 1538). --define(wxCalendarDateAttr_GetBorder, 1539). --define(wxCalendarDateAttr_destroy, 1540). --define(wxCheckBox_new_4, 1542). --define(wxCheckBox_new_0, 1543). --define(wxCheckBox_Create, 1544). --define(wxCheckBox_GetValue, 1545). --define(wxCheckBox_Get3StateValue, 1546). --define(wxCheckBox_Is3rdStateAllowedForUser, 1547). --define(wxCheckBox_Is3State, 1548). --define(wxCheckBox_IsChecked, 1549). --define(wxCheckBox_SetValue, 1550). --define(wxCheckBox_Set3StateValue, 1551). --define(wxCheckBox_destroy, 1552). --define(wxCheckListBox_new_0, 1553). --define(wxCheckListBox_new_3, 1555). --define(wxCheckListBox_Check, 1556). --define(wxCheckListBox_IsChecked, 1557). --define(wxCheckListBox_destroy, 1558). --define(wxChoice_new_3, 1561). --define(wxChoice_new_0, 1562). --define(wxChoice_destruct, 1564). --define(wxChoice_Create, 1566). --define(wxChoice_Delete, 1567). --define(wxChoice_GetColumns, 1568). --define(wxChoice_SetColumns, 1569). --define(wxComboBox_new_0, 1570). --define(wxComboBox_new_3, 1572). --define(wxComboBox_destruct, 1573). --define(wxComboBox_Create, 1575). --define(wxComboBox_CanCopy, 1576). --define(wxComboBox_CanCut, 1577). --define(wxComboBox_CanPaste, 1578). --define(wxComboBox_CanRedo, 1579). --define(wxComboBox_CanUndo, 1580). --define(wxComboBox_Copy, 1581). --define(wxComboBox_Cut, 1582). --define(wxComboBox_GetInsertionPoint, 1583). --define(wxComboBox_GetLastPosition, 1584). --define(wxComboBox_GetValue, 1585). --define(wxComboBox_Paste, 1586). --define(wxComboBox_Redo, 1587). --define(wxComboBox_Replace, 1588). --define(wxComboBox_Remove, 1589). --define(wxComboBox_SetInsertionPoint, 1590). --define(wxComboBox_SetInsertionPointEnd, 1591). --define(wxComboBox_SetSelection_1, 1592). --define(wxComboBox_SetSelection_2, 1593). --define(wxComboBox_SetValue, 1594). --define(wxComboBox_Undo, 1595). --define(wxGauge_new_0, 1596). --define(wxGauge_new_4, 1597). --define(wxGauge_Create, 1598). --define(wxGauge_GetBezelFace, 1599). --define(wxGauge_GetRange, 1600). --define(wxGauge_GetShadowWidth, 1601). --define(wxGauge_GetValue, 1602). --define(wxGauge_IsVertical, 1603). --define(wxGauge_SetBezelFace, 1604). --define(wxGauge_SetRange, 1605). --define(wxGauge_SetShadowWidth, 1606). --define(wxGauge_SetValue, 1607). --define(wxGauge_Pulse, 1608). --define(wxGauge_destroy, 1609). --define(wxGenericDirCtrl_new_0, 1610). --define(wxGenericDirCtrl_new_2, 1611). --define(wxGenericDirCtrl_destruct, 1612). --define(wxGenericDirCtrl_Create, 1613). --define(wxGenericDirCtrl_Init, 1614). --define(wxGenericDirCtrl_CollapseTree, 1615). --define(wxGenericDirCtrl_ExpandPath, 1616). --define(wxGenericDirCtrl_GetDefaultPath, 1617). --define(wxGenericDirCtrl_GetPath, 1618). --define(wxGenericDirCtrl_GetFilePath, 1619). --define(wxGenericDirCtrl_GetFilter, 1620). --define(wxGenericDirCtrl_GetFilterIndex, 1621). --define(wxGenericDirCtrl_GetRootId, 1622). --define(wxGenericDirCtrl_GetTreeCtrl, 1623). --define(wxGenericDirCtrl_ReCreateTree, 1624). --define(wxGenericDirCtrl_SetDefaultPath, 1625). --define(wxGenericDirCtrl_SetFilter, 1626). --define(wxGenericDirCtrl_SetFilterIndex, 1627). --define(wxGenericDirCtrl_SetPath, 1628). --define(wxStaticBox_new_4, 1630). --define(wxStaticBox_new_0, 1631). --define(wxStaticBox_Create, 1632). --define(wxStaticBox_destroy, 1633). --define(wxStaticLine_new_2, 1635). --define(wxStaticLine_new_0, 1636). --define(wxStaticLine_Create, 1637). --define(wxStaticLine_IsVertical, 1638). --define(wxStaticLine_GetDefaultSize, 1639). --define(wxStaticLine_destroy, 1640). --define(wxListBox_new_3, 1643). --define(wxListBox_new_0, 1644). --define(wxListBox_destruct, 1646). --define(wxListBox_Create, 1648). --define(wxListBox_Deselect, 1649). --define(wxListBox_GetSelections, 1650). --define(wxListBox_InsertItems, 1651). --define(wxListBox_IsSelected, 1652). --define(wxListBox_Set, 1654). --define(wxListBox_HitTest, 1655). --define(wxListBox_SetFirstItem_1_0, 1656). --define(wxListBox_SetFirstItem_1_1, 1657). --define(wxListCtrl_new_0, 1658). --define(wxListCtrl_new_2, 1659). --define(wxListCtrl_Arrange, 1660). --define(wxListCtrl_AssignImageList, 1661). --define(wxListCtrl_ClearAll, 1662). --define(wxListCtrl_Create, 1663). --define(wxListCtrl_DeleteAllItems, 1664). --define(wxListCtrl_DeleteColumn, 1665). --define(wxListCtrl_DeleteItem, 1666). --define(wxListCtrl_EditLabel, 1667). --define(wxListCtrl_EnsureVisible, 1668). --define(wxListCtrl_FindItem_3_0, 1669). --define(wxListCtrl_FindItem_3_1, 1670). --define(wxListCtrl_GetColumn, 1671). --define(wxListCtrl_GetColumnCount, 1672). --define(wxListCtrl_GetColumnWidth, 1673). --define(wxListCtrl_GetCountPerPage, 1674). --define(wxListCtrl_GetEditControl, 1675). --define(wxListCtrl_GetImageList, 1676). --define(wxListCtrl_GetItem, 1677). --define(wxListCtrl_GetItemBackgroundColour, 1678). --define(wxListCtrl_GetItemCount, 1679). --define(wxListCtrl_GetItemData, 1680). --define(wxListCtrl_GetItemFont, 1681). --define(wxListCtrl_GetItemPosition, 1682). --define(wxListCtrl_GetItemRect, 1683). --define(wxListCtrl_GetItemSpacing, 1684). --define(wxListCtrl_GetItemState, 1685). --define(wxListCtrl_GetItemText, 1686). --define(wxListCtrl_GetItemTextColour, 1687). --define(wxListCtrl_GetNextItem, 1688). --define(wxListCtrl_GetSelectedItemCount, 1689). --define(wxListCtrl_GetTextColour, 1690). --define(wxListCtrl_GetTopItem, 1691). --define(wxListCtrl_GetViewRect, 1692). --define(wxListCtrl_HitTest, 1693). --define(wxListCtrl_InsertColumn_2, 1694). --define(wxListCtrl_InsertColumn_3, 1695). --define(wxListCtrl_InsertItem_1, 1696). --define(wxListCtrl_InsertItem_2_1, 1697). --define(wxListCtrl_InsertItem_2_0, 1698). --define(wxListCtrl_InsertItem_3, 1699). --define(wxListCtrl_RefreshItem, 1700). --define(wxListCtrl_RefreshItems, 1701). --define(wxListCtrl_ScrollList, 1702). --define(wxListCtrl_SetBackgroundColour, 1703). --define(wxListCtrl_SetColumn, 1704). --define(wxListCtrl_SetColumnWidth, 1705). --define(wxListCtrl_SetImageList, 1706). --define(wxListCtrl_SetItem_1, 1707). --define(wxListCtrl_SetItem_4, 1708). --define(wxListCtrl_SetItemBackgroundColour, 1709). --define(wxListCtrl_SetItemCount, 1710). --define(wxListCtrl_SetItemData, 1711). --define(wxListCtrl_SetItemFont, 1712). --define(wxListCtrl_SetItemImage, 1713). --define(wxListCtrl_SetItemColumnImage, 1714). --define(wxListCtrl_SetItemPosition, 1715). --define(wxListCtrl_SetItemState, 1716). --define(wxListCtrl_SetItemText, 1717). --define(wxListCtrl_SetItemTextColour, 1718). --define(wxListCtrl_SetSingleStyle, 1719). --define(wxListCtrl_SetTextColour, 1720). --define(wxListCtrl_SetWindowStyleFlag, 1721). --define(wxListCtrl_SortItems, 1722). --define(wxListCtrl_destroy, 1723). --define(wxListView_ClearColumnImage, 1724). --define(wxListView_Focus, 1725). --define(wxListView_GetFirstSelected, 1726). --define(wxListView_GetFocusedItem, 1727). --define(wxListView_GetNextSelected, 1728). --define(wxListView_IsSelected, 1729). --define(wxListView_Select, 1730). --define(wxListView_SetColumnImage, 1731). --define(wxListItem_new_0, 1732). --define(wxListItem_new_1, 1733). --define(wxListItem_destruct, 1734). --define(wxListItem_Clear, 1735). --define(wxListItem_GetAlign, 1736). --define(wxListItem_GetBackgroundColour, 1737). --define(wxListItem_GetColumn, 1738). --define(wxListItem_GetFont, 1739). --define(wxListItem_GetId, 1740). --define(wxListItem_GetImage, 1741). --define(wxListItem_GetMask, 1742). --define(wxListItem_GetState, 1743). --define(wxListItem_GetText, 1744). --define(wxListItem_GetTextColour, 1745). --define(wxListItem_GetWidth, 1746). --define(wxListItem_SetAlign, 1747). --define(wxListItem_SetBackgroundColour, 1748). --define(wxListItem_SetColumn, 1749). --define(wxListItem_SetFont, 1750). --define(wxListItem_SetId, 1751). --define(wxListItem_SetImage, 1752). --define(wxListItem_SetMask, 1753). --define(wxListItem_SetState, 1754). --define(wxListItem_SetStateMask, 1755). --define(wxListItem_SetText, 1756). --define(wxListItem_SetTextColour, 1757). --define(wxListItem_SetWidth, 1758). --define(wxImageList_new_0, 1759). --define(wxImageList_new_3, 1760). --define(wxImageList_Add_1, 1761). --define(wxImageList_Add_2_0, 1762). --define(wxImageList_Add_2_1, 1763). --define(wxImageList_Create, 1764). --define(wxImageList_Draw, 1766). --define(wxImageList_GetBitmap, 1767). --define(wxImageList_GetIcon, 1768). --define(wxImageList_GetImageCount, 1769). --define(wxImageList_GetSize, 1770). --define(wxImageList_Remove, 1771). --define(wxImageList_RemoveAll, 1772). --define(wxImageList_Replace_2, 1773). --define(wxImageList_Replace_3, 1774). --define(wxImageList_destroy, 1775). --define(wxTextAttr_new_0, 1776). --define(wxTextAttr_new_2, 1777). --define(wxTextAttr_GetAlignment, 1778). --define(wxTextAttr_GetBackgroundColour, 1779). --define(wxTextAttr_GetFont, 1780). --define(wxTextAttr_GetLeftIndent, 1781). --define(wxTextAttr_GetLeftSubIndent, 1782). --define(wxTextAttr_GetRightIndent, 1783). --define(wxTextAttr_GetTabs, 1784). --define(wxTextAttr_GetTextColour, 1785). --define(wxTextAttr_HasBackgroundColour, 1786). --define(wxTextAttr_HasFont, 1787). --define(wxTextAttr_HasTextColour, 1788). --define(wxTextAttr_GetFlags, 1789). --define(wxTextAttr_IsDefault, 1790). --define(wxTextAttr_SetAlignment, 1791). --define(wxTextAttr_SetBackgroundColour, 1792). --define(wxTextAttr_SetFlags, 1793). --define(wxTextAttr_SetFont, 1794). --define(wxTextAttr_SetLeftIndent, 1795). --define(wxTextAttr_SetRightIndent, 1796). --define(wxTextAttr_SetTabs, 1797). --define(wxTextAttr_SetTextColour, 1798). --define(wxTextAttr_destroy, 1799). --define(wxTextCtrl_new_3, 1801). --define(wxTextCtrl_new_0, 1802). --define(wxTextCtrl_destruct, 1804). --define(wxTextCtrl_AppendText, 1805). --define(wxTextCtrl_CanCopy, 1806). --define(wxTextCtrl_CanCut, 1807). --define(wxTextCtrl_CanPaste, 1808). --define(wxTextCtrl_CanRedo, 1809). --define(wxTextCtrl_CanUndo, 1810). --define(wxTextCtrl_Clear, 1811). --define(wxTextCtrl_Copy, 1812). --define(wxTextCtrl_Create, 1813). --define(wxTextCtrl_Cut, 1814). --define(wxTextCtrl_DiscardEdits, 1815). --define(wxTextCtrl_EmulateKeyPress, 1816). --define(wxTextCtrl_GetDefaultStyle, 1817). --define(wxTextCtrl_GetInsertionPoint, 1818). --define(wxTextCtrl_GetLastPosition, 1819). --define(wxTextCtrl_GetLineLength, 1820). --define(wxTextCtrl_GetLineText, 1821). --define(wxTextCtrl_GetNumberOfLines, 1822). --define(wxTextCtrl_GetRange, 1823). --define(wxTextCtrl_GetSelection, 1824). --define(wxTextCtrl_GetStringSelection, 1825). --define(wxTextCtrl_GetStyle, 1826). --define(wxTextCtrl_GetValue, 1827). --define(wxTextCtrl_IsEditable, 1828). --define(wxTextCtrl_IsModified, 1829). --define(wxTextCtrl_IsMultiLine, 1830). --define(wxTextCtrl_IsSingleLine, 1831). --define(wxTextCtrl_LoadFile, 1832). --define(wxTextCtrl_MarkDirty, 1833). --define(wxTextCtrl_Paste, 1834). --define(wxTextCtrl_PositionToXY, 1835). --define(wxTextCtrl_Redo, 1836). --define(wxTextCtrl_Remove, 1837). --define(wxTextCtrl_Replace, 1838). --define(wxTextCtrl_SaveFile, 1839). --define(wxTextCtrl_SetDefaultStyle, 1840). --define(wxTextCtrl_SetEditable, 1841). --define(wxTextCtrl_SetInsertionPoint, 1842). --define(wxTextCtrl_SetInsertionPointEnd, 1843). --define(wxTextCtrl_SetMaxLength, 1845). --define(wxTextCtrl_SetSelection, 1846). --define(wxTextCtrl_SetStyle, 1847). --define(wxTextCtrl_SetValue, 1848). --define(wxTextCtrl_ShowPosition, 1849). --define(wxTextCtrl_Undo, 1850). --define(wxTextCtrl_WriteText, 1851). --define(wxTextCtrl_XYToPosition, 1852). --define(wxNotebook_new_0, 1855). --define(wxNotebook_new_3, 1856). --define(wxNotebook_destruct, 1857). --define(wxNotebook_AddPage, 1858). --define(wxNotebook_AdvanceSelection, 1859). --define(wxNotebook_AssignImageList, 1860). --define(wxNotebook_Create, 1861). --define(wxNotebook_DeleteAllPages, 1862). --define(wxNotebook_DeletePage, 1863). --define(wxNotebook_RemovePage, 1864). --define(wxNotebook_GetCurrentPage, 1865). --define(wxNotebook_GetImageList, 1866). --define(wxNotebook_GetPage, 1868). --define(wxNotebook_GetPageCount, 1869). --define(wxNotebook_GetPageImage, 1870). --define(wxNotebook_GetPageText, 1871). --define(wxNotebook_GetRowCount, 1872). --define(wxNotebook_GetSelection, 1873). --define(wxNotebook_GetThemeBackgroundColour, 1874). --define(wxNotebook_HitTest, 1876). --define(wxNotebook_InsertPage, 1878). --define(wxNotebook_SetImageList, 1879). --define(wxNotebook_SetPadding, 1880). --define(wxNotebook_SetPageSize, 1881). --define(wxNotebook_SetPageImage, 1882). --define(wxNotebook_SetPageText, 1883). --define(wxNotebook_SetSelection, 1884). --define(wxNotebook_ChangeSelection, 1885). --define(wxChoicebook_new_0, 1886). --define(wxChoicebook_new_3, 1887). --define(wxChoicebook_AddPage, 1888). --define(wxChoicebook_AdvanceSelection, 1889). --define(wxChoicebook_AssignImageList, 1890). --define(wxChoicebook_Create, 1891). --define(wxChoicebook_DeleteAllPages, 1892). --define(wxChoicebook_DeletePage, 1893). --define(wxChoicebook_RemovePage, 1894). --define(wxChoicebook_GetCurrentPage, 1895). --define(wxChoicebook_GetImageList, 1896). --define(wxChoicebook_GetPage, 1898). --define(wxChoicebook_GetPageCount, 1899). --define(wxChoicebook_GetPageImage, 1900). --define(wxChoicebook_GetPageText, 1901). --define(wxChoicebook_GetSelection, 1902). --define(wxChoicebook_HitTest, 1903). --define(wxChoicebook_InsertPage, 1904). --define(wxChoicebook_SetImageList, 1905). --define(wxChoicebook_SetPageSize, 1906). --define(wxChoicebook_SetPageImage, 1907). --define(wxChoicebook_SetPageText, 1908). --define(wxChoicebook_SetSelection, 1909). --define(wxChoicebook_ChangeSelection, 1910). --define(wxChoicebook_destroy, 1911). --define(wxToolbook_new_0, 1912). --define(wxToolbook_new_3, 1913). --define(wxToolbook_AddPage, 1914). --define(wxToolbook_AdvanceSelection, 1915). --define(wxToolbook_AssignImageList, 1916). --define(wxToolbook_Create, 1917). --define(wxToolbook_DeleteAllPages, 1918). --define(wxToolbook_DeletePage, 1919). --define(wxToolbook_RemovePage, 1920). --define(wxToolbook_GetCurrentPage, 1921). --define(wxToolbook_GetImageList, 1922). --define(wxToolbook_GetPage, 1924). --define(wxToolbook_GetPageCount, 1925). --define(wxToolbook_GetPageImage, 1926). --define(wxToolbook_GetPageText, 1927). --define(wxToolbook_GetSelection, 1928). --define(wxToolbook_HitTest, 1930). --define(wxToolbook_InsertPage, 1931). --define(wxToolbook_SetImageList, 1932). --define(wxToolbook_SetPageSize, 1933). --define(wxToolbook_SetPageImage, 1934). --define(wxToolbook_SetPageText, 1935). --define(wxToolbook_SetSelection, 1936). --define(wxToolbook_ChangeSelection, 1937). --define(wxToolbook_destroy, 1938). --define(wxListbook_new_0, 1939). --define(wxListbook_new_3, 1940). --define(wxListbook_AddPage, 1941). --define(wxListbook_AdvanceSelection, 1942). --define(wxListbook_AssignImageList, 1943). --define(wxListbook_Create, 1944). --define(wxListbook_DeleteAllPages, 1945). --define(wxListbook_DeletePage, 1946). --define(wxListbook_RemovePage, 1947). --define(wxListbook_GetCurrentPage, 1948). --define(wxListbook_GetImageList, 1949). --define(wxListbook_GetPage, 1951). --define(wxListbook_GetPageCount, 1952). --define(wxListbook_GetPageImage, 1953). --define(wxListbook_GetPageText, 1954). --define(wxListbook_GetSelection, 1955). --define(wxListbook_HitTest, 1957). --define(wxListbook_InsertPage, 1958). --define(wxListbook_SetImageList, 1959). --define(wxListbook_SetPageSize, 1960). --define(wxListbook_SetPageImage, 1961). --define(wxListbook_SetPageText, 1962). --define(wxListbook_SetSelection, 1963). --define(wxListbook_ChangeSelection, 1964). --define(wxListbook_destroy, 1965). --define(wxTreebook_new_0, 1966). --define(wxTreebook_new_3, 1967). --define(wxTreebook_AddPage, 1968). --define(wxTreebook_AdvanceSelection, 1969). --define(wxTreebook_AssignImageList, 1970). --define(wxTreebook_Create, 1971). --define(wxTreebook_DeleteAllPages, 1972). --define(wxTreebook_DeletePage, 1973). --define(wxTreebook_RemovePage, 1974). --define(wxTreebook_GetCurrentPage, 1975). --define(wxTreebook_GetImageList, 1976). --define(wxTreebook_GetPage, 1978). --define(wxTreebook_GetPageCount, 1979). --define(wxTreebook_GetPageImage, 1980). --define(wxTreebook_GetPageText, 1981). --define(wxTreebook_GetSelection, 1982). --define(wxTreebook_ExpandNode, 1983). --define(wxTreebook_IsNodeExpanded, 1984). --define(wxTreebook_HitTest, 1986). --define(wxTreebook_InsertPage, 1987). --define(wxTreebook_InsertSubPage, 1988). --define(wxTreebook_SetImageList, 1989). --define(wxTreebook_SetPageSize, 1990). --define(wxTreebook_SetPageImage, 1991). --define(wxTreebook_SetPageText, 1992). --define(wxTreebook_SetSelection, 1993). --define(wxTreebook_ChangeSelection, 1994). --define(wxTreebook_destroy, 1995). --define(wxTreeCtrl_new_2, 1998). --define(wxTreeCtrl_new_0, 1999). --define(wxTreeCtrl_destruct, 2001). --define(wxTreeCtrl_AddRoot, 2002). --define(wxTreeCtrl_AppendItem, 2003). --define(wxTreeCtrl_AssignImageList, 2004). --define(wxTreeCtrl_AssignStateImageList, 2005). --define(wxTreeCtrl_Collapse, 2006). --define(wxTreeCtrl_CollapseAndReset, 2007). --define(wxTreeCtrl_Create, 2008). --define(wxTreeCtrl_Delete, 2009). --define(wxTreeCtrl_DeleteAllItems, 2010). --define(wxTreeCtrl_DeleteChildren, 2011). --define(wxTreeCtrl_EnsureVisible, 2012). --define(wxTreeCtrl_Expand, 2013). --define(wxTreeCtrl_GetBoundingRect, 2014). --define(wxTreeCtrl_GetChildrenCount, 2016). --define(wxTreeCtrl_GetCount, 2017). --define(wxTreeCtrl_GetEditControl, 2018). --define(wxTreeCtrl_GetFirstChild, 2019). --define(wxTreeCtrl_GetNextChild, 2020). --define(wxTreeCtrl_GetFirstVisibleItem, 2021). --define(wxTreeCtrl_GetImageList, 2022). --define(wxTreeCtrl_GetIndent, 2023). --define(wxTreeCtrl_GetItemBackgroundColour, 2024). --define(wxTreeCtrl_GetItemData, 2025). --define(wxTreeCtrl_GetItemFont, 2026). --define(wxTreeCtrl_GetItemImage_1, 2027). --define(wxTreeCtrl_GetItemImage_2, 2028). --define(wxTreeCtrl_GetItemText, 2029). --define(wxTreeCtrl_GetItemTextColour, 2030). --define(wxTreeCtrl_GetLastChild, 2031). --define(wxTreeCtrl_GetNextSibling, 2032). --define(wxTreeCtrl_GetNextVisible, 2033). --define(wxTreeCtrl_GetItemParent, 2034). --define(wxTreeCtrl_GetPrevSibling, 2035). --define(wxTreeCtrl_GetPrevVisible, 2036). --define(wxTreeCtrl_GetRootItem, 2037). --define(wxTreeCtrl_GetSelection, 2038). --define(wxTreeCtrl_GetSelections, 2039). --define(wxTreeCtrl_GetStateImageList, 2040). --define(wxTreeCtrl_HitTest, 2041). --define(wxTreeCtrl_InsertItem, 2043). --define(wxTreeCtrl_IsBold, 2044). --define(wxTreeCtrl_IsExpanded, 2045). --define(wxTreeCtrl_IsSelected, 2046). --define(wxTreeCtrl_IsVisible, 2047). --define(wxTreeCtrl_ItemHasChildren, 2048). --define(wxTreeCtrl_PrependItem, 2049). --define(wxTreeCtrl_ScrollTo, 2050). --define(wxTreeCtrl_SelectItem_1, 2051). --define(wxTreeCtrl_SelectItem_2, 2052). --define(wxTreeCtrl_SetIndent, 2053). --define(wxTreeCtrl_SetImageList, 2054). --define(wxTreeCtrl_SetItemBackgroundColour, 2055). --define(wxTreeCtrl_SetItemBold, 2056). --define(wxTreeCtrl_SetItemData, 2057). --define(wxTreeCtrl_SetItemDropHighlight, 2058). --define(wxTreeCtrl_SetItemFont, 2059). --define(wxTreeCtrl_SetItemHasChildren, 2060). --define(wxTreeCtrl_SetItemImage_2, 2061). --define(wxTreeCtrl_SetItemImage_3, 2062). --define(wxTreeCtrl_SetItemText, 2063). --define(wxTreeCtrl_SetItemTextColour, 2064). --define(wxTreeCtrl_SetStateImageList, 2065). --define(wxTreeCtrl_SetWindowStyle, 2066). --define(wxTreeCtrl_SortChildren, 2067). --define(wxTreeCtrl_Toggle, 2068). --define(wxTreeCtrl_ToggleItemSelection, 2069). --define(wxTreeCtrl_Unselect, 2070). --define(wxTreeCtrl_UnselectAll, 2071). --define(wxTreeCtrl_UnselectItem, 2072). --define(wxScrollBar_new_0, 2073). --define(wxScrollBar_new_3, 2074). --define(wxScrollBar_destruct, 2075). --define(wxScrollBar_Create, 2076). --define(wxScrollBar_GetRange, 2077). --define(wxScrollBar_GetPageSize, 2078). --define(wxScrollBar_GetThumbPosition, 2079). --define(wxScrollBar_GetThumbSize, 2080). --define(wxScrollBar_SetThumbPosition, 2081). --define(wxScrollBar_SetScrollbar, 2082). --define(wxSpinButton_new_2, 2084). --define(wxSpinButton_new_0, 2085). --define(wxSpinButton_Create, 2086). --define(wxSpinButton_GetMax, 2087). --define(wxSpinButton_GetMin, 2088). --define(wxSpinButton_GetValue, 2089). --define(wxSpinButton_SetRange, 2090). --define(wxSpinButton_SetValue, 2091). --define(wxSpinButton_destroy, 2092). --define(wxSpinCtrl_new_0, 2093). --define(wxSpinCtrl_new_2, 2094). --define(wxSpinCtrl_Create, 2096). --define(wxSpinCtrl_SetValue_1_1, 2099). --define(wxSpinCtrl_SetValue_1_0, 2100). --define(wxSpinCtrl_GetValue, 2102). --define(wxSpinCtrl_SetRange, 2104). --define(wxSpinCtrl_SetSelection, 2105). --define(wxSpinCtrl_GetMin, 2107). --define(wxSpinCtrl_GetMax, 2109). --define(wxSpinCtrl_destroy, 2110). --define(wxStaticText_new_0, 2111). --define(wxStaticText_new_4, 2112). --define(wxStaticText_Create, 2113). --define(wxStaticText_GetLabel, 2114). --define(wxStaticText_SetLabel, 2115). --define(wxStaticText_Wrap, 2116). --define(wxStaticText_destroy, 2117). --define(wxStaticBitmap_new_0, 2118). --define(wxStaticBitmap_new_4, 2119). --define(wxStaticBitmap_Create, 2120). --define(wxStaticBitmap_GetBitmap, 2121). --define(wxStaticBitmap_SetBitmap, 2122). --define(wxStaticBitmap_destroy, 2123). --define(wxRadioBox_new, 2124). --define(wxRadioBox_destruct, 2126). --define(wxRadioBox_Create, 2127). --define(wxRadioBox_Enable_2, 2128). --define(wxRadioBox_Enable_1, 2129). --define(wxRadioBox_GetSelection, 2130). --define(wxRadioBox_GetString, 2131). --define(wxRadioBox_SetSelection, 2132). --define(wxRadioBox_Show_2, 2133). --define(wxRadioBox_Show_1, 2134). --define(wxRadioBox_GetColumnCount, 2135). --define(wxRadioBox_GetItemHelpText, 2136). --define(wxRadioBox_GetItemToolTip, 2137). --define(wxRadioBox_GetItemFromPoint, 2139). --define(wxRadioBox_GetRowCount, 2140). --define(wxRadioBox_IsItemEnabled, 2141). --define(wxRadioBox_IsItemShown, 2142). --define(wxRadioBox_SetItemHelpText, 2143). --define(wxRadioBox_SetItemToolTip, 2144). --define(wxRadioButton_new_0, 2145). --define(wxRadioButton_new_4, 2146). --define(wxRadioButton_Create, 2147). --define(wxRadioButton_GetValue, 2148). --define(wxRadioButton_SetValue, 2149). --define(wxRadioButton_destroy, 2150). --define(wxSlider_new_6, 2152). --define(wxSlider_new_0, 2153). --define(wxSlider_Create, 2154). --define(wxSlider_GetLineSize, 2155). --define(wxSlider_GetMax, 2156). --define(wxSlider_GetMin, 2157). --define(wxSlider_GetPageSize, 2158). --define(wxSlider_GetThumbLength, 2159). --define(wxSlider_GetValue, 2160). --define(wxSlider_SetLineSize, 2161). --define(wxSlider_SetPageSize, 2162). --define(wxSlider_SetRange, 2163). --define(wxSlider_SetThumbLength, 2164). --define(wxSlider_SetValue, 2165). --define(wxSlider_destroy, 2166). --define(wxDialog_new_4, 2168). --define(wxDialog_new_0, 2169). --define(wxDialog_destruct, 2171). --define(wxDialog_Create, 2172). --define(wxDialog_CreateButtonSizer, 2173). --define(wxDialog_CreateStdDialogButtonSizer, 2174). --define(wxDialog_EndModal, 2175). --define(wxDialog_GetAffirmativeId, 2176). --define(wxDialog_GetReturnCode, 2177). --define(wxDialog_IsModal, 2178). --define(wxDialog_SetAffirmativeId, 2179). --define(wxDialog_SetReturnCode, 2180). --define(wxDialog_Show, 2181). --define(wxDialog_ShowModal, 2182). --define(wxColourDialog_new_0, 2183). --define(wxColourDialog_new_2, 2184). --define(wxColourDialog_destruct, 2185). --define(wxColourDialog_Create, 2186). --define(wxColourDialog_GetColourData, 2187). --define(wxColourData_new_0, 2188). --define(wxColourData_new_1, 2189). --define(wxColourData_destruct, 2190). --define(wxColourData_GetChooseFull, 2191). --define(wxColourData_GetColour, 2192). --define(wxColourData_GetCustomColour, 2194). --define(wxColourData_SetChooseFull, 2195). --define(wxColourData_SetColour, 2196). --define(wxColourData_SetCustomColour, 2197). --define(wxPalette_new_0, 2198). --define(wxPalette_new_4, 2199). --define(wxPalette_destruct, 2201). --define(wxPalette_Create, 2202). --define(wxPalette_GetColoursCount, 2203). --define(wxPalette_GetPixel, 2204). --define(wxPalette_GetRGB, 2205). --define(wxPalette_IsOk, 2206). --define(wxDirDialog_new, 2210). --define(wxDirDialog_destruct, 2211). --define(wxDirDialog_GetPath, 2212). --define(wxDirDialog_GetMessage, 2213). --define(wxDirDialog_SetMessage, 2214). --define(wxDirDialog_SetPath, 2215). --define(wxFileDialog_new, 2219). --define(wxFileDialog_destruct, 2220). --define(wxFileDialog_GetDirectory, 2221). --define(wxFileDialog_GetFilename, 2222). --define(wxFileDialog_GetFilenames, 2223). --define(wxFileDialog_GetFilterIndex, 2224). --define(wxFileDialog_GetMessage, 2225). --define(wxFileDialog_GetPath, 2226). --define(wxFileDialog_GetPaths, 2227). --define(wxFileDialog_GetWildcard, 2228). --define(wxFileDialog_SetDirectory, 2229). --define(wxFileDialog_SetFilename, 2230). --define(wxFileDialog_SetFilterIndex, 2231). --define(wxFileDialog_SetMessage, 2232). --define(wxFileDialog_SetPath, 2233). --define(wxFileDialog_SetWildcard, 2234). --define(wxPickerBase_SetInternalMargin, 2235). --define(wxPickerBase_GetInternalMargin, 2236). --define(wxPickerBase_SetTextCtrlProportion, 2237). --define(wxPickerBase_SetPickerCtrlProportion, 2238). --define(wxPickerBase_GetTextCtrlProportion, 2239). --define(wxPickerBase_GetPickerCtrlProportion, 2240). --define(wxPickerBase_HasTextCtrl, 2241). --define(wxPickerBase_GetTextCtrl, 2242). --define(wxPickerBase_IsTextCtrlGrowable, 2243). --define(wxPickerBase_SetPickerCtrlGrowable, 2244). --define(wxPickerBase_SetTextCtrlGrowable, 2245). --define(wxPickerBase_IsPickerCtrlGrowable, 2246). --define(wxFilePickerCtrl_new_0, 2247). --define(wxFilePickerCtrl_new_3, 2248). --define(wxFilePickerCtrl_Create, 2249). --define(wxFilePickerCtrl_GetPath, 2250). --define(wxFilePickerCtrl_SetPath, 2251). --define(wxFilePickerCtrl_destroy, 2252). --define(wxDirPickerCtrl_new_0, 2253). --define(wxDirPickerCtrl_new_3, 2254). --define(wxDirPickerCtrl_Create, 2255). --define(wxDirPickerCtrl_GetPath, 2256). --define(wxDirPickerCtrl_SetPath, 2257). --define(wxDirPickerCtrl_destroy, 2258). --define(wxColourPickerCtrl_new_0, 2259). --define(wxColourPickerCtrl_new_3, 2260). --define(wxColourPickerCtrl_Create, 2261). --define(wxColourPickerCtrl_GetColour, 2262). --define(wxColourPickerCtrl_SetColour_1_1, 2263). --define(wxColourPickerCtrl_SetColour_1_0, 2264). --define(wxColourPickerCtrl_destroy, 2265). --define(wxDatePickerCtrl_new_0, 2266). --define(wxDatePickerCtrl_new_3, 2267). --define(wxDatePickerCtrl_GetRange, 2268). --define(wxDatePickerCtrl_GetValue, 2269). --define(wxDatePickerCtrl_SetRange, 2270). --define(wxDatePickerCtrl_SetValue, 2271). --define(wxDatePickerCtrl_destroy, 2272). --define(wxFontPickerCtrl_new_0, 2273). --define(wxFontPickerCtrl_new_3, 2274). --define(wxFontPickerCtrl_Create, 2275). --define(wxFontPickerCtrl_GetSelectedFont, 2276). --define(wxFontPickerCtrl_SetSelectedFont, 2277). --define(wxFontPickerCtrl_GetMaxPointSize, 2278). --define(wxFontPickerCtrl_SetMaxPointSize, 2279). --define(wxFontPickerCtrl_destroy, 2280). --define(wxFindReplaceDialog_new_0, 2283). --define(wxFindReplaceDialog_new_4, 2284). --define(wxFindReplaceDialog_destruct, 2285). --define(wxFindReplaceDialog_Create, 2286). --define(wxFindReplaceDialog_GetData, 2287). --define(wxFindReplaceData_new_0, 2288). --define(wxFindReplaceData_new_1, 2289). --define(wxFindReplaceData_GetFindString, 2290). --define(wxFindReplaceData_GetReplaceString, 2291). --define(wxFindReplaceData_GetFlags, 2292). --define(wxFindReplaceData_SetFlags, 2293). --define(wxFindReplaceData_SetFindString, 2294). --define(wxFindReplaceData_SetReplaceString, 2295). --define(wxFindReplaceData_destroy, 2296). --define(wxMultiChoiceDialog_new_0, 2297). --define(wxMultiChoiceDialog_new_5, 2299). --define(wxMultiChoiceDialog_GetSelections, 2300). --define(wxMultiChoiceDialog_SetSelections, 2301). --define(wxMultiChoiceDialog_destroy, 2302). --define(wxSingleChoiceDialog_new_0, 2303). --define(wxSingleChoiceDialog_new_5, 2305). --define(wxSingleChoiceDialog_GetSelection, 2306). --define(wxSingleChoiceDialog_GetStringSelection, 2307). --define(wxSingleChoiceDialog_SetSelection, 2308). --define(wxSingleChoiceDialog_destroy, 2309). --define(wxTextEntryDialog_new, 2310). --define(wxTextEntryDialog_GetValue, 2311). --define(wxTextEntryDialog_SetValue, 2312). --define(wxTextEntryDialog_destroy, 2313). --define(wxPasswordEntryDialog_new, 2314). --define(wxPasswordEntryDialog_destroy, 2315). --define(wxFontData_new_0, 2316). --define(wxFontData_new_1, 2317). --define(wxFontData_destruct, 2318). --define(wxFontData_EnableEffects, 2319). --define(wxFontData_GetAllowSymbols, 2320). --define(wxFontData_GetColour, 2321). --define(wxFontData_GetChosenFont, 2322). --define(wxFontData_GetEnableEffects, 2323). --define(wxFontData_GetInitialFont, 2324). --define(wxFontData_GetShowHelp, 2325). --define(wxFontData_SetAllowSymbols, 2326). --define(wxFontData_SetChosenFont, 2327). --define(wxFontData_SetColour, 2328). --define(wxFontData_SetInitialFont, 2329). --define(wxFontData_SetRange, 2330). --define(wxFontData_SetShowHelp, 2331). --define(wxFontDialog_new_0, 2335). --define(wxFontDialog_new_2, 2337). --define(wxFontDialog_Create, 2339). --define(wxFontDialog_GetFontData, 2340). --define(wxFontDialog_destroy, 2342). --define(wxProgressDialog_new, 2343). --define(wxProgressDialog_destruct, 2344). --define(wxProgressDialog_Resume, 2345). --define(wxProgressDialog_Update_2, 2346). --define(wxProgressDialog_Update_0, 2347). --define(wxMessageDialog_new, 2348). --define(wxMessageDialog_destruct, 2349). --define(wxPageSetupDialog_new, 2350). --define(wxPageSetupDialog_destruct, 2351). --define(wxPageSetupDialog_GetPageSetupData, 2352). --define(wxPageSetupDialog_ShowModal, 2353). --define(wxPageSetupDialogData_new_0, 2354). --define(wxPageSetupDialogData_new_1_0, 2355). --define(wxPageSetupDialogData_new_1_1, 2356). --define(wxPageSetupDialogData_destruct, 2357). --define(wxPageSetupDialogData_EnableHelp, 2358). --define(wxPageSetupDialogData_EnableMargins, 2359). --define(wxPageSetupDialogData_EnableOrientation, 2360). --define(wxPageSetupDialogData_EnablePaper, 2361). --define(wxPageSetupDialogData_EnablePrinter, 2362). --define(wxPageSetupDialogData_GetDefaultMinMargins, 2363). --define(wxPageSetupDialogData_GetEnableMargins, 2364). --define(wxPageSetupDialogData_GetEnableOrientation, 2365). --define(wxPageSetupDialogData_GetEnablePaper, 2366). --define(wxPageSetupDialogData_GetEnablePrinter, 2367). --define(wxPageSetupDialogData_GetEnableHelp, 2368). --define(wxPageSetupDialogData_GetDefaultInfo, 2369). --define(wxPageSetupDialogData_GetMarginTopLeft, 2370). --define(wxPageSetupDialogData_GetMarginBottomRight, 2371). --define(wxPageSetupDialogData_GetMinMarginTopLeft, 2372). --define(wxPageSetupDialogData_GetMinMarginBottomRight, 2373). --define(wxPageSetupDialogData_GetPaperId, 2374). --define(wxPageSetupDialogData_GetPaperSize, 2375). --define(wxPageSetupDialogData_GetPrintData, 2377). --define(wxPageSetupDialogData_IsOk, 2378). --define(wxPageSetupDialogData_SetDefaultInfo, 2379). --define(wxPageSetupDialogData_SetDefaultMinMargins, 2380). --define(wxPageSetupDialogData_SetMarginTopLeft, 2381). --define(wxPageSetupDialogData_SetMarginBottomRight, 2382). --define(wxPageSetupDialogData_SetMinMarginTopLeft, 2383). --define(wxPageSetupDialogData_SetMinMarginBottomRight, 2384). --define(wxPageSetupDialogData_SetPaperId, 2385). --define(wxPageSetupDialogData_SetPaperSize_1_1, 2386). --define(wxPageSetupDialogData_SetPaperSize_1_0, 2387). --define(wxPageSetupDialogData_SetPrintData, 2388). --define(wxPrintDialog_new_2_0, 2389). --define(wxPrintDialog_new_2_1, 2390). --define(wxPrintDialog_destruct, 2391). --define(wxPrintDialog_GetPrintDialogData, 2392). --define(wxPrintDialog_GetPrintDC, 2393). --define(wxPrintDialogData_new_0, 2394). --define(wxPrintDialogData_new_1_1, 2395). --define(wxPrintDialogData_new_1_0, 2396). --define(wxPrintDialogData_destruct, 2397). --define(wxPrintDialogData_EnableHelp, 2398). --define(wxPrintDialogData_EnablePageNumbers, 2399). --define(wxPrintDialogData_EnablePrintToFile, 2400). --define(wxPrintDialogData_EnableSelection, 2401). --define(wxPrintDialogData_GetAllPages, 2402). --define(wxPrintDialogData_GetCollate, 2403). --define(wxPrintDialogData_GetFromPage, 2404). --define(wxPrintDialogData_GetMaxPage, 2405). --define(wxPrintDialogData_GetMinPage, 2406). --define(wxPrintDialogData_GetNoCopies, 2407). --define(wxPrintDialogData_GetPrintData, 2408). --define(wxPrintDialogData_GetPrintToFile, 2409). --define(wxPrintDialogData_GetSelection, 2410). --define(wxPrintDialogData_GetToPage, 2411). --define(wxPrintDialogData_IsOk, 2412). --define(wxPrintDialogData_SetCollate, 2413). --define(wxPrintDialogData_SetFromPage, 2414). --define(wxPrintDialogData_SetMaxPage, 2415). --define(wxPrintDialogData_SetMinPage, 2416). --define(wxPrintDialogData_SetNoCopies, 2417). --define(wxPrintDialogData_SetPrintData, 2418). --define(wxPrintDialogData_SetPrintToFile, 2419). --define(wxPrintDialogData_SetSelection, 2420). --define(wxPrintDialogData_SetToPage, 2421). --define(wxPrintData_new_0, 2422). --define(wxPrintData_new_1, 2423). --define(wxPrintData_destruct, 2424). --define(wxPrintData_GetCollate, 2425). --define(wxPrintData_GetBin, 2426). --define(wxPrintData_GetColour, 2427). --define(wxPrintData_GetDuplex, 2428). --define(wxPrintData_GetNoCopies, 2429). --define(wxPrintData_GetOrientation, 2430). --define(wxPrintData_GetPaperId, 2431). --define(wxPrintData_GetPrinterName, 2432). --define(wxPrintData_GetQuality, 2433). --define(wxPrintData_IsOk, 2434). --define(wxPrintData_SetBin, 2435). --define(wxPrintData_SetCollate, 2436). --define(wxPrintData_SetColour, 2437). --define(wxPrintData_SetDuplex, 2438). --define(wxPrintData_SetNoCopies, 2439). --define(wxPrintData_SetOrientation, 2440). --define(wxPrintData_SetPaperId, 2441). --define(wxPrintData_SetPrinterName, 2442). --define(wxPrintData_SetQuality, 2443). --define(wxPrintPreview_new_2, 2446). --define(wxPrintPreview_new_3, 2447). --define(wxPrintPreview_destruct, 2449). --define(wxPrintPreview_GetCanvas, 2450). --define(wxPrintPreview_GetCurrentPage, 2451). --define(wxPrintPreview_GetFrame, 2452). --define(wxPrintPreview_GetMaxPage, 2453). --define(wxPrintPreview_GetMinPage, 2454). --define(wxPrintPreview_GetPrintout, 2455). --define(wxPrintPreview_GetPrintoutForPrinting, 2456). --define(wxPrintPreview_IsOk, 2457). --define(wxPrintPreview_PaintPage, 2458). --define(wxPrintPreview_Print, 2459). --define(wxPrintPreview_RenderPage, 2460). --define(wxPrintPreview_SetCanvas, 2461). --define(wxPrintPreview_SetCurrentPage, 2462). --define(wxPrintPreview_SetFrame, 2463). --define(wxPrintPreview_SetPrintout, 2464). --define(wxPrintPreview_SetZoom, 2465). --define(wxPreviewFrame_new, 2466). --define(wxPreviewFrame_destruct, 2467). --define(wxPreviewFrame_CreateControlBar, 2468). --define(wxPreviewFrame_CreateCanvas, 2469). --define(wxPreviewFrame_Initialize, 2470). --define(wxPreviewFrame_OnCloseWindow, 2471). --define(wxPreviewControlBar_new, 2472). --define(wxPreviewControlBar_destruct, 2473). --define(wxPreviewControlBar_CreateButtons, 2474). --define(wxPreviewControlBar_GetPrintPreview, 2475). --define(wxPreviewControlBar_GetZoomControl, 2476). --define(wxPreviewControlBar_SetZoomControl, 2477). --define(wxPrinter_new, 2479). --define(wxPrinter_CreateAbortWindow, 2480). --define(wxPrinter_GetAbort, 2481). --define(wxPrinter_GetLastError, 2482). --define(wxPrinter_GetPrintDialogData, 2483). --define(wxPrinter_Print, 2484). --define(wxPrinter_PrintDialog, 2485). --define(wxPrinter_ReportError, 2486). --define(wxPrinter_Setup, 2487). --define(wxPrinter_destroy, 2488). --define(wxXmlResource_new_1, 2489). --define(wxXmlResource_new_2, 2490). --define(wxXmlResource_destruct, 2491). --define(wxXmlResource_AttachUnknownControl, 2492). --define(wxXmlResource_ClearHandlers, 2493). --define(wxXmlResource_CompareVersion, 2494). --define(wxXmlResource_Get, 2495). --define(wxXmlResource_GetFlags, 2496). --define(wxXmlResource_GetVersion, 2497). --define(wxXmlResource_GetXRCID, 2498). --define(wxXmlResource_InitAllHandlers, 2499). --define(wxXmlResource_Load, 2500). --define(wxXmlResource_LoadBitmap, 2501). --define(wxXmlResource_LoadDialog_2, 2502). --define(wxXmlResource_LoadDialog_3, 2503). --define(wxXmlResource_LoadFrame_2, 2504). --define(wxXmlResource_LoadFrame_3, 2505). --define(wxXmlResource_LoadIcon, 2506). --define(wxXmlResource_LoadMenu, 2507). --define(wxXmlResource_LoadMenuBar_2, 2508). --define(wxXmlResource_LoadMenuBar_1, 2509). --define(wxXmlResource_LoadPanel_2, 2510). --define(wxXmlResource_LoadPanel_3, 2511). --define(wxXmlResource_LoadToolBar, 2512). --define(wxXmlResource_Set, 2513). --define(wxXmlResource_SetFlags, 2514). --define(wxXmlResource_Unload, 2515). --define(wxXmlResource_xrcctrl, 2516). --define(wxHtmlEasyPrinting_new, 2517). --define(wxHtmlEasyPrinting_destruct, 2518). --define(wxHtmlEasyPrinting_GetPrintData, 2519). --define(wxHtmlEasyPrinting_GetPageSetupData, 2520). --define(wxHtmlEasyPrinting_PreviewFile, 2521). --define(wxHtmlEasyPrinting_PreviewText, 2522). --define(wxHtmlEasyPrinting_PrintFile, 2523). --define(wxHtmlEasyPrinting_PrintText, 2524). --define(wxHtmlEasyPrinting_PageSetup, 2525). --define(wxHtmlEasyPrinting_SetFonts, 2526). --define(wxHtmlEasyPrinting_SetHeader, 2527). --define(wxHtmlEasyPrinting_SetFooter, 2528). --define(wxGLCanvas_new_2, 2530). --define(wxGLCanvas_new_3_1, 2531). --define(wxGLCanvas_new_3_0, 2532). --define(wxGLCanvas_GetContext, 2533). --define(wxGLCanvas_SetCurrent, 2535). --define(wxGLCanvas_SwapBuffers, 2536). --define(wxGLCanvas_destroy, 2537). --define(wxAuiManager_new, 2538). --define(wxAuiManager_destruct, 2539). --define(wxAuiManager_AddPane_2_1, 2540). --define(wxAuiManager_AddPane_3, 2541). --define(wxAuiManager_AddPane_2_0, 2542). --define(wxAuiManager_DetachPane, 2543). --define(wxAuiManager_GetAllPanes, 2544). --define(wxAuiManager_GetArtProvider, 2545). --define(wxAuiManager_GetDockSizeConstraint, 2546). --define(wxAuiManager_GetFlags, 2547). --define(wxAuiManager_GetManagedWindow, 2548). --define(wxAuiManager_GetManager, 2549). --define(wxAuiManager_GetPane_1_1, 2550). --define(wxAuiManager_GetPane_1_0, 2551). --define(wxAuiManager_HideHint, 2552). --define(wxAuiManager_InsertPane, 2553). --define(wxAuiManager_LoadPaneInfo, 2554). --define(wxAuiManager_LoadPerspective, 2555). --define(wxAuiManager_SavePaneInfo, 2556). --define(wxAuiManager_SavePerspective, 2557). --define(wxAuiManager_SetArtProvider, 2558). --define(wxAuiManager_SetDockSizeConstraint, 2559). --define(wxAuiManager_SetFlags, 2560). --define(wxAuiManager_SetManagedWindow, 2561). --define(wxAuiManager_ShowHint, 2562). --define(wxAuiManager_UnInit, 2563). --define(wxAuiManager_Update, 2564). --define(wxAuiPaneInfo_new_0, 2565). --define(wxAuiPaneInfo_new_1, 2566). --define(wxAuiPaneInfo_destruct, 2567). --define(wxAuiPaneInfo_BestSize_1, 2568). --define(wxAuiPaneInfo_BestSize_2, 2569). --define(wxAuiPaneInfo_Bottom, 2570). --define(wxAuiPaneInfo_BottomDockable, 2571). --define(wxAuiPaneInfo_Caption, 2572). --define(wxAuiPaneInfo_CaptionVisible, 2573). --define(wxAuiPaneInfo_Centre, 2574). --define(wxAuiPaneInfo_CentrePane, 2575). --define(wxAuiPaneInfo_CloseButton, 2576). --define(wxAuiPaneInfo_DefaultPane, 2577). --define(wxAuiPaneInfo_DestroyOnClose, 2578). --define(wxAuiPaneInfo_Direction, 2579). --define(wxAuiPaneInfo_Dock, 2580). --define(wxAuiPaneInfo_Dockable, 2581). --define(wxAuiPaneInfo_Fixed, 2582). --define(wxAuiPaneInfo_Float, 2583). --define(wxAuiPaneInfo_Floatable, 2584). --define(wxAuiPaneInfo_FloatingPosition_1, 2585). --define(wxAuiPaneInfo_FloatingPosition_2, 2586). --define(wxAuiPaneInfo_FloatingSize_1, 2587). --define(wxAuiPaneInfo_FloatingSize_2, 2588). --define(wxAuiPaneInfo_Gripper, 2589). --define(wxAuiPaneInfo_GripperTop, 2590). --define(wxAuiPaneInfo_HasBorder, 2591). --define(wxAuiPaneInfo_HasCaption, 2592). --define(wxAuiPaneInfo_HasCloseButton, 2593). --define(wxAuiPaneInfo_HasFlag, 2594). --define(wxAuiPaneInfo_HasGripper, 2595). --define(wxAuiPaneInfo_HasGripperTop, 2596). --define(wxAuiPaneInfo_HasMaximizeButton, 2597). --define(wxAuiPaneInfo_HasMinimizeButton, 2598). --define(wxAuiPaneInfo_HasPinButton, 2599). --define(wxAuiPaneInfo_Hide, 2600). --define(wxAuiPaneInfo_IsBottomDockable, 2601). --define(wxAuiPaneInfo_IsDocked, 2602). --define(wxAuiPaneInfo_IsFixed, 2603). --define(wxAuiPaneInfo_IsFloatable, 2604). --define(wxAuiPaneInfo_IsFloating, 2605). --define(wxAuiPaneInfo_IsLeftDockable, 2606). --define(wxAuiPaneInfo_IsMovable, 2607). --define(wxAuiPaneInfo_IsOk, 2608). --define(wxAuiPaneInfo_IsResizable, 2609). --define(wxAuiPaneInfo_IsRightDockable, 2610). --define(wxAuiPaneInfo_IsShown, 2611). --define(wxAuiPaneInfo_IsToolbar, 2612). --define(wxAuiPaneInfo_IsTopDockable, 2613). --define(wxAuiPaneInfo_Layer, 2614). --define(wxAuiPaneInfo_Left, 2615). --define(wxAuiPaneInfo_LeftDockable, 2616). --define(wxAuiPaneInfo_MaxSize_1, 2617). --define(wxAuiPaneInfo_MaxSize_2, 2618). --define(wxAuiPaneInfo_MaximizeButton, 2619). --define(wxAuiPaneInfo_MinSize_1, 2620). --define(wxAuiPaneInfo_MinSize_2, 2621). --define(wxAuiPaneInfo_MinimizeButton, 2622). --define(wxAuiPaneInfo_Movable, 2623). --define(wxAuiPaneInfo_Name, 2624). --define(wxAuiPaneInfo_PaneBorder, 2625). --define(wxAuiPaneInfo_PinButton, 2626). --define(wxAuiPaneInfo_Position, 2627). --define(wxAuiPaneInfo_Resizable, 2628). --define(wxAuiPaneInfo_Right, 2629). --define(wxAuiPaneInfo_RightDockable, 2630). --define(wxAuiPaneInfo_Row, 2631). --define(wxAuiPaneInfo_SafeSet, 2632). --define(wxAuiPaneInfo_SetFlag, 2633). --define(wxAuiPaneInfo_Show, 2634). --define(wxAuiPaneInfo_ToolbarPane, 2635). --define(wxAuiPaneInfo_Top, 2636). --define(wxAuiPaneInfo_TopDockable, 2637). --define(wxAuiPaneInfo_Window, 2638). --define(wxAuiNotebook_new_0, 2639). --define(wxAuiNotebook_new_2, 2640). --define(wxAuiNotebook_AddPage, 2641). --define(wxAuiNotebook_Create, 2642). --define(wxAuiNotebook_DeletePage, 2643). --define(wxAuiNotebook_GetArtProvider, 2644). --define(wxAuiNotebook_GetPage, 2645). --define(wxAuiNotebook_GetPageBitmap, 2646). --define(wxAuiNotebook_GetPageCount, 2647). --define(wxAuiNotebook_GetPageIndex, 2648). --define(wxAuiNotebook_GetPageText, 2649). --define(wxAuiNotebook_GetSelection, 2650). --define(wxAuiNotebook_InsertPage, 2651). --define(wxAuiNotebook_RemovePage, 2652). --define(wxAuiNotebook_SetArtProvider, 2653). --define(wxAuiNotebook_SetFont, 2654). --define(wxAuiNotebook_SetPageBitmap, 2655). --define(wxAuiNotebook_SetPageText, 2656). --define(wxAuiNotebook_SetSelection, 2657). --define(wxAuiNotebook_SetTabCtrlHeight, 2658). --define(wxAuiNotebook_SetUniformBitmapSize, 2659). --define(wxAuiNotebook_destroy, 2660). --define(wxMDIParentFrame_new_0, 2661). --define(wxMDIParentFrame_new_4, 2662). --define(wxMDIParentFrame_destruct, 2663). --define(wxMDIParentFrame_ActivateNext, 2664). --define(wxMDIParentFrame_ActivatePrevious, 2665). --define(wxMDIParentFrame_ArrangeIcons, 2666). --define(wxMDIParentFrame_Cascade, 2667). --define(wxMDIParentFrame_Create, 2668). --define(wxMDIParentFrame_GetActiveChild, 2669). --define(wxMDIParentFrame_GetClientWindow, 2670). --define(wxMDIParentFrame_Tile, 2671). --define(wxMDIChildFrame_new_0, 2672). --define(wxMDIChildFrame_new_4, 2673). --define(wxMDIChildFrame_destruct, 2674). --define(wxMDIChildFrame_Activate, 2675). --define(wxMDIChildFrame_Create, 2676). --define(wxMDIChildFrame_Maximize, 2677). --define(wxMDIChildFrame_Restore, 2678). --define(wxMDIClientWindow_new_0, 2679). --define(wxMDIClientWindow_new_2, 2680). --define(wxMDIClientWindow_destruct, 2681). --define(wxMDIClientWindow_CreateClient, 2682). --define(wxLayoutAlgorithm_new, 2683). --define(wxLayoutAlgorithm_LayoutFrame, 2684). --define(wxLayoutAlgorithm_LayoutMDIFrame, 2685). --define(wxLayoutAlgorithm_LayoutWindow, 2686). --define(wxLayoutAlgorithm_destroy, 2687). --define(wxEvent_GetId, 2688). --define(wxEvent_GetSkipped, 2689). --define(wxEvent_GetTimestamp, 2690). --define(wxEvent_IsCommandEvent, 2691). --define(wxEvent_ResumePropagation, 2692). --define(wxEvent_ShouldPropagate, 2693). --define(wxEvent_Skip, 2694). --define(wxEvent_StopPropagation, 2695). --define(wxCommandEvent_getClientData, 2696). --define(wxCommandEvent_GetExtraLong, 2697). --define(wxCommandEvent_GetInt, 2698). --define(wxCommandEvent_GetSelection, 2699). --define(wxCommandEvent_GetString, 2700). --define(wxCommandEvent_IsChecked, 2701). --define(wxCommandEvent_IsSelection, 2702). --define(wxCommandEvent_SetInt, 2703). --define(wxCommandEvent_SetString, 2704). --define(wxScrollEvent_GetOrientation, 2705). --define(wxScrollEvent_GetPosition, 2706). --define(wxScrollWinEvent_GetOrientation, 2707). --define(wxScrollWinEvent_GetPosition, 2708). --define(wxMouseEvent_AltDown, 2709). --define(wxMouseEvent_Button, 2710). --define(wxMouseEvent_ButtonDClick, 2711). --define(wxMouseEvent_ButtonDown, 2712). --define(wxMouseEvent_ButtonUp, 2713). --define(wxMouseEvent_CmdDown, 2714). --define(wxMouseEvent_ControlDown, 2715). --define(wxMouseEvent_Dragging, 2716). --define(wxMouseEvent_Entering, 2717). --define(wxMouseEvent_GetButton, 2718). --define(wxMouseEvent_GetPosition, 2721). --define(wxMouseEvent_GetLogicalPosition, 2722). --define(wxMouseEvent_GetLinesPerAction, 2723). --define(wxMouseEvent_GetWheelRotation, 2724). --define(wxMouseEvent_GetWheelDelta, 2725). --define(wxMouseEvent_GetX, 2726). --define(wxMouseEvent_GetY, 2727). --define(wxMouseEvent_IsButton, 2728). --define(wxMouseEvent_IsPageScroll, 2729). --define(wxMouseEvent_Leaving, 2730). --define(wxMouseEvent_LeftDClick, 2731). --define(wxMouseEvent_LeftDown, 2732). --define(wxMouseEvent_LeftIsDown, 2733). --define(wxMouseEvent_LeftUp, 2734). --define(wxMouseEvent_MetaDown, 2735). --define(wxMouseEvent_MiddleDClick, 2736). --define(wxMouseEvent_MiddleDown, 2737). --define(wxMouseEvent_MiddleIsDown, 2738). --define(wxMouseEvent_MiddleUp, 2739). --define(wxMouseEvent_Moving, 2740). --define(wxMouseEvent_RightDClick, 2741). --define(wxMouseEvent_RightDown, 2742). --define(wxMouseEvent_RightIsDown, 2743). --define(wxMouseEvent_RightUp, 2744). --define(wxMouseEvent_ShiftDown, 2745). --define(wxSetCursorEvent_GetCursor, 2746). --define(wxSetCursorEvent_GetX, 2747). --define(wxSetCursorEvent_GetY, 2748). --define(wxSetCursorEvent_HasCursor, 2749). --define(wxSetCursorEvent_SetCursor, 2750). --define(wxKeyEvent_AltDown, 2751). --define(wxKeyEvent_CmdDown, 2752). --define(wxKeyEvent_ControlDown, 2753). --define(wxKeyEvent_GetKeyCode, 2754). --define(wxKeyEvent_GetModifiers, 2755). --define(wxKeyEvent_GetPosition, 2758). --define(wxKeyEvent_GetRawKeyCode, 2759). --define(wxKeyEvent_GetRawKeyFlags, 2760). --define(wxKeyEvent_GetUnicodeKey, 2761). --define(wxKeyEvent_GetX, 2762). --define(wxKeyEvent_GetY, 2763). --define(wxKeyEvent_HasModifiers, 2764). --define(wxKeyEvent_MetaDown, 2765). --define(wxKeyEvent_ShiftDown, 2766). --define(wxSizeEvent_GetSize, 2767). --define(wxMoveEvent_GetPosition, 2768). --define(wxEraseEvent_GetDC, 2769). --define(wxFocusEvent_GetWindow, 2770). --define(wxChildFocusEvent_GetWindow, 2771). --define(wxMenuEvent_GetMenu, 2772). --define(wxMenuEvent_GetMenuId, 2773). --define(wxMenuEvent_IsPopup, 2774). --define(wxCloseEvent_CanVeto, 2775). --define(wxCloseEvent_GetLoggingOff, 2776). --define(wxCloseEvent_SetCanVeto, 2777). --define(wxCloseEvent_SetLoggingOff, 2778). --define(wxCloseEvent_Veto, 2779). --define(wxShowEvent_SetShow, 2780). --define(wxShowEvent_GetShow, 2781). --define(wxIconizeEvent_Iconized, 2782). --define(wxJoystickEvent_ButtonDown, 2783). --define(wxJoystickEvent_ButtonIsDown, 2784). --define(wxJoystickEvent_ButtonUp, 2785). --define(wxJoystickEvent_GetButtonChange, 2786). --define(wxJoystickEvent_GetButtonState, 2787). --define(wxJoystickEvent_GetJoystick, 2788). --define(wxJoystickEvent_GetPosition, 2789). --define(wxJoystickEvent_GetZPosition, 2790). --define(wxJoystickEvent_IsButton, 2791). --define(wxJoystickEvent_IsMove, 2792). --define(wxJoystickEvent_IsZMove, 2793). --define(wxUpdateUIEvent_CanUpdate, 2794). --define(wxUpdateUIEvent_Check, 2795). --define(wxUpdateUIEvent_Enable, 2796). --define(wxUpdateUIEvent_Show, 2797). --define(wxUpdateUIEvent_GetChecked, 2798). --define(wxUpdateUIEvent_GetEnabled, 2799). --define(wxUpdateUIEvent_GetShown, 2800). --define(wxUpdateUIEvent_GetSetChecked, 2801). --define(wxUpdateUIEvent_GetSetEnabled, 2802). --define(wxUpdateUIEvent_GetSetShown, 2803). --define(wxUpdateUIEvent_GetSetText, 2804). --define(wxUpdateUIEvent_GetText, 2805). --define(wxUpdateUIEvent_GetMode, 2806). --define(wxUpdateUIEvent_GetUpdateInterval, 2807). --define(wxUpdateUIEvent_ResetUpdateTime, 2808). --define(wxUpdateUIEvent_SetMode, 2809). --define(wxUpdateUIEvent_SetText, 2810). --define(wxUpdateUIEvent_SetUpdateInterval, 2811). --define(wxMouseCaptureChangedEvent_GetCapturedWindow, 2812). --define(wxPaletteChangedEvent_SetChangedWindow, 2813). --define(wxPaletteChangedEvent_GetChangedWindow, 2814). --define(wxQueryNewPaletteEvent_SetPaletteRealized, 2815). --define(wxQueryNewPaletteEvent_GetPaletteRealized, 2816). --define(wxNavigationKeyEvent_GetDirection, 2817). --define(wxNavigationKeyEvent_SetDirection, 2818). --define(wxNavigationKeyEvent_IsWindowChange, 2819). --define(wxNavigationKeyEvent_SetWindowChange, 2820). --define(wxNavigationKeyEvent_IsFromTab, 2821). --define(wxNavigationKeyEvent_SetFromTab, 2822). --define(wxNavigationKeyEvent_GetCurrentFocus, 2823). --define(wxNavigationKeyEvent_SetCurrentFocus, 2824). --define(wxHelpEvent_GetOrigin, 2825). --define(wxHelpEvent_GetPosition, 2826). --define(wxHelpEvent_SetOrigin, 2827). --define(wxHelpEvent_SetPosition, 2828). --define(wxContextMenuEvent_GetPosition, 2829). --define(wxContextMenuEvent_SetPosition, 2830). --define(wxIdleEvent_CanSend, 2831). --define(wxIdleEvent_GetMode, 2832). --define(wxIdleEvent_RequestMore, 2833). --define(wxIdleEvent_MoreRequested, 2834). --define(wxIdleEvent_SetMode, 2835). --define(wxGridEvent_AltDown, 2836). --define(wxGridEvent_ControlDown, 2837). --define(wxGridEvent_GetCol, 2838). --define(wxGridEvent_GetPosition, 2839). --define(wxGridEvent_GetRow, 2840). --define(wxGridEvent_MetaDown, 2841). --define(wxGridEvent_Selecting, 2842). --define(wxGridEvent_ShiftDown, 2843). --define(wxNotifyEvent_Allow, 2844). --define(wxNotifyEvent_IsAllowed, 2845). --define(wxNotifyEvent_Veto, 2846). --define(wxSashEvent_GetEdge, 2847). --define(wxSashEvent_GetDragRect, 2848). --define(wxSashEvent_GetDragStatus, 2849). --define(wxListEvent_GetCacheFrom, 2850). --define(wxListEvent_GetCacheTo, 2851). --define(wxListEvent_GetKeyCode, 2852). --define(wxListEvent_GetIndex, 2853). --define(wxListEvent_GetColumn, 2854). --define(wxListEvent_GetPoint, 2855). --define(wxListEvent_GetLabel, 2856). --define(wxListEvent_GetText, 2857). --define(wxListEvent_GetImage, 2858). --define(wxListEvent_GetData, 2859). --define(wxListEvent_GetMask, 2860). --define(wxListEvent_GetItem, 2861). --define(wxListEvent_IsEditCancelled, 2862). --define(wxDateEvent_GetDate, 2863). --define(wxCalendarEvent_GetWeekDay, 2864). --define(wxFileDirPickerEvent_GetPath, 2865). --define(wxColourPickerEvent_GetColour, 2866). --define(wxFontPickerEvent_GetFont, 2867). --define(wxStyledTextEvent_GetPosition, 2868). --define(wxStyledTextEvent_GetKey, 2869). --define(wxStyledTextEvent_GetModifiers, 2870). --define(wxStyledTextEvent_GetModificationType, 2871). --define(wxStyledTextEvent_GetText, 2872). --define(wxStyledTextEvent_GetLength, 2873). --define(wxStyledTextEvent_GetLinesAdded, 2874). --define(wxStyledTextEvent_GetLine, 2875). --define(wxStyledTextEvent_GetFoldLevelNow, 2876). --define(wxStyledTextEvent_GetFoldLevelPrev, 2877). --define(wxStyledTextEvent_GetMargin, 2878). --define(wxStyledTextEvent_GetMessage, 2879). --define(wxStyledTextEvent_GetWParam, 2880). --define(wxStyledTextEvent_GetLParam, 2881). --define(wxStyledTextEvent_GetListType, 2882). --define(wxStyledTextEvent_GetX, 2883). --define(wxStyledTextEvent_GetY, 2884). --define(wxStyledTextEvent_GetDragText, 2885). --define(wxStyledTextEvent_GetDragAllowMove, 2886). --define(wxStyledTextEvent_GetDragResult, 2887). --define(wxStyledTextEvent_GetShift, 2888). --define(wxStyledTextEvent_GetControl, 2889). --define(wxStyledTextEvent_GetAlt, 2890). --define(utils_wxGetKeyState, 2891). --define(utils_wxGetMousePosition, 2892). --define(utils_wxGetMouseState, 2893). --define(utils_wxSetDetectableAutoRepeat, 2894). --define(utils_wxBell, 2895). --define(utils_wxFindMenuItemId, 2896). --define(utils_wxGenericFindWindowAtPoint, 2897). --define(utils_wxFindWindowAtPoint, 2898). --define(utils_wxBeginBusyCursor, 2899). --define(utils_wxEndBusyCursor, 2900). --define(utils_wxIsBusy, 2901). --define(utils_wxShutdown, 2902). --define(utils_wxShell, 2903). --define(utils_wxLaunchDefaultBrowser, 2904). --define(utils_wxGetEmailAddress, 2905). --define(utils_wxGetUserId, 2906). --define(utils_wxGetHomeDir, 2907). --define(utils_wxNewId, 2908). --define(utils_wxRegisterId, 2909). --define(utils_wxGetCurrentId, 2910). --define(utils_wxGetOsDescription, 2911). --define(utils_wxIsPlatformLittleEndian, 2912). --define(utils_wxIsPlatform64Bit, 2913). --define(wxPrintout_new, 2914). --define(wxPrintout_destruct, 2915). --define(wxPrintout_GetDC, 2916). --define(wxPrintout_GetPageSizeMM, 2917). --define(wxPrintout_GetPageSizePixels, 2918). --define(wxPrintout_GetPaperRectPixels, 2919). --define(wxPrintout_GetPPIPrinter, 2920). --define(wxPrintout_GetPPIScreen, 2921). --define(wxPrintout_GetTitle, 2922). --define(wxPrintout_IsPreview, 2923). --define(wxPrintout_FitThisSizeToPaper, 2924). --define(wxPrintout_FitThisSizeToPage, 2925). --define(wxPrintout_FitThisSizeToPageMargins, 2926). --define(wxPrintout_MapScreenSizeToPaper, 2927). --define(wxPrintout_MapScreenSizeToPage, 2928). --define(wxPrintout_MapScreenSizeToPageMargins, 2929). --define(wxPrintout_MapScreenSizeToDevice, 2930). --define(wxPrintout_GetLogicalPaperRect, 2931). --define(wxPrintout_GetLogicalPageRect, 2932). --define(wxPrintout_GetLogicalPageMarginsRect, 2933). --define(wxPrintout_SetLogicalOrigin, 2934). --define(wxPrintout_OffsetLogicalOrigin, 2935). --define(wxStyledTextCtrl_new_2, 2936). --define(wxStyledTextCtrl_new_0, 2937). --define(wxStyledTextCtrl_destruct, 2938). --define(wxStyledTextCtrl_Create, 2939). --define(wxStyledTextCtrl_AddText, 2940). --define(wxStyledTextCtrl_AddStyledText, 2941). --define(wxStyledTextCtrl_InsertText, 2942). --define(wxStyledTextCtrl_ClearAll, 2943). --define(wxStyledTextCtrl_ClearDocumentStyle, 2944). --define(wxStyledTextCtrl_GetLength, 2945). --define(wxStyledTextCtrl_GetCharAt, 2946). --define(wxStyledTextCtrl_GetCurrentPos, 2947). --define(wxStyledTextCtrl_GetAnchor, 2948). --define(wxStyledTextCtrl_GetStyleAt, 2949). --define(wxStyledTextCtrl_Redo, 2950). --define(wxStyledTextCtrl_SetUndoCollection, 2951). --define(wxStyledTextCtrl_SelectAll, 2952). --define(wxStyledTextCtrl_SetSavePoint, 2953). --define(wxStyledTextCtrl_GetStyledText, 2954). --define(wxStyledTextCtrl_CanRedo, 2955). --define(wxStyledTextCtrl_MarkerLineFromHandle, 2956). --define(wxStyledTextCtrl_MarkerDeleteHandle, 2957). --define(wxStyledTextCtrl_GetUndoCollection, 2958). --define(wxStyledTextCtrl_GetViewWhiteSpace, 2959). --define(wxStyledTextCtrl_SetViewWhiteSpace, 2960). --define(wxStyledTextCtrl_PositionFromPoint, 2961). --define(wxStyledTextCtrl_PositionFromPointClose, 2962). --define(wxStyledTextCtrl_GotoLine, 2963). --define(wxStyledTextCtrl_GotoPos, 2964). --define(wxStyledTextCtrl_SetAnchor, 2965). --define(wxStyledTextCtrl_GetCurLine, 2966). --define(wxStyledTextCtrl_GetEndStyled, 2967). --define(wxStyledTextCtrl_ConvertEOLs, 2968). --define(wxStyledTextCtrl_GetEOLMode, 2969). --define(wxStyledTextCtrl_SetEOLMode, 2970). --define(wxStyledTextCtrl_StartStyling, 2971). --define(wxStyledTextCtrl_SetStyling, 2972). --define(wxStyledTextCtrl_GetBufferedDraw, 2973). --define(wxStyledTextCtrl_SetBufferedDraw, 2974). --define(wxStyledTextCtrl_SetTabWidth, 2975). --define(wxStyledTextCtrl_GetTabWidth, 2976). --define(wxStyledTextCtrl_SetCodePage, 2977). --define(wxStyledTextCtrl_MarkerDefine, 2978). --define(wxStyledTextCtrl_MarkerSetForeground, 2979). --define(wxStyledTextCtrl_MarkerSetBackground, 2980). --define(wxStyledTextCtrl_MarkerAdd, 2981). --define(wxStyledTextCtrl_MarkerDelete, 2982). --define(wxStyledTextCtrl_MarkerDeleteAll, 2983). --define(wxStyledTextCtrl_MarkerGet, 2984). --define(wxStyledTextCtrl_MarkerNext, 2985). --define(wxStyledTextCtrl_MarkerPrevious, 2986). --define(wxStyledTextCtrl_MarkerDefineBitmap, 2987). --define(wxStyledTextCtrl_MarkerAddSet, 2988). --define(wxStyledTextCtrl_MarkerSetAlpha, 2989). --define(wxStyledTextCtrl_SetMarginType, 2990). --define(wxStyledTextCtrl_GetMarginType, 2991). --define(wxStyledTextCtrl_SetMarginWidth, 2992). --define(wxStyledTextCtrl_GetMarginWidth, 2993). --define(wxStyledTextCtrl_SetMarginMask, 2994). --define(wxStyledTextCtrl_GetMarginMask, 2995). --define(wxStyledTextCtrl_SetMarginSensitive, 2996). --define(wxStyledTextCtrl_GetMarginSensitive, 2997). --define(wxStyledTextCtrl_StyleClearAll, 2998). --define(wxStyledTextCtrl_StyleSetForeground, 2999). --define(wxStyledTextCtrl_StyleSetBackground, 3000). --define(wxStyledTextCtrl_StyleSetBold, 3001). --define(wxStyledTextCtrl_StyleSetItalic, 3002). --define(wxStyledTextCtrl_StyleSetSize, 3003). --define(wxStyledTextCtrl_StyleSetFaceName, 3004). --define(wxStyledTextCtrl_StyleSetEOLFilled, 3005). --define(wxStyledTextCtrl_StyleResetDefault, 3006). --define(wxStyledTextCtrl_StyleSetUnderline, 3007). --define(wxStyledTextCtrl_StyleSetCase, 3008). --define(wxStyledTextCtrl_StyleSetHotSpot, 3009). --define(wxStyledTextCtrl_SetSelForeground, 3010). --define(wxStyledTextCtrl_SetSelBackground, 3011). --define(wxStyledTextCtrl_GetSelAlpha, 3012). --define(wxStyledTextCtrl_SetSelAlpha, 3013). --define(wxStyledTextCtrl_SetCaretForeground, 3014). --define(wxStyledTextCtrl_CmdKeyAssign, 3015). --define(wxStyledTextCtrl_CmdKeyClear, 3016). --define(wxStyledTextCtrl_CmdKeyClearAll, 3017). --define(wxStyledTextCtrl_SetStyleBytes, 3018). --define(wxStyledTextCtrl_StyleSetVisible, 3019). --define(wxStyledTextCtrl_GetCaretPeriod, 3020). --define(wxStyledTextCtrl_SetCaretPeriod, 3021). --define(wxStyledTextCtrl_SetWordChars, 3022). --define(wxStyledTextCtrl_BeginUndoAction, 3023). --define(wxStyledTextCtrl_EndUndoAction, 3024). --define(wxStyledTextCtrl_IndicatorSetStyle, 3025). --define(wxStyledTextCtrl_IndicatorGetStyle, 3026). --define(wxStyledTextCtrl_IndicatorSetForeground, 3027). --define(wxStyledTextCtrl_IndicatorGetForeground, 3028). --define(wxStyledTextCtrl_SetWhitespaceForeground, 3029). --define(wxStyledTextCtrl_SetWhitespaceBackground, 3030). --define(wxStyledTextCtrl_GetStyleBits, 3031). --define(wxStyledTextCtrl_SetLineState, 3032). --define(wxStyledTextCtrl_GetLineState, 3033). --define(wxStyledTextCtrl_GetMaxLineState, 3034). --define(wxStyledTextCtrl_GetCaretLineVisible, 3035). --define(wxStyledTextCtrl_SetCaretLineVisible, 3036). --define(wxStyledTextCtrl_GetCaretLineBackground, 3037). --define(wxStyledTextCtrl_SetCaretLineBackground, 3038). --define(wxStyledTextCtrl_AutoCompShow, 3039). --define(wxStyledTextCtrl_AutoCompCancel, 3040). --define(wxStyledTextCtrl_AutoCompActive, 3041). --define(wxStyledTextCtrl_AutoCompPosStart, 3042). --define(wxStyledTextCtrl_AutoCompComplete, 3043). --define(wxStyledTextCtrl_AutoCompStops, 3044). --define(wxStyledTextCtrl_AutoCompSetSeparator, 3045). --define(wxStyledTextCtrl_AutoCompGetSeparator, 3046). --define(wxStyledTextCtrl_AutoCompSelect, 3047). --define(wxStyledTextCtrl_AutoCompSetCancelAtStart, 3048). --define(wxStyledTextCtrl_AutoCompGetCancelAtStart, 3049). --define(wxStyledTextCtrl_AutoCompSetFillUps, 3050). --define(wxStyledTextCtrl_AutoCompSetChooseSingle, 3051). --define(wxStyledTextCtrl_AutoCompGetChooseSingle, 3052). --define(wxStyledTextCtrl_AutoCompSetIgnoreCase, 3053). --define(wxStyledTextCtrl_AutoCompGetIgnoreCase, 3054). --define(wxStyledTextCtrl_UserListShow, 3055). --define(wxStyledTextCtrl_AutoCompSetAutoHide, 3056). --define(wxStyledTextCtrl_AutoCompGetAutoHide, 3057). --define(wxStyledTextCtrl_AutoCompSetDropRestOfWord, 3058). --define(wxStyledTextCtrl_AutoCompGetDropRestOfWord, 3059). --define(wxStyledTextCtrl_RegisterImage, 3060). --define(wxStyledTextCtrl_ClearRegisteredImages, 3061). --define(wxStyledTextCtrl_AutoCompGetTypeSeparator, 3062). --define(wxStyledTextCtrl_AutoCompSetTypeSeparator, 3063). --define(wxStyledTextCtrl_AutoCompSetMaxWidth, 3064). --define(wxStyledTextCtrl_AutoCompGetMaxWidth, 3065). --define(wxStyledTextCtrl_AutoCompSetMaxHeight, 3066). --define(wxStyledTextCtrl_AutoCompGetMaxHeight, 3067). --define(wxStyledTextCtrl_SetIndent, 3068). --define(wxStyledTextCtrl_GetIndent, 3069). --define(wxStyledTextCtrl_SetUseTabs, 3070). --define(wxStyledTextCtrl_GetUseTabs, 3071). --define(wxStyledTextCtrl_SetLineIndentation, 3072). --define(wxStyledTextCtrl_GetLineIndentation, 3073). --define(wxStyledTextCtrl_GetLineIndentPosition, 3074). --define(wxStyledTextCtrl_GetColumn, 3075). --define(wxStyledTextCtrl_SetUseHorizontalScrollBar, 3076). --define(wxStyledTextCtrl_GetUseHorizontalScrollBar, 3077). --define(wxStyledTextCtrl_SetIndentationGuides, 3078). --define(wxStyledTextCtrl_GetIndentationGuides, 3079). --define(wxStyledTextCtrl_SetHighlightGuide, 3080). --define(wxStyledTextCtrl_GetHighlightGuide, 3081). --define(wxStyledTextCtrl_GetLineEndPosition, 3082). --define(wxStyledTextCtrl_GetCodePage, 3083). --define(wxStyledTextCtrl_GetCaretForeground, 3084). --define(wxStyledTextCtrl_GetReadOnly, 3085). --define(wxStyledTextCtrl_SetCurrentPos, 3086). --define(wxStyledTextCtrl_SetSelectionStart, 3087). --define(wxStyledTextCtrl_GetSelectionStart, 3088). --define(wxStyledTextCtrl_SetSelectionEnd, 3089). --define(wxStyledTextCtrl_GetSelectionEnd, 3090). --define(wxStyledTextCtrl_SetPrintMagnification, 3091). --define(wxStyledTextCtrl_GetPrintMagnification, 3092). --define(wxStyledTextCtrl_SetPrintColourMode, 3093). --define(wxStyledTextCtrl_GetPrintColourMode, 3094). --define(wxStyledTextCtrl_FindText, 3095). --define(wxStyledTextCtrl_FormatRange, 3096). --define(wxStyledTextCtrl_GetFirstVisibleLine, 3097). --define(wxStyledTextCtrl_GetLine, 3098). --define(wxStyledTextCtrl_GetLineCount, 3099). --define(wxStyledTextCtrl_SetMarginLeft, 3100). --define(wxStyledTextCtrl_GetMarginLeft, 3101). --define(wxStyledTextCtrl_SetMarginRight, 3102). --define(wxStyledTextCtrl_GetMarginRight, 3103). --define(wxStyledTextCtrl_GetModify, 3104). --define(wxStyledTextCtrl_SetSelection, 3105). --define(wxStyledTextCtrl_GetSelectedText, 3106). --define(wxStyledTextCtrl_GetTextRange, 3107). --define(wxStyledTextCtrl_HideSelection, 3108). --define(wxStyledTextCtrl_LineFromPosition, 3109). --define(wxStyledTextCtrl_PositionFromLine, 3110). --define(wxStyledTextCtrl_LineScroll, 3111). --define(wxStyledTextCtrl_EnsureCaretVisible, 3112). --define(wxStyledTextCtrl_ReplaceSelection, 3113). --define(wxStyledTextCtrl_SetReadOnly, 3114). --define(wxStyledTextCtrl_CanPaste, 3115). --define(wxStyledTextCtrl_CanUndo, 3116). --define(wxStyledTextCtrl_EmptyUndoBuffer, 3117). --define(wxStyledTextCtrl_Undo, 3118). --define(wxStyledTextCtrl_Cut, 3119). --define(wxStyledTextCtrl_Copy, 3120). --define(wxStyledTextCtrl_Paste, 3121). --define(wxStyledTextCtrl_Clear, 3122). --define(wxStyledTextCtrl_SetText, 3123). --define(wxStyledTextCtrl_GetText, 3124). --define(wxStyledTextCtrl_GetTextLength, 3125). --define(wxStyledTextCtrl_GetOvertype, 3126). --define(wxStyledTextCtrl_SetCaretWidth, 3127). --define(wxStyledTextCtrl_GetCaretWidth, 3128). --define(wxStyledTextCtrl_SetTargetStart, 3129). --define(wxStyledTextCtrl_GetTargetStart, 3130). --define(wxStyledTextCtrl_SetTargetEnd, 3131). --define(wxStyledTextCtrl_GetTargetEnd, 3132). --define(wxStyledTextCtrl_ReplaceTarget, 3133). --define(wxStyledTextCtrl_SearchInTarget, 3134). --define(wxStyledTextCtrl_SetSearchFlags, 3135). --define(wxStyledTextCtrl_GetSearchFlags, 3136). --define(wxStyledTextCtrl_CallTipShow, 3137). --define(wxStyledTextCtrl_CallTipCancel, 3138). --define(wxStyledTextCtrl_CallTipActive, 3139). --define(wxStyledTextCtrl_CallTipPosAtStart, 3140). --define(wxStyledTextCtrl_CallTipSetHighlight, 3141). --define(wxStyledTextCtrl_CallTipSetBackground, 3142). --define(wxStyledTextCtrl_CallTipSetForeground, 3143). --define(wxStyledTextCtrl_CallTipSetForegroundHighlight, 3144). --define(wxStyledTextCtrl_CallTipUseStyle, 3145). --define(wxStyledTextCtrl_VisibleFromDocLine, 3146). --define(wxStyledTextCtrl_DocLineFromVisible, 3147). --define(wxStyledTextCtrl_WrapCount, 3148). --define(wxStyledTextCtrl_SetFoldLevel, 3149). --define(wxStyledTextCtrl_GetFoldLevel, 3150). --define(wxStyledTextCtrl_GetLastChild, 3151). --define(wxStyledTextCtrl_GetFoldParent, 3152). --define(wxStyledTextCtrl_ShowLines, 3153). --define(wxStyledTextCtrl_HideLines, 3154). --define(wxStyledTextCtrl_GetLineVisible, 3155). --define(wxStyledTextCtrl_SetFoldExpanded, 3156). --define(wxStyledTextCtrl_GetFoldExpanded, 3157). --define(wxStyledTextCtrl_ToggleFold, 3158). --define(wxStyledTextCtrl_EnsureVisible, 3159). --define(wxStyledTextCtrl_SetFoldFlags, 3160). --define(wxStyledTextCtrl_EnsureVisibleEnforcePolicy, 3161). --define(wxStyledTextCtrl_SetTabIndents, 3162). --define(wxStyledTextCtrl_GetTabIndents, 3163). --define(wxStyledTextCtrl_SetBackSpaceUnIndents, 3164). --define(wxStyledTextCtrl_GetBackSpaceUnIndents, 3165). --define(wxStyledTextCtrl_SetMouseDwellTime, 3166). --define(wxStyledTextCtrl_GetMouseDwellTime, 3167). --define(wxStyledTextCtrl_WordStartPosition, 3168). --define(wxStyledTextCtrl_WordEndPosition, 3169). --define(wxStyledTextCtrl_SetWrapMode, 3170). --define(wxStyledTextCtrl_GetWrapMode, 3171). --define(wxStyledTextCtrl_SetWrapVisualFlags, 3172). --define(wxStyledTextCtrl_GetWrapVisualFlags, 3173). --define(wxStyledTextCtrl_SetWrapVisualFlagsLocation, 3174). --define(wxStyledTextCtrl_GetWrapVisualFlagsLocation, 3175). --define(wxStyledTextCtrl_SetWrapStartIndent, 3176). --define(wxStyledTextCtrl_GetWrapStartIndent, 3177). --define(wxStyledTextCtrl_SetLayoutCache, 3178). --define(wxStyledTextCtrl_GetLayoutCache, 3179). --define(wxStyledTextCtrl_SetScrollWidth, 3180). --define(wxStyledTextCtrl_GetScrollWidth, 3181). --define(wxStyledTextCtrl_TextWidth, 3182). --define(wxStyledTextCtrl_GetEndAtLastLine, 3183). --define(wxStyledTextCtrl_TextHeight, 3184). --define(wxStyledTextCtrl_SetUseVerticalScrollBar, 3185). --define(wxStyledTextCtrl_GetUseVerticalScrollBar, 3186). --define(wxStyledTextCtrl_AppendText, 3187). --define(wxStyledTextCtrl_GetTwoPhaseDraw, 3188). --define(wxStyledTextCtrl_SetTwoPhaseDraw, 3189). --define(wxStyledTextCtrl_TargetFromSelection, 3190). --define(wxStyledTextCtrl_LinesJoin, 3191). --define(wxStyledTextCtrl_LinesSplit, 3192). --define(wxStyledTextCtrl_SetFoldMarginColour, 3193). --define(wxStyledTextCtrl_SetFoldMarginHiColour, 3194). --define(wxStyledTextCtrl_LineDown, 3195). --define(wxStyledTextCtrl_LineDownExtend, 3196). --define(wxStyledTextCtrl_LineUp, 3197). --define(wxStyledTextCtrl_LineUpExtend, 3198). --define(wxStyledTextCtrl_CharLeft, 3199). --define(wxStyledTextCtrl_CharLeftExtend, 3200). --define(wxStyledTextCtrl_CharRight, 3201). --define(wxStyledTextCtrl_CharRightExtend, 3202). --define(wxStyledTextCtrl_WordLeft, 3203). --define(wxStyledTextCtrl_WordLeftExtend, 3204). --define(wxStyledTextCtrl_WordRight, 3205). --define(wxStyledTextCtrl_WordRightExtend, 3206). --define(wxStyledTextCtrl_Home, 3207). --define(wxStyledTextCtrl_HomeExtend, 3208). --define(wxStyledTextCtrl_LineEnd, 3209). --define(wxStyledTextCtrl_LineEndExtend, 3210). --define(wxStyledTextCtrl_DocumentStart, 3211). --define(wxStyledTextCtrl_DocumentStartExtend, 3212). --define(wxStyledTextCtrl_DocumentEnd, 3213). --define(wxStyledTextCtrl_DocumentEndExtend, 3214). --define(wxStyledTextCtrl_PageUp, 3215). --define(wxStyledTextCtrl_PageUpExtend, 3216). --define(wxStyledTextCtrl_PageDown, 3217). --define(wxStyledTextCtrl_PageDownExtend, 3218). --define(wxStyledTextCtrl_EditToggleOvertype, 3219). --define(wxStyledTextCtrl_Cancel, 3220). --define(wxStyledTextCtrl_DeleteBack, 3221). --define(wxStyledTextCtrl_Tab, 3222). --define(wxStyledTextCtrl_BackTab, 3223). --define(wxStyledTextCtrl_NewLine, 3224). --define(wxStyledTextCtrl_FormFeed, 3225). --define(wxStyledTextCtrl_VCHome, 3226). --define(wxStyledTextCtrl_VCHomeExtend, 3227). --define(wxStyledTextCtrl_ZoomIn, 3228). --define(wxStyledTextCtrl_ZoomOut, 3229). --define(wxStyledTextCtrl_DelWordLeft, 3230). --define(wxStyledTextCtrl_DelWordRight, 3231). --define(wxStyledTextCtrl_LineCut, 3232). --define(wxStyledTextCtrl_LineDelete, 3233). --define(wxStyledTextCtrl_LineTranspose, 3234). --define(wxStyledTextCtrl_LineDuplicate, 3235). --define(wxStyledTextCtrl_LowerCase, 3236). --define(wxStyledTextCtrl_UpperCase, 3237). --define(wxStyledTextCtrl_LineScrollDown, 3238). --define(wxStyledTextCtrl_LineScrollUp, 3239). --define(wxStyledTextCtrl_DeleteBackNotLine, 3240). --define(wxStyledTextCtrl_HomeDisplay, 3241). --define(wxStyledTextCtrl_HomeDisplayExtend, 3242). --define(wxStyledTextCtrl_LineEndDisplay, 3243). --define(wxStyledTextCtrl_LineEndDisplayExtend, 3244). --define(wxStyledTextCtrl_HomeWrapExtend, 3245). --define(wxStyledTextCtrl_LineEndWrap, 3246). --define(wxStyledTextCtrl_LineEndWrapExtend, 3247). --define(wxStyledTextCtrl_VCHomeWrap, 3248). --define(wxStyledTextCtrl_VCHomeWrapExtend, 3249). --define(wxStyledTextCtrl_LineCopy, 3250). --define(wxStyledTextCtrl_MoveCaretInsideView, 3251). --define(wxStyledTextCtrl_LineLength, 3252). --define(wxStyledTextCtrl_BraceHighlight, 3253). --define(wxStyledTextCtrl_BraceBadLight, 3254). --define(wxStyledTextCtrl_BraceMatch, 3255). --define(wxStyledTextCtrl_GetViewEOL, 3256). --define(wxStyledTextCtrl_SetViewEOL, 3257). --define(wxStyledTextCtrl_SetModEventMask, 3258). --define(wxStyledTextCtrl_GetEdgeColumn, 3259). --define(wxStyledTextCtrl_SetEdgeColumn, 3260). --define(wxStyledTextCtrl_GetEdgeMode, 3261). --define(wxStyledTextCtrl_GetEdgeColour, 3262). --define(wxStyledTextCtrl_SetEdgeColour, 3263). --define(wxStyledTextCtrl_SearchAnchor, 3264). --define(wxStyledTextCtrl_SearchNext, 3265). --define(wxStyledTextCtrl_SearchPrev, 3266). --define(wxStyledTextCtrl_LinesOnScreen, 3267). --define(wxStyledTextCtrl_UsePopUp, 3268). --define(wxStyledTextCtrl_SelectionIsRectangle, 3269). --define(wxStyledTextCtrl_SetZoom, 3270). --define(wxStyledTextCtrl_GetZoom, 3271). --define(wxStyledTextCtrl_GetModEventMask, 3272). --define(wxStyledTextCtrl_SetSTCFocus, 3273). --define(wxStyledTextCtrl_GetSTCFocus, 3274). --define(wxStyledTextCtrl_SetStatus, 3275). --define(wxStyledTextCtrl_GetStatus, 3276). --define(wxStyledTextCtrl_SetMouseDownCaptures, 3277). --define(wxStyledTextCtrl_GetMouseDownCaptures, 3278). --define(wxStyledTextCtrl_SetSTCCursor, 3279). --define(wxStyledTextCtrl_GetSTCCursor, 3280). --define(wxStyledTextCtrl_SetControlCharSymbol, 3281). --define(wxStyledTextCtrl_GetControlCharSymbol, 3282). --define(wxStyledTextCtrl_WordPartLeft, 3283). --define(wxStyledTextCtrl_WordPartLeftExtend, 3284). --define(wxStyledTextCtrl_WordPartRight, 3285). --define(wxStyledTextCtrl_WordPartRightExtend, 3286). --define(wxStyledTextCtrl_SetVisiblePolicy, 3287). --define(wxStyledTextCtrl_DelLineLeft, 3288). --define(wxStyledTextCtrl_DelLineRight, 3289). --define(wxStyledTextCtrl_GetXOffset, 3290). --define(wxStyledTextCtrl_ChooseCaretX, 3291). --define(wxStyledTextCtrl_SetXCaretPolicy, 3292). --define(wxStyledTextCtrl_SetYCaretPolicy, 3293). --define(wxStyledTextCtrl_GetPrintWrapMode, 3294). --define(wxStyledTextCtrl_SetHotspotActiveForeground, 3295). --define(wxStyledTextCtrl_SetHotspotActiveBackground, 3296). --define(wxStyledTextCtrl_SetHotspotActiveUnderline, 3297). --define(wxStyledTextCtrl_SetHotspotSingleLine, 3298). --define(wxStyledTextCtrl_ParaDownExtend, 3299). --define(wxStyledTextCtrl_ParaUp, 3300). --define(wxStyledTextCtrl_ParaUpExtend, 3301). --define(wxStyledTextCtrl_PositionBefore, 3302). --define(wxStyledTextCtrl_PositionAfter, 3303). --define(wxStyledTextCtrl_CopyRange, 3304). --define(wxStyledTextCtrl_CopyText, 3305). --define(wxStyledTextCtrl_SetSelectionMode, 3306). --define(wxStyledTextCtrl_GetSelectionMode, 3307). --define(wxStyledTextCtrl_LineDownRectExtend, 3308). --define(wxStyledTextCtrl_LineUpRectExtend, 3309). --define(wxStyledTextCtrl_CharLeftRectExtend, 3310). --define(wxStyledTextCtrl_CharRightRectExtend, 3311). --define(wxStyledTextCtrl_HomeRectExtend, 3312). --define(wxStyledTextCtrl_VCHomeRectExtend, 3313). --define(wxStyledTextCtrl_LineEndRectExtend, 3314). --define(wxStyledTextCtrl_PageUpRectExtend, 3315). --define(wxStyledTextCtrl_PageDownRectExtend, 3316). --define(wxStyledTextCtrl_StutteredPageUp, 3317). --define(wxStyledTextCtrl_StutteredPageUpExtend, 3318). --define(wxStyledTextCtrl_StutteredPageDown, 3319). --define(wxStyledTextCtrl_StutteredPageDownExtend, 3320). --define(wxStyledTextCtrl_WordLeftEnd, 3321). --define(wxStyledTextCtrl_WordLeftEndExtend, 3322). --define(wxStyledTextCtrl_WordRightEnd, 3323). --define(wxStyledTextCtrl_WordRightEndExtend, 3324). --define(wxStyledTextCtrl_SetWhitespaceChars, 3325). --define(wxStyledTextCtrl_SetCharsDefault, 3326). --define(wxStyledTextCtrl_AutoCompGetCurrent, 3327). --define(wxStyledTextCtrl_Allocate, 3328). --define(wxStyledTextCtrl_FindColumn, 3329). --define(wxStyledTextCtrl_GetCaretSticky, 3330). --define(wxStyledTextCtrl_SetCaretSticky, 3331). --define(wxStyledTextCtrl_ToggleCaretSticky, 3332). --define(wxStyledTextCtrl_SetPasteConvertEndings, 3333). --define(wxStyledTextCtrl_GetPasteConvertEndings, 3334). --define(wxStyledTextCtrl_SelectionDuplicate, 3335). --define(wxStyledTextCtrl_SetCaretLineBackAlpha, 3336). --define(wxStyledTextCtrl_GetCaretLineBackAlpha, 3337). --define(wxStyledTextCtrl_StartRecord, 3338). --define(wxStyledTextCtrl_StopRecord, 3339). --define(wxStyledTextCtrl_SetLexer, 3340). --define(wxStyledTextCtrl_GetLexer, 3341). --define(wxStyledTextCtrl_Colourise, 3342). --define(wxStyledTextCtrl_SetProperty, 3343). --define(wxStyledTextCtrl_SetKeyWords, 3344). --define(wxStyledTextCtrl_SetLexerLanguage, 3345). --define(wxStyledTextCtrl_GetProperty, 3346). --define(wxStyledTextCtrl_GetStyleBitsNeeded, 3347). --define(wxStyledTextCtrl_GetCurrentLine, 3348). --define(wxStyledTextCtrl_StyleSetSpec, 3349). --define(wxStyledTextCtrl_StyleSetFont, 3350). --define(wxStyledTextCtrl_StyleSetFontAttr, 3351). --define(wxStyledTextCtrl_StyleSetCharacterSet, 3352). --define(wxStyledTextCtrl_StyleSetFontEncoding, 3353). --define(wxStyledTextCtrl_CmdKeyExecute, 3354). --define(wxStyledTextCtrl_SetMargins, 3355). --define(wxStyledTextCtrl_GetSelection, 3356). --define(wxStyledTextCtrl_PointFromPosition, 3357). --define(wxStyledTextCtrl_ScrollToLine, 3358). --define(wxStyledTextCtrl_ScrollToColumn, 3359). --define(wxStyledTextCtrl_SendMsg, 3360). --define(wxStyledTextCtrl_SetVScrollBar, 3361). --define(wxStyledTextCtrl_SetHScrollBar, 3362). --define(wxStyledTextCtrl_GetLastKeydownProcessed, 3363). --define(wxStyledTextCtrl_SetLastKeydownProcessed, 3364). --define(wxStyledTextCtrl_SaveFile, 3365). --define(wxStyledTextCtrl_LoadFile, 3366). --define(wxStyledTextCtrl_DoDragOver, 3367). --define(wxStyledTextCtrl_DoDropText, 3368). --define(wxStyledTextCtrl_GetUseAntiAliasing, 3369). --define(wxStyledTextCtrl_AddTextRaw, 3370). --define(wxStyledTextCtrl_InsertTextRaw, 3371). --define(wxStyledTextCtrl_GetCurLineRaw, 3372). --define(wxStyledTextCtrl_GetLineRaw, 3373). --define(wxStyledTextCtrl_GetSelectedTextRaw, 3374). --define(wxStyledTextCtrl_GetTextRangeRaw, 3375). --define(wxStyledTextCtrl_SetTextRaw, 3376). --define(wxStyledTextCtrl_GetTextRaw, 3377). --define(wxStyledTextCtrl_AppendTextRaw, 3378). --define(wxArtProvider_GetBitmap, 3379). --define(wxArtProvider_GetIcon, 3380). --define(wxTreeEvent_GetKeyCode, 3381). --define(wxTreeEvent_GetItem, 3382). --define(wxTreeEvent_GetKeyEvent, 3383). --define(wxTreeEvent_GetLabel, 3384). --define(wxTreeEvent_GetOldItem, 3385). --define(wxTreeEvent_GetPoint, 3386). --define(wxTreeEvent_IsEditCancelled, 3387). --define(wxTreeEvent_SetToolTip, 3388). --define(wxNotebookEvent_GetOldSelection, 3389). --define(wxNotebookEvent_GetSelection, 3390). --define(wxNotebookEvent_SetOldSelection, 3391). --define(wxNotebookEvent_SetSelection, 3392). --define(wxFileDataObject_new, 3393). --define(wxFileDataObject_AddFile, 3394). --define(wxFileDataObject_GetFilenames, 3395). --define(wxFileDataObject_destroy, 3396). --define(wxTextDataObject_new, 3397). --define(wxTextDataObject_GetTextLength, 3398). --define(wxTextDataObject_GetText, 3399). --define(wxTextDataObject_SetText, 3400). --define(wxTextDataObject_destroy, 3401). --define(wxBitmapDataObject_new_1_1, 3402). --define(wxBitmapDataObject_new_1_0, 3403). --define(wxBitmapDataObject_GetBitmap, 3404). --define(wxBitmapDataObject_SetBitmap, 3405). --define(wxBitmapDataObject_destroy, 3406). --define(wxClipboard_new, 3408). --define(wxClipboard_destruct, 3409). --define(wxClipboard_AddData, 3410). --define(wxClipboard_Clear, 3411). --define(wxClipboard_Close, 3412). --define(wxClipboard_Flush, 3413). --define(wxClipboard_GetData, 3414). --define(wxClipboard_IsOpened, 3415). --define(wxClipboard_Open, 3416). --define(wxClipboard_SetData, 3417). --define(wxClipboard_UsePrimarySelection, 3419). --define(wxClipboard_IsSupported, 3420). --define(wxClipboard_Get, 3421). --define(wxSpinEvent_GetPosition, 3422). --define(wxSpinEvent_SetPosition, 3423). --define(wxSplitterWindow_new_0, 3424). --define(wxSplitterWindow_new_2, 3425). --define(wxSplitterWindow_destruct, 3426). --define(wxSplitterWindow_Create, 3427). --define(wxSplitterWindow_GetMinimumPaneSize, 3428). --define(wxSplitterWindow_GetSashGravity, 3429). --define(wxSplitterWindow_GetSashPosition, 3430). --define(wxSplitterWindow_GetSplitMode, 3431). --define(wxSplitterWindow_GetWindow1, 3432). --define(wxSplitterWindow_GetWindow2, 3433). --define(wxSplitterWindow_Initialize, 3434). --define(wxSplitterWindow_IsSplit, 3435). --define(wxSplitterWindow_ReplaceWindow, 3436). --define(wxSplitterWindow_SetSashGravity, 3437). --define(wxSplitterWindow_SetSashPosition, 3438). --define(wxSplitterWindow_SetSashSize, 3439). --define(wxSplitterWindow_SetMinimumPaneSize, 3440). --define(wxSplitterWindow_SetSplitMode, 3441). --define(wxSplitterWindow_SplitHorizontally, 3442). --define(wxSplitterWindow_SplitVertically, 3443). --define(wxSplitterWindow_Unsplit, 3444). --define(wxSplitterWindow_UpdateSize, 3445). --define(wxSplitterEvent_GetSashPosition, 3446). --define(wxSplitterEvent_GetX, 3447). --define(wxSplitterEvent_GetY, 3448). --define(wxSplitterEvent_GetWindowBeingRemoved, 3449). --define(wxSplitterEvent_SetSashPosition, 3450). --define(wxHtmlWindow_new_0, 3451). --define(wxHtmlWindow_new_2, 3452). --define(wxHtmlWindow_AppendToPage, 3453). --define(wxHtmlWindow_GetOpenedAnchor, 3454). --define(wxHtmlWindow_GetOpenedPage, 3455). --define(wxHtmlWindow_GetOpenedPageTitle, 3456). --define(wxHtmlWindow_GetRelatedFrame, 3457). --define(wxHtmlWindow_HistoryBack, 3458). --define(wxHtmlWindow_HistoryCanBack, 3459). --define(wxHtmlWindow_HistoryCanForward, 3460). --define(wxHtmlWindow_HistoryClear, 3461). --define(wxHtmlWindow_HistoryForward, 3462). --define(wxHtmlWindow_LoadFile, 3463). --define(wxHtmlWindow_LoadPage, 3464). --define(wxHtmlWindow_SelectAll, 3465). --define(wxHtmlWindow_SelectionToText, 3466). --define(wxHtmlWindow_SelectLine, 3467). --define(wxHtmlWindow_SelectWord, 3468). --define(wxHtmlWindow_SetBorders, 3469). --define(wxHtmlWindow_SetFonts, 3470). --define(wxHtmlWindow_SetPage, 3471). --define(wxHtmlWindow_SetRelatedFrame, 3472). --define(wxHtmlWindow_SetRelatedStatusBar, 3473). --define(wxHtmlWindow_ToText, 3474). --define(wxHtmlWindow_destroy, 3475). --define(wxHtmlLinkEvent_GetLinkInfo, 3476). --define(wxAuiNotebookEvent_SetSelection, 3477). --define(wxAuiNotebookEvent_GetSelection, 3478). --define(wxAuiNotebookEvent_SetOldSelection, 3479). --define(wxAuiNotebookEvent_GetOldSelection, 3480). --define(wxAuiNotebookEvent_SetDragSource, 3481). --define(wxAuiNotebookEvent_GetDragSource, 3482). --define(wxAuiManagerEvent_SetManager, 3483). --define(wxAuiManagerEvent_GetManager, 3484). --define(wxAuiManagerEvent_SetPane, 3485). --define(wxAuiManagerEvent_GetPane, 3486). --define(wxAuiManagerEvent_SetButton, 3487). --define(wxAuiManagerEvent_GetButton, 3488). --define(wxAuiManagerEvent_SetDC, 3489). --define(wxAuiManagerEvent_GetDC, 3490). --define(wxAuiManagerEvent_Veto, 3491). --define(wxAuiManagerEvent_GetVeto, 3492). --define(wxAuiManagerEvent_SetCanVeto, 3493). --define(wxAuiManagerEvent_CanVeto, 3494). --define(wxLogNull_new, 3495). --define(wxLogNull_destroy, 3496). +-define(wxControlWithItems_getClientData, 885). +-define(wxControlWithItems_setClientData, 886). +-define(wxControlWithItems_GetCount, 887). +-define(wxControlWithItems_GetSelection, 888). +-define(wxControlWithItems_GetString, 889). +-define(wxControlWithItems_GetStringSelection, 890). +-define(wxControlWithItems_Insert_2, 891). +-define(wxControlWithItems_Insert_3, 892). +-define(wxControlWithItems_IsEmpty, 893). +-define(wxControlWithItems_Select, 894). +-define(wxControlWithItems_SetSelection, 895). +-define(wxControlWithItems_SetString, 896). +-define(wxControlWithItems_SetStringSelection, 897). +-define(wxMenu_new_2, 900). +-define(wxMenu_new_1, 901). +-define(wxMenu_destruct, 903). +-define(wxMenu_Append_3, 904). +-define(wxMenu_Append_1, 905). +-define(wxMenu_Append_4_0, 906). +-define(wxMenu_Append_4_1, 907). +-define(wxMenu_AppendCheckItem, 908). +-define(wxMenu_AppendRadioItem, 909). +-define(wxMenu_AppendSeparator, 910). +-define(wxMenu_Break, 911). +-define(wxMenu_Check, 912). +-define(wxMenu_Delete_1_0, 913). +-define(wxMenu_Delete_1_1, 914). +-define(wxMenu_Destroy_1_0, 915). +-define(wxMenu_Destroy_1_1, 916). +-define(wxMenu_Enable, 917). +-define(wxMenu_FindItem_1, 918). +-define(wxMenu_FindItem_2, 919). +-define(wxMenu_FindItemByPosition, 920). +-define(wxMenu_GetHelpString, 921). +-define(wxMenu_GetLabel, 922). +-define(wxMenu_GetMenuItemCount, 923). +-define(wxMenu_GetMenuItems, 924). +-define(wxMenu_GetTitle, 926). +-define(wxMenu_Insert_2, 927). +-define(wxMenu_Insert_3, 928). +-define(wxMenu_Insert_5_1, 929). +-define(wxMenu_Insert_5_0, 930). +-define(wxMenu_InsertCheckItem, 931). +-define(wxMenu_InsertRadioItem, 932). +-define(wxMenu_InsertSeparator, 933). +-define(wxMenu_IsChecked, 934). +-define(wxMenu_IsEnabled, 935). +-define(wxMenu_Prepend_1, 936). +-define(wxMenu_Prepend_2, 937). +-define(wxMenu_Prepend_4_1, 938). +-define(wxMenu_Prepend_4_0, 939). +-define(wxMenu_PrependCheckItem, 940). +-define(wxMenu_PrependRadioItem, 941). +-define(wxMenu_PrependSeparator, 942). +-define(wxMenu_Remove_1_0, 943). +-define(wxMenu_Remove_1_1, 944). +-define(wxMenu_SetHelpString, 945). +-define(wxMenu_SetLabel, 946). +-define(wxMenu_SetTitle, 947). +-define(wxMenuItem_new, 948). +-define(wxMenuItem_destruct, 950). +-define(wxMenuItem_Check, 951). +-define(wxMenuItem_Enable, 952). +-define(wxMenuItem_GetBitmap, 953). +-define(wxMenuItem_GetHelp, 954). +-define(wxMenuItem_GetId, 955). +-define(wxMenuItem_GetKind, 956). +-define(wxMenuItem_GetLabel, 957). +-define(wxMenuItem_GetLabelFromText, 958). +-define(wxMenuItem_GetMenu, 959). +-define(wxMenuItem_GetText, 960). +-define(wxMenuItem_GetSubMenu, 961). +-define(wxMenuItem_IsCheckable, 962). +-define(wxMenuItem_IsChecked, 963). +-define(wxMenuItem_IsEnabled, 964). +-define(wxMenuItem_IsSeparator, 965). +-define(wxMenuItem_IsSubMenu, 966). +-define(wxMenuItem_SetBitmap, 967). +-define(wxMenuItem_SetHelp, 968). +-define(wxMenuItem_SetMenu, 969). +-define(wxMenuItem_SetSubMenu, 970). +-define(wxMenuItem_SetText, 971). +-define(wxToolBar_AddControl, 972). +-define(wxToolBar_AddSeparator, 973). +-define(wxToolBar_AddTool_5, 974). +-define(wxToolBar_AddTool_4_0, 975). +-define(wxToolBar_AddTool_1, 976). +-define(wxToolBar_AddTool_4_1, 977). +-define(wxToolBar_AddTool_3, 978). +-define(wxToolBar_AddTool_6, 979). +-define(wxToolBar_AddCheckTool, 980). +-define(wxToolBar_AddRadioTool, 981). +-define(wxToolBar_DeleteTool, 982). +-define(wxToolBar_DeleteToolByPos, 983). +-define(wxToolBar_EnableTool, 984). +-define(wxToolBar_FindById, 985). +-define(wxToolBar_FindControl, 986). +-define(wxToolBar_FindToolForPosition, 987). +-define(wxToolBar_GetToolSize, 988). +-define(wxToolBar_GetToolBitmapSize, 989). +-define(wxToolBar_GetMargins, 990). +-define(wxToolBar_GetToolEnabled, 991). +-define(wxToolBar_GetToolLongHelp, 992). +-define(wxToolBar_GetToolPacking, 993). +-define(wxToolBar_GetToolPos, 994). +-define(wxToolBar_GetToolSeparation, 995). +-define(wxToolBar_GetToolShortHelp, 996). +-define(wxToolBar_GetToolState, 997). +-define(wxToolBar_InsertControl, 998). +-define(wxToolBar_InsertSeparator, 999). +-define(wxToolBar_InsertTool_5, 1000). +-define(wxToolBar_InsertTool_2, 1001). +-define(wxToolBar_InsertTool_4, 1002). +-define(wxToolBar_Realize, 1003). +-define(wxToolBar_RemoveTool, 1004). +-define(wxToolBar_SetMargins, 1005). +-define(wxToolBar_SetToolBitmapSize, 1006). +-define(wxToolBar_SetToolLongHelp, 1007). +-define(wxToolBar_SetToolPacking, 1008). +-define(wxToolBar_SetToolShortHelp, 1009). +-define(wxToolBar_SetToolSeparation, 1010). +-define(wxToolBar_ToggleTool, 1011). +-define(wxStatusBar_new_0, 1013). +-define(wxStatusBar_new_2, 1014). +-define(wxStatusBar_destruct, 1016). +-define(wxStatusBar_Create, 1017). +-define(wxStatusBar_GetFieldRect, 1018). +-define(wxStatusBar_GetFieldsCount, 1019). +-define(wxStatusBar_GetStatusText, 1020). +-define(wxStatusBar_PopStatusText, 1021). +-define(wxStatusBar_PushStatusText, 1022). +-define(wxStatusBar_SetFieldsCount, 1023). +-define(wxStatusBar_SetMinHeight, 1024). +-define(wxStatusBar_SetStatusText, 1025). +-define(wxStatusBar_SetStatusWidths, 1026). +-define(wxStatusBar_SetStatusStyles, 1027). +-define(wxBitmap_new_0, 1028). +-define(wxBitmap_new_3, 1029). +-define(wxBitmap_new_4, 1030). +-define(wxBitmap_new_2_0, 1031). +-define(wxBitmap_new_2_1, 1032). +-define(wxBitmap_destruct, 1033). +-define(wxBitmap_ConvertToImage, 1034). +-define(wxBitmap_CopyFromIcon, 1035). +-define(wxBitmap_Create, 1036). +-define(wxBitmap_GetDepth, 1037). +-define(wxBitmap_GetHeight, 1038). +-define(wxBitmap_GetPalette, 1039). +-define(wxBitmap_GetMask, 1040). +-define(wxBitmap_GetWidth, 1041). +-define(wxBitmap_GetSubBitmap, 1042). +-define(wxBitmap_LoadFile, 1043). +-define(wxBitmap_Ok, 1044). +-define(wxBitmap_SaveFile, 1045). +-define(wxBitmap_SetDepth, 1046). +-define(wxBitmap_SetHeight, 1047). +-define(wxBitmap_SetMask, 1048). +-define(wxBitmap_SetPalette, 1049). +-define(wxBitmap_SetWidth, 1050). +-define(wxIcon_new_0, 1051). +-define(wxIcon_new_2, 1052). +-define(wxIcon_new_1, 1053). +-define(wxIcon_CopyFromBitmap, 1054). +-define(wxIcon_destroy, 1055). +-define(wxIconBundle_new_0, 1056). +-define(wxIconBundle_new_2, 1057). +-define(wxIconBundle_new_1_0, 1058). +-define(wxIconBundle_new_1_1, 1059). +-define(wxIconBundle_destruct, 1060). +-define(wxIconBundle_AddIcon_2, 1061). +-define(wxIconBundle_AddIcon_1, 1062). +-define(wxIconBundle_GetIcon_1_1, 1063). +-define(wxIconBundle_GetIcon_1_0, 1064). +-define(wxCursor_new_0, 1065). +-define(wxCursor_new_1_0, 1066). +-define(wxCursor_new_1_1, 1067). +-define(wxCursor_new_4, 1068). +-define(wxCursor_destruct, 1069). +-define(wxCursor_Ok, 1070). +-define(wxMask_new_0, 1071). +-define(wxMask_new_2_1, 1072). +-define(wxMask_new_2_0, 1073). +-define(wxMask_new_1, 1074). +-define(wxMask_destruct, 1075). +-define(wxMask_Create_2_1, 1076). +-define(wxMask_Create_2_0, 1077). +-define(wxMask_Create_1, 1078). +-define(wxImage_new_0, 1079). +-define(wxImage_new_3_0, 1080). +-define(wxImage_new_4, 1081). +-define(wxImage_new_5, 1082). +-define(wxImage_new_2, 1083). +-define(wxImage_new_3_1, 1084). +-define(wxImage_Blur, 1085). +-define(wxImage_BlurHorizontal, 1086). +-define(wxImage_BlurVertical, 1087). +-define(wxImage_ConvertAlphaToMask, 1088). +-define(wxImage_ConvertToGreyscale, 1089). +-define(wxImage_ConvertToMono, 1090). +-define(wxImage_Copy, 1091). +-define(wxImage_Create_3, 1092). +-define(wxImage_Create_4, 1093). +-define(wxImage_Create_5, 1094). +-define(wxImage_Destroy, 1095). +-define(wxImage_FindFirstUnusedColour, 1096). +-define(wxImage_GetImageExtWildcard, 1097). +-define(wxImage_GetAlpha_2, 1098). +-define(wxImage_GetAlpha_0, 1099). +-define(wxImage_GetBlue, 1100). +-define(wxImage_GetData, 1101). +-define(wxImage_GetGreen, 1102). +-define(wxImage_GetImageCount, 1103). +-define(wxImage_GetHeight, 1104). +-define(wxImage_GetMaskBlue, 1105). +-define(wxImage_GetMaskGreen, 1106). +-define(wxImage_GetMaskRed, 1107). +-define(wxImage_GetOrFindMaskColour, 1108). +-define(wxImage_GetPalette, 1109). +-define(wxImage_GetRed, 1110). +-define(wxImage_GetSubImage, 1111). +-define(wxImage_GetWidth, 1112). +-define(wxImage_HasAlpha, 1113). +-define(wxImage_HasMask, 1114). +-define(wxImage_GetOption, 1115). +-define(wxImage_GetOptionInt, 1116). +-define(wxImage_HasOption, 1117). +-define(wxImage_InitAlpha, 1118). +-define(wxImage_InitStandardHandlers, 1119). +-define(wxImage_IsTransparent, 1120). +-define(wxImage_LoadFile_2, 1121). +-define(wxImage_LoadFile_3, 1122). +-define(wxImage_Ok, 1123). +-define(wxImage_RemoveHandler, 1124). +-define(wxImage_Mirror, 1125). +-define(wxImage_Replace, 1126). +-define(wxImage_Rescale, 1127). +-define(wxImage_Resize, 1128). +-define(wxImage_Rotate, 1129). +-define(wxImage_RotateHue, 1130). +-define(wxImage_Rotate90, 1131). +-define(wxImage_SaveFile_1, 1132). +-define(wxImage_SaveFile_2_0, 1133). +-define(wxImage_SaveFile_2_1, 1134). +-define(wxImage_Scale, 1135). +-define(wxImage_Size, 1136). +-define(wxImage_SetAlpha_3, 1137). +-define(wxImage_SetAlpha_2, 1138). +-define(wxImage_SetData_2, 1139). +-define(wxImage_SetData_4, 1140). +-define(wxImage_SetMask, 1141). +-define(wxImage_SetMaskColour, 1142). +-define(wxImage_SetMaskFromImage, 1143). +-define(wxImage_SetOption_2_1, 1144). +-define(wxImage_SetOption_2_0, 1145). +-define(wxImage_SetPalette, 1146). +-define(wxImage_SetRGB_5, 1147). +-define(wxImage_SetRGB_4, 1148). +-define(wxImage_destroy, 1149). +-define(wxBrush_new_0, 1150). +-define(wxBrush_new_2, 1151). +-define(wxBrush_new_1, 1152). +-define(wxBrush_destruct, 1154). +-define(wxBrush_GetColour, 1155). +-define(wxBrush_GetStipple, 1156). +-define(wxBrush_GetStyle, 1157). +-define(wxBrush_IsHatch, 1158). +-define(wxBrush_IsOk, 1159). +-define(wxBrush_SetColour_1, 1160). +-define(wxBrush_SetColour_3, 1161). +-define(wxBrush_SetStipple, 1162). +-define(wxBrush_SetStyle, 1163). +-define(wxPen_new_0, 1164). +-define(wxPen_new_2, 1165). +-define(wxPen_destruct, 1166). +-define(wxPen_GetCap, 1167). +-define(wxPen_GetColour, 1168). +-define(wxPen_GetJoin, 1169). +-define(wxPen_GetStyle, 1170). +-define(wxPen_GetWidth, 1171). +-define(wxPen_IsOk, 1172). +-define(wxPen_SetCap, 1173). +-define(wxPen_SetColour_1, 1174). +-define(wxPen_SetColour_3, 1175). +-define(wxPen_SetJoin, 1176). +-define(wxPen_SetStyle, 1177). +-define(wxPen_SetWidth, 1178). +-define(wxRegion_new_0, 1179). +-define(wxRegion_new_4, 1180). +-define(wxRegion_new_2, 1181). +-define(wxRegion_new_1_1, 1182). +-define(wxRegion_new_1_0, 1184). +-define(wxRegion_destruct, 1186). +-define(wxRegion_Clear, 1187). +-define(wxRegion_Contains_2, 1188). +-define(wxRegion_Contains_1_0, 1189). +-define(wxRegion_Contains_4, 1190). +-define(wxRegion_Contains_1_1, 1191). +-define(wxRegion_ConvertToBitmap, 1192). +-define(wxRegion_GetBox, 1193). +-define(wxRegion_Intersect_4, 1194). +-define(wxRegion_Intersect_1_1, 1195). +-define(wxRegion_Intersect_1_0, 1196). +-define(wxRegion_IsEmpty, 1197). +-define(wxRegion_Subtract_4, 1198). +-define(wxRegion_Subtract_1_1, 1199). +-define(wxRegion_Subtract_1_0, 1200). +-define(wxRegion_Offset_2, 1201). +-define(wxRegion_Offset_1, 1202). +-define(wxRegion_Union_4, 1203). +-define(wxRegion_Union_1_2, 1204). +-define(wxRegion_Union_1_1, 1205). +-define(wxRegion_Union_1_0, 1206). +-define(wxRegion_Union_3, 1207). +-define(wxRegion_Xor_4, 1208). +-define(wxRegion_Xor_1_1, 1209). +-define(wxRegion_Xor_1_0, 1210). +-define(wxAcceleratorTable_new_0, 1211). +-define(wxAcceleratorTable_new_2, 1212). +-define(wxAcceleratorTable_destruct, 1213). +-define(wxAcceleratorTable_Ok, 1214). +-define(wxAcceleratorEntry_new_1_0, 1215). +-define(wxAcceleratorEntry_new_1_1, 1216). +-define(wxAcceleratorEntry_GetCommand, 1217). +-define(wxAcceleratorEntry_GetFlags, 1218). +-define(wxAcceleratorEntry_GetKeyCode, 1219). +-define(wxAcceleratorEntry_Set, 1220). +-define(wxAcceleratorEntry_destroy, 1221). +-define(wxCaret_new_3, 1226). +-define(wxCaret_new_2, 1227). +-define(wxCaret_destruct, 1229). +-define(wxCaret_Create_3, 1230). +-define(wxCaret_Create_2, 1231). +-define(wxCaret_GetBlinkTime, 1232). +-define(wxCaret_GetPosition, 1234). +-define(wxCaret_GetSize, 1236). +-define(wxCaret_GetWindow, 1237). +-define(wxCaret_Hide, 1238). +-define(wxCaret_IsOk, 1239). +-define(wxCaret_IsVisible, 1240). +-define(wxCaret_Move_2, 1241). +-define(wxCaret_Move_1, 1242). +-define(wxCaret_SetBlinkTime, 1243). +-define(wxCaret_SetSize_2, 1244). +-define(wxCaret_SetSize_1, 1245). +-define(wxCaret_Show, 1246). +-define(wxSizer_Add_2_1, 1247). +-define(wxSizer_Add_2_0, 1248). +-define(wxSizer_Add_3, 1249). +-define(wxSizer_Add_2_3, 1250). +-define(wxSizer_Add_2_2, 1251). +-define(wxSizer_AddSpacer, 1252). +-define(wxSizer_AddStretchSpacer, 1253). +-define(wxSizer_CalcMin, 1254). +-define(wxSizer_Clear, 1255). +-define(wxSizer_Detach_1_2, 1256). +-define(wxSizer_Detach_1_1, 1257). +-define(wxSizer_Detach_1_0, 1258). +-define(wxSizer_Fit, 1259). +-define(wxSizer_FitInside, 1260). +-define(wxSizer_GetChildren, 1261). +-define(wxSizer_GetItem_2_1, 1262). +-define(wxSizer_GetItem_2_0, 1263). +-define(wxSizer_GetItem_1, 1264). +-define(wxSizer_GetSize, 1265). +-define(wxSizer_GetPosition, 1266). +-define(wxSizer_GetMinSize, 1267). +-define(wxSizer_Hide_2_0, 1268). +-define(wxSizer_Hide_2_1, 1269). +-define(wxSizer_Hide_1, 1270). +-define(wxSizer_Insert_3_1, 1271). +-define(wxSizer_Insert_3_0, 1272). +-define(wxSizer_Insert_4, 1273). +-define(wxSizer_Insert_3_3, 1274). +-define(wxSizer_Insert_3_2, 1275). +-define(wxSizer_Insert_2, 1276). +-define(wxSizer_InsertSpacer, 1277). +-define(wxSizer_InsertStretchSpacer, 1278). +-define(wxSizer_IsShown_1_2, 1279). +-define(wxSizer_IsShown_1_1, 1280). +-define(wxSizer_IsShown_1_0, 1281). +-define(wxSizer_Layout, 1282). +-define(wxSizer_Prepend_2_1, 1283). +-define(wxSizer_Prepend_2_0, 1284). +-define(wxSizer_Prepend_3, 1285). +-define(wxSizer_Prepend_2_3, 1286). +-define(wxSizer_Prepend_2_2, 1287). +-define(wxSizer_Prepend_1, 1288). +-define(wxSizer_PrependSpacer, 1289). +-define(wxSizer_PrependStretchSpacer, 1290). +-define(wxSizer_RecalcSizes, 1291). +-define(wxSizer_Remove_1_1, 1292). +-define(wxSizer_Remove_1_0, 1293). +-define(wxSizer_Replace_3_1, 1294). +-define(wxSizer_Replace_3_0, 1295). +-define(wxSizer_Replace_2, 1296). +-define(wxSizer_SetDimension, 1297). +-define(wxSizer_SetMinSize_2, 1298). +-define(wxSizer_SetMinSize_1, 1299). +-define(wxSizer_SetItemMinSize_3_2, 1300). +-define(wxSizer_SetItemMinSize_2_2, 1301). +-define(wxSizer_SetItemMinSize_3_1, 1302). +-define(wxSizer_SetItemMinSize_2_1, 1303). +-define(wxSizer_SetItemMinSize_3_0, 1304). +-define(wxSizer_SetItemMinSize_2_0, 1305). +-define(wxSizer_SetSizeHints, 1306). +-define(wxSizer_SetVirtualSizeHints, 1307). +-define(wxSizer_Show_2_2, 1308). +-define(wxSizer_Show_2_1, 1309). +-define(wxSizer_Show_2_0, 1310). +-define(wxSizer_Show_1, 1311). +-define(wxSizerFlags_new, 1312). +-define(wxSizerFlags_Align, 1313). +-define(wxSizerFlags_Border_2, 1314). +-define(wxSizerFlags_Border_1, 1315). +-define(wxSizerFlags_Center, 1316). +-define(wxSizerFlags_Centre, 1317). +-define(wxSizerFlags_Expand, 1318). +-define(wxSizerFlags_Left, 1319). +-define(wxSizerFlags_Proportion, 1320). +-define(wxSizerFlags_Right, 1321). +-define(wxSizerFlags_destroy, 1322). +-define(wxSizerItem_new_5_1, 1323). +-define(wxSizerItem_new_2_1, 1324). +-define(wxSizerItem_new_5_0, 1325). +-define(wxSizerItem_new_2_0, 1326). +-define(wxSizerItem_new_6, 1327). +-define(wxSizerItem_new_3, 1328). +-define(wxSizerItem_new_0, 1329). +-define(wxSizerItem_destruct, 1330). +-define(wxSizerItem_CalcMin, 1331). +-define(wxSizerItem_DeleteWindows, 1332). +-define(wxSizerItem_DetachSizer, 1333). +-define(wxSizerItem_GetBorder, 1334). +-define(wxSizerItem_GetFlag, 1335). +-define(wxSizerItem_GetMinSize, 1336). +-define(wxSizerItem_GetPosition, 1337). +-define(wxSizerItem_GetProportion, 1338). +-define(wxSizerItem_GetRatio, 1339). +-define(wxSizerItem_GetRect, 1340). +-define(wxSizerItem_GetSize, 1341). +-define(wxSizerItem_GetSizer, 1342). +-define(wxSizerItem_GetSpacer, 1343). +-define(wxSizerItem_GetUserData, 1344). +-define(wxSizerItem_GetWindow, 1345). +-define(wxSizerItem_IsSizer, 1346). +-define(wxSizerItem_IsShown, 1347). +-define(wxSizerItem_IsSpacer, 1348). +-define(wxSizerItem_IsWindow, 1349). +-define(wxSizerItem_SetBorder, 1350). +-define(wxSizerItem_SetDimension, 1351). +-define(wxSizerItem_SetFlag, 1352). +-define(wxSizerItem_SetInitSize, 1353). +-define(wxSizerItem_SetMinSize_1, 1354). +-define(wxSizerItem_SetMinSize_2, 1355). +-define(wxSizerItem_SetProportion, 1356). +-define(wxSizerItem_SetRatio_2, 1357). +-define(wxSizerItem_SetRatio_1_1, 1358). +-define(wxSizerItem_SetRatio_1_0, 1359). +-define(wxSizerItem_SetSizer, 1360). +-define(wxSizerItem_SetSpacer_1, 1361). +-define(wxSizerItem_SetSpacer_2, 1362). +-define(wxSizerItem_SetWindow, 1363). +-define(wxSizerItem_Show, 1364). +-define(wxBoxSizer_new, 1365). +-define(wxBoxSizer_GetOrientation, 1366). +-define(wxBoxSizer_destroy, 1367). +-define(wxStaticBoxSizer_new_2, 1368). +-define(wxStaticBoxSizer_new_3, 1369). +-define(wxStaticBoxSizer_GetStaticBox, 1370). +-define(wxStaticBoxSizer_destroy, 1371). +-define(wxGridSizer_new_4, 1372). +-define(wxGridSizer_new_2, 1373). +-define(wxGridSizer_GetCols, 1374). +-define(wxGridSizer_GetHGap, 1375). +-define(wxGridSizer_GetRows, 1376). +-define(wxGridSizer_GetVGap, 1377). +-define(wxGridSizer_SetCols, 1378). +-define(wxGridSizer_SetHGap, 1379). +-define(wxGridSizer_SetRows, 1380). +-define(wxGridSizer_SetVGap, 1381). +-define(wxGridSizer_destroy, 1382). +-define(wxFlexGridSizer_new_4, 1383). +-define(wxFlexGridSizer_new_2, 1384). +-define(wxFlexGridSizer_AddGrowableCol, 1385). +-define(wxFlexGridSizer_AddGrowableRow, 1386). +-define(wxFlexGridSizer_GetFlexibleDirection, 1387). +-define(wxFlexGridSizer_GetNonFlexibleGrowMode, 1388). +-define(wxFlexGridSizer_RemoveGrowableCol, 1389). +-define(wxFlexGridSizer_RemoveGrowableRow, 1390). +-define(wxFlexGridSizer_SetFlexibleDirection, 1391). +-define(wxFlexGridSizer_SetNonFlexibleGrowMode, 1392). +-define(wxFlexGridSizer_destroy, 1393). +-define(wxGridBagSizer_new, 1394). +-define(wxGridBagSizer_Add_3_2, 1395). +-define(wxGridBagSizer_Add_3_1, 1396). +-define(wxGridBagSizer_Add_4, 1397). +-define(wxGridBagSizer_Add_1_0, 1398). +-define(wxGridBagSizer_Add_2_1, 1399). +-define(wxGridBagSizer_Add_2_0, 1400). +-define(wxGridBagSizer_Add_3_0, 1401). +-define(wxGridBagSizer_Add_1_1, 1402). +-define(wxGridBagSizer_CalcMin, 1403). +-define(wxGridBagSizer_CheckForIntersection_2, 1404). +-define(wxGridBagSizer_CheckForIntersection_3, 1405). +-define(wxGridBagSizer_FindItem_1_1, 1406). +-define(wxGridBagSizer_FindItem_1_0, 1407). +-define(wxGridBagSizer_FindItemAtPoint, 1408). +-define(wxGridBagSizer_FindItemAtPosition, 1409). +-define(wxGridBagSizer_FindItemWithData, 1410). +-define(wxGridBagSizer_GetCellSize, 1411). +-define(wxGridBagSizer_GetEmptyCellSize, 1412). +-define(wxGridBagSizer_GetItemPosition_1_2, 1413). +-define(wxGridBagSizer_GetItemPosition_1_1, 1414). +-define(wxGridBagSizer_GetItemPosition_1_0, 1415). +-define(wxGridBagSizer_GetItemSpan_1_2, 1416). +-define(wxGridBagSizer_GetItemSpan_1_1, 1417). +-define(wxGridBagSizer_GetItemSpan_1_0, 1418). +-define(wxGridBagSizer_SetEmptyCellSize, 1419). +-define(wxGridBagSizer_SetItemPosition_2_2, 1420). +-define(wxGridBagSizer_SetItemPosition_2_1, 1421). +-define(wxGridBagSizer_SetItemPosition_2_0, 1422). +-define(wxGridBagSizer_SetItemSpan_2_2, 1423). +-define(wxGridBagSizer_SetItemSpan_2_1, 1424). +-define(wxGridBagSizer_SetItemSpan_2_0, 1425). +-define(wxGridBagSizer_destroy, 1426). +-define(wxStdDialogButtonSizer_new, 1427). +-define(wxStdDialogButtonSizer_AddButton, 1428). +-define(wxStdDialogButtonSizer_Realize, 1429). +-define(wxStdDialogButtonSizer_SetAffirmativeButton, 1430). +-define(wxStdDialogButtonSizer_SetCancelButton, 1431). +-define(wxStdDialogButtonSizer_SetNegativeButton, 1432). +-define(wxStdDialogButtonSizer_destroy, 1433). +-define(wxFont_new_0, 1434). +-define(wxFont_new_1, 1435). +-define(wxFont_new_5, 1436). +-define(wxFont_destruct, 1438). +-define(wxFont_IsFixedWidth, 1439). +-define(wxFont_GetDefaultEncoding, 1440). +-define(wxFont_GetFaceName, 1441). +-define(wxFont_GetFamily, 1442). +-define(wxFont_GetNativeFontInfoDesc, 1443). +-define(wxFont_GetNativeFontInfoUserDesc, 1444). +-define(wxFont_GetPointSize, 1445). +-define(wxFont_GetStyle, 1446). +-define(wxFont_GetUnderlined, 1447). +-define(wxFont_GetWeight, 1448). +-define(wxFont_Ok, 1449). +-define(wxFont_SetDefaultEncoding, 1450). +-define(wxFont_SetFaceName, 1451). +-define(wxFont_SetFamily, 1452). +-define(wxFont_SetPointSize, 1453). +-define(wxFont_SetStyle, 1454). +-define(wxFont_SetUnderlined, 1455). +-define(wxFont_SetWeight, 1456). +-define(wxToolTip_Enable, 1457). +-define(wxToolTip_SetDelay, 1458). +-define(wxToolTip_new, 1459). +-define(wxToolTip_SetTip, 1460). +-define(wxToolTip_GetTip, 1461). +-define(wxToolTip_GetWindow, 1462). +-define(wxToolTip_destroy, 1463). +-define(wxButton_new_3, 1465). +-define(wxButton_new_0, 1466). +-define(wxButton_destruct, 1467). +-define(wxButton_Create, 1468). +-define(wxButton_GetDefaultSize, 1469). +-define(wxButton_SetDefault, 1470). +-define(wxButton_SetLabel, 1471). +-define(wxBitmapButton_new_4, 1473). +-define(wxBitmapButton_new_0, 1474). +-define(wxBitmapButton_Create, 1475). +-define(wxBitmapButton_GetBitmapDisabled, 1476). +-define(wxBitmapButton_GetBitmapFocus, 1478). +-define(wxBitmapButton_GetBitmapLabel, 1480). +-define(wxBitmapButton_GetBitmapSelected, 1482). +-define(wxBitmapButton_SetBitmapDisabled, 1484). +-define(wxBitmapButton_SetBitmapFocus, 1485). +-define(wxBitmapButton_SetBitmapLabel, 1486). +-define(wxBitmapButton_SetBitmapSelected, 1487). +-define(wxBitmapButton_destroy, 1488). +-define(wxToggleButton_new_0, 1489). +-define(wxToggleButton_new_4, 1490). +-define(wxToggleButton_Create, 1491). +-define(wxToggleButton_GetValue, 1492). +-define(wxToggleButton_SetValue, 1493). +-define(wxToggleButton_destroy, 1494). +-define(wxCalendarCtrl_new_0, 1495). +-define(wxCalendarCtrl_new_3, 1496). +-define(wxCalendarCtrl_Create, 1497). +-define(wxCalendarCtrl_destruct, 1498). +-define(wxCalendarCtrl_SetDate, 1499). +-define(wxCalendarCtrl_GetDate, 1500). +-define(wxCalendarCtrl_EnableYearChange, 1501). +-define(wxCalendarCtrl_EnableMonthChange, 1502). +-define(wxCalendarCtrl_EnableHolidayDisplay, 1503). +-define(wxCalendarCtrl_SetHeaderColours, 1504). +-define(wxCalendarCtrl_GetHeaderColourFg, 1505). +-define(wxCalendarCtrl_GetHeaderColourBg, 1506). +-define(wxCalendarCtrl_SetHighlightColours, 1507). +-define(wxCalendarCtrl_GetHighlightColourFg, 1508). +-define(wxCalendarCtrl_GetHighlightColourBg, 1509). +-define(wxCalendarCtrl_SetHolidayColours, 1510). +-define(wxCalendarCtrl_GetHolidayColourFg, 1511). +-define(wxCalendarCtrl_GetHolidayColourBg, 1512). +-define(wxCalendarCtrl_GetAttr, 1513). +-define(wxCalendarCtrl_SetAttr, 1514). +-define(wxCalendarCtrl_SetHoliday, 1515). +-define(wxCalendarCtrl_ResetAttr, 1516). +-define(wxCalendarCtrl_HitTest, 1517). +-define(wxCalendarDateAttr_new_0, 1518). +-define(wxCalendarDateAttr_new_2_1, 1519). +-define(wxCalendarDateAttr_new_2_0, 1520). +-define(wxCalendarDateAttr_SetTextColour, 1521). +-define(wxCalendarDateAttr_SetBackgroundColour, 1522). +-define(wxCalendarDateAttr_SetBorderColour, 1523). +-define(wxCalendarDateAttr_SetFont, 1524). +-define(wxCalendarDateAttr_SetBorder, 1525). +-define(wxCalendarDateAttr_SetHoliday, 1526). +-define(wxCalendarDateAttr_HasTextColour, 1527). +-define(wxCalendarDateAttr_HasBackgroundColour, 1528). +-define(wxCalendarDateAttr_HasBorderColour, 1529). +-define(wxCalendarDateAttr_HasFont, 1530). +-define(wxCalendarDateAttr_HasBorder, 1531). +-define(wxCalendarDateAttr_IsHoliday, 1532). +-define(wxCalendarDateAttr_GetTextColour, 1533). +-define(wxCalendarDateAttr_GetBackgroundColour, 1534). +-define(wxCalendarDateAttr_GetBorderColour, 1535). +-define(wxCalendarDateAttr_GetFont, 1536). +-define(wxCalendarDateAttr_GetBorder, 1537). +-define(wxCalendarDateAttr_destroy, 1538). +-define(wxCheckBox_new_4, 1540). +-define(wxCheckBox_new_0, 1541). +-define(wxCheckBox_Create, 1542). +-define(wxCheckBox_GetValue, 1543). +-define(wxCheckBox_Get3StateValue, 1544). +-define(wxCheckBox_Is3rdStateAllowedForUser, 1545). +-define(wxCheckBox_Is3State, 1546). +-define(wxCheckBox_IsChecked, 1547). +-define(wxCheckBox_SetValue, 1548). +-define(wxCheckBox_Set3StateValue, 1549). +-define(wxCheckBox_destroy, 1550). +-define(wxCheckListBox_new_0, 1551). +-define(wxCheckListBox_new_3, 1553). +-define(wxCheckListBox_Check, 1554). +-define(wxCheckListBox_IsChecked, 1555). +-define(wxCheckListBox_destroy, 1556). +-define(wxChoice_new_3, 1559). +-define(wxChoice_new_0, 1560). +-define(wxChoice_destruct, 1562). +-define(wxChoice_Create, 1564). +-define(wxChoice_Delete, 1565). +-define(wxChoice_GetColumns, 1566). +-define(wxChoice_SetColumns, 1567). +-define(wxComboBox_new_0, 1568). +-define(wxComboBox_new_3, 1570). +-define(wxComboBox_destruct, 1571). +-define(wxComboBox_Create, 1573). +-define(wxComboBox_CanCopy, 1574). +-define(wxComboBox_CanCut, 1575). +-define(wxComboBox_CanPaste, 1576). +-define(wxComboBox_CanRedo, 1577). +-define(wxComboBox_CanUndo, 1578). +-define(wxComboBox_Copy, 1579). +-define(wxComboBox_Cut, 1580). +-define(wxComboBox_GetInsertionPoint, 1581). +-define(wxComboBox_GetLastPosition, 1582). +-define(wxComboBox_GetValue, 1583). +-define(wxComboBox_Paste, 1584). +-define(wxComboBox_Redo, 1585). +-define(wxComboBox_Replace, 1586). +-define(wxComboBox_Remove, 1587). +-define(wxComboBox_SetInsertionPoint, 1588). +-define(wxComboBox_SetInsertionPointEnd, 1589). +-define(wxComboBox_SetSelection_1, 1590). +-define(wxComboBox_SetSelection_2, 1591). +-define(wxComboBox_SetValue, 1592). +-define(wxComboBox_Undo, 1593). +-define(wxGauge_new_0, 1594). +-define(wxGauge_new_4, 1595). +-define(wxGauge_Create, 1596). +-define(wxGauge_GetBezelFace, 1597). +-define(wxGauge_GetRange, 1598). +-define(wxGauge_GetShadowWidth, 1599). +-define(wxGauge_GetValue, 1600). +-define(wxGauge_IsVertical, 1601). +-define(wxGauge_SetBezelFace, 1602). +-define(wxGauge_SetRange, 1603). +-define(wxGauge_SetShadowWidth, 1604). +-define(wxGauge_SetValue, 1605). +-define(wxGauge_Pulse, 1606). +-define(wxGauge_destroy, 1607). +-define(wxGenericDirCtrl_new_0, 1608). +-define(wxGenericDirCtrl_new_2, 1609). +-define(wxGenericDirCtrl_destruct, 1610). +-define(wxGenericDirCtrl_Create, 1611). +-define(wxGenericDirCtrl_Init, 1612). +-define(wxGenericDirCtrl_CollapseTree, 1613). +-define(wxGenericDirCtrl_ExpandPath, 1614). +-define(wxGenericDirCtrl_GetDefaultPath, 1615). +-define(wxGenericDirCtrl_GetPath, 1616). +-define(wxGenericDirCtrl_GetFilePath, 1617). +-define(wxGenericDirCtrl_GetFilter, 1618). +-define(wxGenericDirCtrl_GetFilterIndex, 1619). +-define(wxGenericDirCtrl_GetRootId, 1620). +-define(wxGenericDirCtrl_GetTreeCtrl, 1621). +-define(wxGenericDirCtrl_ReCreateTree, 1622). +-define(wxGenericDirCtrl_SetDefaultPath, 1623). +-define(wxGenericDirCtrl_SetFilter, 1624). +-define(wxGenericDirCtrl_SetFilterIndex, 1625). +-define(wxGenericDirCtrl_SetPath, 1626). +-define(wxStaticBox_new_4, 1628). +-define(wxStaticBox_new_0, 1629). +-define(wxStaticBox_Create, 1630). +-define(wxStaticBox_destroy, 1631). +-define(wxStaticLine_new_2, 1633). +-define(wxStaticLine_new_0, 1634). +-define(wxStaticLine_Create, 1635). +-define(wxStaticLine_IsVertical, 1636). +-define(wxStaticLine_GetDefaultSize, 1637). +-define(wxStaticLine_destroy, 1638). +-define(wxListBox_new_3, 1641). +-define(wxListBox_new_0, 1642). +-define(wxListBox_destruct, 1644). +-define(wxListBox_Create, 1646). +-define(wxListBox_Deselect, 1647). +-define(wxListBox_GetSelections, 1648). +-define(wxListBox_InsertItems, 1649). +-define(wxListBox_IsSelected, 1650). +-define(wxListBox_Set, 1652). +-define(wxListBox_HitTest, 1653). +-define(wxListBox_SetFirstItem_1_0, 1654). +-define(wxListBox_SetFirstItem_1_1, 1655). +-define(wxListCtrl_new_0, 1656). +-define(wxListCtrl_new_2, 1657). +-define(wxListCtrl_Arrange, 1658). +-define(wxListCtrl_AssignImageList, 1659). +-define(wxListCtrl_ClearAll, 1660). +-define(wxListCtrl_Create, 1661). +-define(wxListCtrl_DeleteAllItems, 1662). +-define(wxListCtrl_DeleteColumn, 1663). +-define(wxListCtrl_DeleteItem, 1664). +-define(wxListCtrl_EditLabel, 1665). +-define(wxListCtrl_EnsureVisible, 1666). +-define(wxListCtrl_FindItem_3_0, 1667). +-define(wxListCtrl_FindItem_3_1, 1668). +-define(wxListCtrl_GetColumn, 1669). +-define(wxListCtrl_GetColumnCount, 1670). +-define(wxListCtrl_GetColumnWidth, 1671). +-define(wxListCtrl_GetCountPerPage, 1672). +-define(wxListCtrl_GetEditControl, 1673). +-define(wxListCtrl_GetImageList, 1674). +-define(wxListCtrl_GetItem, 1675). +-define(wxListCtrl_GetItemBackgroundColour, 1676). +-define(wxListCtrl_GetItemCount, 1677). +-define(wxListCtrl_GetItemData, 1678). +-define(wxListCtrl_GetItemFont, 1679). +-define(wxListCtrl_GetItemPosition, 1680). +-define(wxListCtrl_GetItemRect, 1681). +-define(wxListCtrl_GetItemSpacing, 1682). +-define(wxListCtrl_GetItemState, 1683). +-define(wxListCtrl_GetItemText, 1684). +-define(wxListCtrl_GetItemTextColour, 1685). +-define(wxListCtrl_GetNextItem, 1686). +-define(wxListCtrl_GetSelectedItemCount, 1687). +-define(wxListCtrl_GetTextColour, 1688). +-define(wxListCtrl_GetTopItem, 1689). +-define(wxListCtrl_GetViewRect, 1690). +-define(wxListCtrl_HitTest, 1691). +-define(wxListCtrl_InsertColumn_2, 1692). +-define(wxListCtrl_InsertColumn_3, 1693). +-define(wxListCtrl_InsertItem_1, 1694). +-define(wxListCtrl_InsertItem_2_1, 1695). +-define(wxListCtrl_InsertItem_2_0, 1696). +-define(wxListCtrl_InsertItem_3, 1697). +-define(wxListCtrl_RefreshItem, 1698). +-define(wxListCtrl_RefreshItems, 1699). +-define(wxListCtrl_ScrollList, 1700). +-define(wxListCtrl_SetBackgroundColour, 1701). +-define(wxListCtrl_SetColumn, 1702). +-define(wxListCtrl_SetColumnWidth, 1703). +-define(wxListCtrl_SetImageList, 1704). +-define(wxListCtrl_SetItem_1, 1705). +-define(wxListCtrl_SetItem_4, 1706). +-define(wxListCtrl_SetItemBackgroundColour, 1707). +-define(wxListCtrl_SetItemCount, 1708). +-define(wxListCtrl_SetItemData, 1709). +-define(wxListCtrl_SetItemFont, 1710). +-define(wxListCtrl_SetItemImage, 1711). +-define(wxListCtrl_SetItemColumnImage, 1712). +-define(wxListCtrl_SetItemPosition, 1713). +-define(wxListCtrl_SetItemState, 1714). +-define(wxListCtrl_SetItemText, 1715). +-define(wxListCtrl_SetItemTextColour, 1716). +-define(wxListCtrl_SetSingleStyle, 1717). +-define(wxListCtrl_SetTextColour, 1718). +-define(wxListCtrl_SetWindowStyleFlag, 1719). +-define(wxListCtrl_SortItems, 1720). +-define(wxListCtrl_destroy, 1721). +-define(wxListView_ClearColumnImage, 1722). +-define(wxListView_Focus, 1723). +-define(wxListView_GetFirstSelected, 1724). +-define(wxListView_GetFocusedItem, 1725). +-define(wxListView_GetNextSelected, 1726). +-define(wxListView_IsSelected, 1727). +-define(wxListView_Select, 1728). +-define(wxListView_SetColumnImage, 1729). +-define(wxListItem_new_0, 1730). +-define(wxListItem_new_1, 1731). +-define(wxListItem_destruct, 1732). +-define(wxListItem_Clear, 1733). +-define(wxListItem_GetAlign, 1734). +-define(wxListItem_GetBackgroundColour, 1735). +-define(wxListItem_GetColumn, 1736). +-define(wxListItem_GetFont, 1737). +-define(wxListItem_GetId, 1738). +-define(wxListItem_GetImage, 1739). +-define(wxListItem_GetMask, 1740). +-define(wxListItem_GetState, 1741). +-define(wxListItem_GetText, 1742). +-define(wxListItem_GetTextColour, 1743). +-define(wxListItem_GetWidth, 1744). +-define(wxListItem_SetAlign, 1745). +-define(wxListItem_SetBackgroundColour, 1746). +-define(wxListItem_SetColumn, 1747). +-define(wxListItem_SetFont, 1748). +-define(wxListItem_SetId, 1749). +-define(wxListItem_SetImage, 1750). +-define(wxListItem_SetMask, 1751). +-define(wxListItem_SetState, 1752). +-define(wxListItem_SetStateMask, 1753). +-define(wxListItem_SetText, 1754). +-define(wxListItem_SetTextColour, 1755). +-define(wxListItem_SetWidth, 1756). +-define(wxImageList_new_0, 1757). +-define(wxImageList_new_3, 1758). +-define(wxImageList_Add_1, 1759). +-define(wxImageList_Add_2_0, 1760). +-define(wxImageList_Add_2_1, 1761). +-define(wxImageList_Create, 1762). +-define(wxImageList_Draw, 1764). +-define(wxImageList_GetBitmap, 1765). +-define(wxImageList_GetIcon, 1766). +-define(wxImageList_GetImageCount, 1767). +-define(wxImageList_GetSize, 1768). +-define(wxImageList_Remove, 1769). +-define(wxImageList_RemoveAll, 1770). +-define(wxImageList_Replace_2, 1771). +-define(wxImageList_Replace_3, 1772). +-define(wxImageList_destroy, 1773). +-define(wxTextAttr_new_0, 1774). +-define(wxTextAttr_new_2, 1775). +-define(wxTextAttr_GetAlignment, 1776). +-define(wxTextAttr_GetBackgroundColour, 1777). +-define(wxTextAttr_GetFont, 1778). +-define(wxTextAttr_GetLeftIndent, 1779). +-define(wxTextAttr_GetLeftSubIndent, 1780). +-define(wxTextAttr_GetRightIndent, 1781). +-define(wxTextAttr_GetTabs, 1782). +-define(wxTextAttr_GetTextColour, 1783). +-define(wxTextAttr_HasBackgroundColour, 1784). +-define(wxTextAttr_HasFont, 1785). +-define(wxTextAttr_HasTextColour, 1786). +-define(wxTextAttr_GetFlags, 1787). +-define(wxTextAttr_IsDefault, 1788). +-define(wxTextAttr_SetAlignment, 1789). +-define(wxTextAttr_SetBackgroundColour, 1790). +-define(wxTextAttr_SetFlags, 1791). +-define(wxTextAttr_SetFont, 1792). +-define(wxTextAttr_SetLeftIndent, 1793). +-define(wxTextAttr_SetRightIndent, 1794). +-define(wxTextAttr_SetTabs, 1795). +-define(wxTextAttr_SetTextColour, 1796). +-define(wxTextAttr_destroy, 1797). +-define(wxTextCtrl_new_3, 1799). +-define(wxTextCtrl_new_0, 1800). +-define(wxTextCtrl_destruct, 1802). +-define(wxTextCtrl_AppendText, 1803). +-define(wxTextCtrl_CanCopy, 1804). +-define(wxTextCtrl_CanCut, 1805). +-define(wxTextCtrl_CanPaste, 1806). +-define(wxTextCtrl_CanRedo, 1807). +-define(wxTextCtrl_CanUndo, 1808). +-define(wxTextCtrl_Clear, 1809). +-define(wxTextCtrl_Copy, 1810). +-define(wxTextCtrl_Create, 1811). +-define(wxTextCtrl_Cut, 1812). +-define(wxTextCtrl_DiscardEdits, 1813). +-define(wxTextCtrl_EmulateKeyPress, 1814). +-define(wxTextCtrl_GetDefaultStyle, 1815). +-define(wxTextCtrl_GetInsertionPoint, 1816). +-define(wxTextCtrl_GetLastPosition, 1817). +-define(wxTextCtrl_GetLineLength, 1818). +-define(wxTextCtrl_GetLineText, 1819). +-define(wxTextCtrl_GetNumberOfLines, 1820). +-define(wxTextCtrl_GetRange, 1821). +-define(wxTextCtrl_GetSelection, 1822). +-define(wxTextCtrl_GetStringSelection, 1823). +-define(wxTextCtrl_GetStyle, 1824). +-define(wxTextCtrl_GetValue, 1825). +-define(wxTextCtrl_IsEditable, 1826). +-define(wxTextCtrl_IsModified, 1827). +-define(wxTextCtrl_IsMultiLine, 1828). +-define(wxTextCtrl_IsSingleLine, 1829). +-define(wxTextCtrl_LoadFile, 1830). +-define(wxTextCtrl_MarkDirty, 1831). +-define(wxTextCtrl_Paste, 1832). +-define(wxTextCtrl_PositionToXY, 1833). +-define(wxTextCtrl_Redo, 1834). +-define(wxTextCtrl_Remove, 1835). +-define(wxTextCtrl_Replace, 1836). +-define(wxTextCtrl_SaveFile, 1837). +-define(wxTextCtrl_SetDefaultStyle, 1838). +-define(wxTextCtrl_SetEditable, 1839). +-define(wxTextCtrl_SetInsertionPoint, 1840). +-define(wxTextCtrl_SetInsertionPointEnd, 1841). +-define(wxTextCtrl_SetMaxLength, 1843). +-define(wxTextCtrl_SetSelection, 1844). +-define(wxTextCtrl_SetStyle, 1845). +-define(wxTextCtrl_SetValue, 1846). +-define(wxTextCtrl_ShowPosition, 1847). +-define(wxTextCtrl_Undo, 1848). +-define(wxTextCtrl_WriteText, 1849). +-define(wxTextCtrl_XYToPosition, 1850). +-define(wxNotebook_new_0, 1853). +-define(wxNotebook_new_3, 1854). +-define(wxNotebook_destruct, 1855). +-define(wxNotebook_AddPage, 1856). +-define(wxNotebook_AdvanceSelection, 1857). +-define(wxNotebook_AssignImageList, 1858). +-define(wxNotebook_Create, 1859). +-define(wxNotebook_DeleteAllPages, 1860). +-define(wxNotebook_DeletePage, 1861). +-define(wxNotebook_RemovePage, 1862). +-define(wxNotebook_GetCurrentPage, 1863). +-define(wxNotebook_GetImageList, 1864). +-define(wxNotebook_GetPage, 1866). +-define(wxNotebook_GetPageCount, 1867). +-define(wxNotebook_GetPageImage, 1868). +-define(wxNotebook_GetPageText, 1869). +-define(wxNotebook_GetRowCount, 1870). +-define(wxNotebook_GetSelection, 1871). +-define(wxNotebook_GetThemeBackgroundColour, 1872). +-define(wxNotebook_HitTest, 1874). +-define(wxNotebook_InsertPage, 1876). +-define(wxNotebook_SetImageList, 1877). +-define(wxNotebook_SetPadding, 1878). +-define(wxNotebook_SetPageSize, 1879). +-define(wxNotebook_SetPageImage, 1880). +-define(wxNotebook_SetPageText, 1881). +-define(wxNotebook_SetSelection, 1882). +-define(wxNotebook_ChangeSelection, 1883). +-define(wxChoicebook_new_0, 1884). +-define(wxChoicebook_new_3, 1885). +-define(wxChoicebook_AddPage, 1886). +-define(wxChoicebook_AdvanceSelection, 1887). +-define(wxChoicebook_AssignImageList, 1888). +-define(wxChoicebook_Create, 1889). +-define(wxChoicebook_DeleteAllPages, 1890). +-define(wxChoicebook_DeletePage, 1891). +-define(wxChoicebook_RemovePage, 1892). +-define(wxChoicebook_GetCurrentPage, 1893). +-define(wxChoicebook_GetImageList, 1894). +-define(wxChoicebook_GetPage, 1896). +-define(wxChoicebook_GetPageCount, 1897). +-define(wxChoicebook_GetPageImage, 1898). +-define(wxChoicebook_GetPageText, 1899). +-define(wxChoicebook_GetSelection, 1900). +-define(wxChoicebook_HitTest, 1901). +-define(wxChoicebook_InsertPage, 1902). +-define(wxChoicebook_SetImageList, 1903). +-define(wxChoicebook_SetPageSize, 1904). +-define(wxChoicebook_SetPageImage, 1905). +-define(wxChoicebook_SetPageText, 1906). +-define(wxChoicebook_SetSelection, 1907). +-define(wxChoicebook_ChangeSelection, 1908). +-define(wxChoicebook_destroy, 1909). +-define(wxToolbook_new_0, 1910). +-define(wxToolbook_new_3, 1911). +-define(wxToolbook_AddPage, 1912). +-define(wxToolbook_AdvanceSelection, 1913). +-define(wxToolbook_AssignImageList, 1914). +-define(wxToolbook_Create, 1915). +-define(wxToolbook_DeleteAllPages, 1916). +-define(wxToolbook_DeletePage, 1917). +-define(wxToolbook_RemovePage, 1918). +-define(wxToolbook_GetCurrentPage, 1919). +-define(wxToolbook_GetImageList, 1920). +-define(wxToolbook_GetPage, 1922). +-define(wxToolbook_GetPageCount, 1923). +-define(wxToolbook_GetPageImage, 1924). +-define(wxToolbook_GetPageText, 1925). +-define(wxToolbook_GetSelection, 1926). +-define(wxToolbook_HitTest, 1928). +-define(wxToolbook_InsertPage, 1929). +-define(wxToolbook_SetImageList, 1930). +-define(wxToolbook_SetPageSize, 1931). +-define(wxToolbook_SetPageImage, 1932). +-define(wxToolbook_SetPageText, 1933). +-define(wxToolbook_SetSelection, 1934). +-define(wxToolbook_ChangeSelection, 1935). +-define(wxToolbook_destroy, 1936). +-define(wxListbook_new_0, 1937). +-define(wxListbook_new_3, 1938). +-define(wxListbook_AddPage, 1939). +-define(wxListbook_AdvanceSelection, 1940). +-define(wxListbook_AssignImageList, 1941). +-define(wxListbook_Create, 1942). +-define(wxListbook_DeleteAllPages, 1943). +-define(wxListbook_DeletePage, 1944). +-define(wxListbook_RemovePage, 1945). +-define(wxListbook_GetCurrentPage, 1946). +-define(wxListbook_GetImageList, 1947). +-define(wxListbook_GetPage, 1949). +-define(wxListbook_GetPageCount, 1950). +-define(wxListbook_GetPageImage, 1951). +-define(wxListbook_GetPageText, 1952). +-define(wxListbook_GetSelection, 1953). +-define(wxListbook_HitTest, 1955). +-define(wxListbook_InsertPage, 1956). +-define(wxListbook_SetImageList, 1957). +-define(wxListbook_SetPageSize, 1958). +-define(wxListbook_SetPageImage, 1959). +-define(wxListbook_SetPageText, 1960). +-define(wxListbook_SetSelection, 1961). +-define(wxListbook_ChangeSelection, 1962). +-define(wxListbook_destroy, 1963). +-define(wxTreebook_new_0, 1964). +-define(wxTreebook_new_3, 1965). +-define(wxTreebook_AddPage, 1966). +-define(wxTreebook_AdvanceSelection, 1967). +-define(wxTreebook_AssignImageList, 1968). +-define(wxTreebook_Create, 1969). +-define(wxTreebook_DeleteAllPages, 1970). +-define(wxTreebook_DeletePage, 1971). +-define(wxTreebook_RemovePage, 1972). +-define(wxTreebook_GetCurrentPage, 1973). +-define(wxTreebook_GetImageList, 1974). +-define(wxTreebook_GetPage, 1976). +-define(wxTreebook_GetPageCount, 1977). +-define(wxTreebook_GetPageImage, 1978). +-define(wxTreebook_GetPageText, 1979). +-define(wxTreebook_GetSelection, 1980). +-define(wxTreebook_ExpandNode, 1981). +-define(wxTreebook_IsNodeExpanded, 1982). +-define(wxTreebook_HitTest, 1984). +-define(wxTreebook_InsertPage, 1985). +-define(wxTreebook_InsertSubPage, 1986). +-define(wxTreebook_SetImageList, 1987). +-define(wxTreebook_SetPageSize, 1988). +-define(wxTreebook_SetPageImage, 1989). +-define(wxTreebook_SetPageText, 1990). +-define(wxTreebook_SetSelection, 1991). +-define(wxTreebook_ChangeSelection, 1992). +-define(wxTreebook_destroy, 1993). +-define(wxTreeCtrl_new_2, 1996). +-define(wxTreeCtrl_new_0, 1997). +-define(wxTreeCtrl_destruct, 1999). +-define(wxTreeCtrl_AddRoot, 2000). +-define(wxTreeCtrl_AppendItem, 2001). +-define(wxTreeCtrl_AssignImageList, 2002). +-define(wxTreeCtrl_AssignStateImageList, 2003). +-define(wxTreeCtrl_Collapse, 2004). +-define(wxTreeCtrl_CollapseAndReset, 2005). +-define(wxTreeCtrl_Create, 2006). +-define(wxTreeCtrl_Delete, 2007). +-define(wxTreeCtrl_DeleteAllItems, 2008). +-define(wxTreeCtrl_DeleteChildren, 2009). +-define(wxTreeCtrl_EnsureVisible, 2010). +-define(wxTreeCtrl_Expand, 2011). +-define(wxTreeCtrl_GetBoundingRect, 2012). +-define(wxTreeCtrl_GetChildrenCount, 2014). +-define(wxTreeCtrl_GetCount, 2015). +-define(wxTreeCtrl_GetEditControl, 2016). +-define(wxTreeCtrl_GetFirstChild, 2017). +-define(wxTreeCtrl_GetNextChild, 2018). +-define(wxTreeCtrl_GetFirstVisibleItem, 2019). +-define(wxTreeCtrl_GetImageList, 2020). +-define(wxTreeCtrl_GetIndent, 2021). +-define(wxTreeCtrl_GetItemBackgroundColour, 2022). +-define(wxTreeCtrl_GetItemData, 2023). +-define(wxTreeCtrl_GetItemFont, 2024). +-define(wxTreeCtrl_GetItemImage_1, 2025). +-define(wxTreeCtrl_GetItemImage_2, 2026). +-define(wxTreeCtrl_GetItemText, 2027). +-define(wxTreeCtrl_GetItemTextColour, 2028). +-define(wxTreeCtrl_GetLastChild, 2029). +-define(wxTreeCtrl_GetNextSibling, 2030). +-define(wxTreeCtrl_GetNextVisible, 2031). +-define(wxTreeCtrl_GetItemParent, 2032). +-define(wxTreeCtrl_GetPrevSibling, 2033). +-define(wxTreeCtrl_GetPrevVisible, 2034). +-define(wxTreeCtrl_GetRootItem, 2035). +-define(wxTreeCtrl_GetSelection, 2036). +-define(wxTreeCtrl_GetSelections, 2037). +-define(wxTreeCtrl_GetStateImageList, 2038). +-define(wxTreeCtrl_HitTest, 2039). +-define(wxTreeCtrl_InsertItem, 2041). +-define(wxTreeCtrl_IsBold, 2042). +-define(wxTreeCtrl_IsExpanded, 2043). +-define(wxTreeCtrl_IsSelected, 2044). +-define(wxTreeCtrl_IsVisible, 2045). +-define(wxTreeCtrl_ItemHasChildren, 2046). +-define(wxTreeCtrl_PrependItem, 2047). +-define(wxTreeCtrl_ScrollTo, 2048). +-define(wxTreeCtrl_SelectItem_1, 2049). +-define(wxTreeCtrl_SelectItem_2, 2050). +-define(wxTreeCtrl_SetIndent, 2051). +-define(wxTreeCtrl_SetImageList, 2052). +-define(wxTreeCtrl_SetItemBackgroundColour, 2053). +-define(wxTreeCtrl_SetItemBold, 2054). +-define(wxTreeCtrl_SetItemData, 2055). +-define(wxTreeCtrl_SetItemDropHighlight, 2056). +-define(wxTreeCtrl_SetItemFont, 2057). +-define(wxTreeCtrl_SetItemHasChildren, 2058). +-define(wxTreeCtrl_SetItemImage_2, 2059). +-define(wxTreeCtrl_SetItemImage_3, 2060). +-define(wxTreeCtrl_SetItemText, 2061). +-define(wxTreeCtrl_SetItemTextColour, 2062). +-define(wxTreeCtrl_SetStateImageList, 2063). +-define(wxTreeCtrl_SetWindowStyle, 2064). +-define(wxTreeCtrl_SortChildren, 2065). +-define(wxTreeCtrl_Toggle, 2066). +-define(wxTreeCtrl_ToggleItemSelection, 2067). +-define(wxTreeCtrl_Unselect, 2068). +-define(wxTreeCtrl_UnselectAll, 2069). +-define(wxTreeCtrl_UnselectItem, 2070). +-define(wxScrollBar_new_0, 2071). +-define(wxScrollBar_new_3, 2072). +-define(wxScrollBar_destruct, 2073). +-define(wxScrollBar_Create, 2074). +-define(wxScrollBar_GetRange, 2075). +-define(wxScrollBar_GetPageSize, 2076). +-define(wxScrollBar_GetThumbPosition, 2077). +-define(wxScrollBar_GetThumbSize, 2078). +-define(wxScrollBar_SetThumbPosition, 2079). +-define(wxScrollBar_SetScrollbar, 2080). +-define(wxSpinButton_new_2, 2082). +-define(wxSpinButton_new_0, 2083). +-define(wxSpinButton_Create, 2084). +-define(wxSpinButton_GetMax, 2085). +-define(wxSpinButton_GetMin, 2086). +-define(wxSpinButton_GetValue, 2087). +-define(wxSpinButton_SetRange, 2088). +-define(wxSpinButton_SetValue, 2089). +-define(wxSpinButton_destroy, 2090). +-define(wxSpinCtrl_new_0, 2091). +-define(wxSpinCtrl_new_2, 2092). +-define(wxSpinCtrl_Create, 2094). +-define(wxSpinCtrl_SetValue_1_1, 2097). +-define(wxSpinCtrl_SetValue_1_0, 2098). +-define(wxSpinCtrl_GetValue, 2100). +-define(wxSpinCtrl_SetRange, 2102). +-define(wxSpinCtrl_SetSelection, 2103). +-define(wxSpinCtrl_GetMin, 2105). +-define(wxSpinCtrl_GetMax, 2107). +-define(wxSpinCtrl_destroy, 2108). +-define(wxStaticText_new_0, 2109). +-define(wxStaticText_new_4, 2110). +-define(wxStaticText_Create, 2111). +-define(wxStaticText_GetLabel, 2112). +-define(wxStaticText_SetLabel, 2113). +-define(wxStaticText_Wrap, 2114). +-define(wxStaticText_destroy, 2115). +-define(wxStaticBitmap_new_0, 2116). +-define(wxStaticBitmap_new_4, 2117). +-define(wxStaticBitmap_Create, 2118). +-define(wxStaticBitmap_GetBitmap, 2119). +-define(wxStaticBitmap_SetBitmap, 2120). +-define(wxStaticBitmap_destroy, 2121). +-define(wxRadioBox_new, 2122). +-define(wxRadioBox_destruct, 2124). +-define(wxRadioBox_Create, 2125). +-define(wxRadioBox_Enable_2, 2126). +-define(wxRadioBox_Enable_1, 2127). +-define(wxRadioBox_GetSelection, 2128). +-define(wxRadioBox_GetString, 2129). +-define(wxRadioBox_SetSelection, 2130). +-define(wxRadioBox_Show_2, 2131). +-define(wxRadioBox_Show_1, 2132). +-define(wxRadioBox_GetColumnCount, 2133). +-define(wxRadioBox_GetItemHelpText, 2134). +-define(wxRadioBox_GetItemToolTip, 2135). +-define(wxRadioBox_GetItemFromPoint, 2137). +-define(wxRadioBox_GetRowCount, 2138). +-define(wxRadioBox_IsItemEnabled, 2139). +-define(wxRadioBox_IsItemShown, 2140). +-define(wxRadioBox_SetItemHelpText, 2141). +-define(wxRadioBox_SetItemToolTip, 2142). +-define(wxRadioButton_new_0, 2143). +-define(wxRadioButton_new_4, 2144). +-define(wxRadioButton_Create, 2145). +-define(wxRadioButton_GetValue, 2146). +-define(wxRadioButton_SetValue, 2147). +-define(wxRadioButton_destroy, 2148). +-define(wxSlider_new_6, 2150). +-define(wxSlider_new_0, 2151). +-define(wxSlider_Create, 2152). +-define(wxSlider_GetLineSize, 2153). +-define(wxSlider_GetMax, 2154). +-define(wxSlider_GetMin, 2155). +-define(wxSlider_GetPageSize, 2156). +-define(wxSlider_GetThumbLength, 2157). +-define(wxSlider_GetValue, 2158). +-define(wxSlider_SetLineSize, 2159). +-define(wxSlider_SetPageSize, 2160). +-define(wxSlider_SetRange, 2161). +-define(wxSlider_SetThumbLength, 2162). +-define(wxSlider_SetValue, 2163). +-define(wxSlider_destroy, 2164). +-define(wxDialog_new_4, 2166). +-define(wxDialog_new_0, 2167). +-define(wxDialog_destruct, 2169). +-define(wxDialog_Create, 2170). +-define(wxDialog_CreateButtonSizer, 2171). +-define(wxDialog_CreateStdDialogButtonSizer, 2172). +-define(wxDialog_EndModal, 2173). +-define(wxDialog_GetAffirmativeId, 2174). +-define(wxDialog_GetReturnCode, 2175). +-define(wxDialog_IsModal, 2176). +-define(wxDialog_SetAffirmativeId, 2177). +-define(wxDialog_SetReturnCode, 2178). +-define(wxDialog_Show, 2179). +-define(wxDialog_ShowModal, 2180). +-define(wxColourDialog_new_0, 2181). +-define(wxColourDialog_new_2, 2182). +-define(wxColourDialog_destruct, 2183). +-define(wxColourDialog_Create, 2184). +-define(wxColourDialog_GetColourData, 2185). +-define(wxColourData_new_0, 2186). +-define(wxColourData_new_1, 2187). +-define(wxColourData_destruct, 2188). +-define(wxColourData_GetChooseFull, 2189). +-define(wxColourData_GetColour, 2190). +-define(wxColourData_GetCustomColour, 2192). +-define(wxColourData_SetChooseFull, 2193). +-define(wxColourData_SetColour, 2194). +-define(wxColourData_SetCustomColour, 2195). +-define(wxPalette_new_0, 2196). +-define(wxPalette_new_4, 2197). +-define(wxPalette_destruct, 2199). +-define(wxPalette_Create, 2200). +-define(wxPalette_GetColoursCount, 2201). +-define(wxPalette_GetPixel, 2202). +-define(wxPalette_GetRGB, 2203). +-define(wxPalette_IsOk, 2204). +-define(wxDirDialog_new, 2208). +-define(wxDirDialog_destruct, 2209). +-define(wxDirDialog_GetPath, 2210). +-define(wxDirDialog_GetMessage, 2211). +-define(wxDirDialog_SetMessage, 2212). +-define(wxDirDialog_SetPath, 2213). +-define(wxFileDialog_new, 2217). +-define(wxFileDialog_destruct, 2218). +-define(wxFileDialog_GetDirectory, 2219). +-define(wxFileDialog_GetFilename, 2220). +-define(wxFileDialog_GetFilenames, 2221). +-define(wxFileDialog_GetFilterIndex, 2222). +-define(wxFileDialog_GetMessage, 2223). +-define(wxFileDialog_GetPath, 2224). +-define(wxFileDialog_GetPaths, 2225). +-define(wxFileDialog_GetWildcard, 2226). +-define(wxFileDialog_SetDirectory, 2227). +-define(wxFileDialog_SetFilename, 2228). +-define(wxFileDialog_SetFilterIndex, 2229). +-define(wxFileDialog_SetMessage, 2230). +-define(wxFileDialog_SetPath, 2231). +-define(wxFileDialog_SetWildcard, 2232). +-define(wxPickerBase_SetInternalMargin, 2233). +-define(wxPickerBase_GetInternalMargin, 2234). +-define(wxPickerBase_SetTextCtrlProportion, 2235). +-define(wxPickerBase_SetPickerCtrlProportion, 2236). +-define(wxPickerBase_GetTextCtrlProportion, 2237). +-define(wxPickerBase_GetPickerCtrlProportion, 2238). +-define(wxPickerBase_HasTextCtrl, 2239). +-define(wxPickerBase_GetTextCtrl, 2240). +-define(wxPickerBase_IsTextCtrlGrowable, 2241). +-define(wxPickerBase_SetPickerCtrlGrowable, 2242). +-define(wxPickerBase_SetTextCtrlGrowable, 2243). +-define(wxPickerBase_IsPickerCtrlGrowable, 2244). +-define(wxFilePickerCtrl_new_0, 2245). +-define(wxFilePickerCtrl_new_3, 2246). +-define(wxFilePickerCtrl_Create, 2247). +-define(wxFilePickerCtrl_GetPath, 2248). +-define(wxFilePickerCtrl_SetPath, 2249). +-define(wxFilePickerCtrl_destroy, 2250). +-define(wxDirPickerCtrl_new_0, 2251). +-define(wxDirPickerCtrl_new_3, 2252). +-define(wxDirPickerCtrl_Create, 2253). +-define(wxDirPickerCtrl_GetPath, 2254). +-define(wxDirPickerCtrl_SetPath, 2255). +-define(wxDirPickerCtrl_destroy, 2256). +-define(wxColourPickerCtrl_new_0, 2257). +-define(wxColourPickerCtrl_new_3, 2258). +-define(wxColourPickerCtrl_Create, 2259). +-define(wxColourPickerCtrl_GetColour, 2260). +-define(wxColourPickerCtrl_SetColour_1_1, 2261). +-define(wxColourPickerCtrl_SetColour_1_0, 2262). +-define(wxColourPickerCtrl_destroy, 2263). +-define(wxDatePickerCtrl_new_0, 2264). +-define(wxDatePickerCtrl_new_3, 2265). +-define(wxDatePickerCtrl_GetRange, 2266). +-define(wxDatePickerCtrl_GetValue, 2267). +-define(wxDatePickerCtrl_SetRange, 2268). +-define(wxDatePickerCtrl_SetValue, 2269). +-define(wxDatePickerCtrl_destroy, 2270). +-define(wxFontPickerCtrl_new_0, 2271). +-define(wxFontPickerCtrl_new_3, 2272). +-define(wxFontPickerCtrl_Create, 2273). +-define(wxFontPickerCtrl_GetSelectedFont, 2274). +-define(wxFontPickerCtrl_SetSelectedFont, 2275). +-define(wxFontPickerCtrl_GetMaxPointSize, 2276). +-define(wxFontPickerCtrl_SetMaxPointSize, 2277). +-define(wxFontPickerCtrl_destroy, 2278). +-define(wxFindReplaceDialog_new_0, 2281). +-define(wxFindReplaceDialog_new_4, 2282). +-define(wxFindReplaceDialog_destruct, 2283). +-define(wxFindReplaceDialog_Create, 2284). +-define(wxFindReplaceDialog_GetData, 2285). +-define(wxFindReplaceData_new_0, 2286). +-define(wxFindReplaceData_new_1, 2287). +-define(wxFindReplaceData_GetFindString, 2288). +-define(wxFindReplaceData_GetReplaceString, 2289). +-define(wxFindReplaceData_GetFlags, 2290). +-define(wxFindReplaceData_SetFlags, 2291). +-define(wxFindReplaceData_SetFindString, 2292). +-define(wxFindReplaceData_SetReplaceString, 2293). +-define(wxFindReplaceData_destroy, 2294). +-define(wxMultiChoiceDialog_new_0, 2295). +-define(wxMultiChoiceDialog_new_5, 2297). +-define(wxMultiChoiceDialog_GetSelections, 2298). +-define(wxMultiChoiceDialog_SetSelections, 2299). +-define(wxMultiChoiceDialog_destroy, 2300). +-define(wxSingleChoiceDialog_new_0, 2301). +-define(wxSingleChoiceDialog_new_5, 2303). +-define(wxSingleChoiceDialog_GetSelection, 2304). +-define(wxSingleChoiceDialog_GetStringSelection, 2305). +-define(wxSingleChoiceDialog_SetSelection, 2306). +-define(wxSingleChoiceDialog_destroy, 2307). +-define(wxTextEntryDialog_new, 2308). +-define(wxTextEntryDialog_GetValue, 2309). +-define(wxTextEntryDialog_SetValue, 2310). +-define(wxTextEntryDialog_destroy, 2311). +-define(wxPasswordEntryDialog_new, 2312). +-define(wxPasswordEntryDialog_destroy, 2313). +-define(wxFontData_new_0, 2314). +-define(wxFontData_new_1, 2315). +-define(wxFontData_destruct, 2316). +-define(wxFontData_EnableEffects, 2317). +-define(wxFontData_GetAllowSymbols, 2318). +-define(wxFontData_GetColour, 2319). +-define(wxFontData_GetChosenFont, 2320). +-define(wxFontData_GetEnableEffects, 2321). +-define(wxFontData_GetInitialFont, 2322). +-define(wxFontData_GetShowHelp, 2323). +-define(wxFontData_SetAllowSymbols, 2324). +-define(wxFontData_SetChosenFont, 2325). +-define(wxFontData_SetColour, 2326). +-define(wxFontData_SetInitialFont, 2327). +-define(wxFontData_SetRange, 2328). +-define(wxFontData_SetShowHelp, 2329). +-define(wxFontDialog_new_0, 2333). +-define(wxFontDialog_new_2, 2335). +-define(wxFontDialog_Create, 2337). +-define(wxFontDialog_GetFontData, 2338). +-define(wxFontDialog_destroy, 2340). +-define(wxProgressDialog_new, 2341). +-define(wxProgressDialog_destruct, 2342). +-define(wxProgressDialog_Resume, 2343). +-define(wxProgressDialog_Update_2, 2344). +-define(wxProgressDialog_Update_0, 2345). +-define(wxMessageDialog_new, 2346). +-define(wxMessageDialog_destruct, 2347). +-define(wxPageSetupDialog_new, 2348). +-define(wxPageSetupDialog_destruct, 2349). +-define(wxPageSetupDialog_GetPageSetupData, 2350). +-define(wxPageSetupDialog_ShowModal, 2351). +-define(wxPageSetupDialogData_new_0, 2352). +-define(wxPageSetupDialogData_new_1_0, 2353). +-define(wxPageSetupDialogData_new_1_1, 2354). +-define(wxPageSetupDialogData_destruct, 2355). +-define(wxPageSetupDialogData_EnableHelp, 2356). +-define(wxPageSetupDialogData_EnableMargins, 2357). +-define(wxPageSetupDialogData_EnableOrientation, 2358). +-define(wxPageSetupDialogData_EnablePaper, 2359). +-define(wxPageSetupDialogData_EnablePrinter, 2360). +-define(wxPageSetupDialogData_GetDefaultMinMargins, 2361). +-define(wxPageSetupDialogData_GetEnableMargins, 2362). +-define(wxPageSetupDialogData_GetEnableOrientation, 2363). +-define(wxPageSetupDialogData_GetEnablePaper, 2364). +-define(wxPageSetupDialogData_GetEnablePrinter, 2365). +-define(wxPageSetupDialogData_GetEnableHelp, 2366). +-define(wxPageSetupDialogData_GetDefaultInfo, 2367). +-define(wxPageSetupDialogData_GetMarginTopLeft, 2368). +-define(wxPageSetupDialogData_GetMarginBottomRight, 2369). +-define(wxPageSetupDialogData_GetMinMarginTopLeft, 2370). +-define(wxPageSetupDialogData_GetMinMarginBottomRight, 2371). +-define(wxPageSetupDialogData_GetPaperId, 2372). +-define(wxPageSetupDialogData_GetPaperSize, 2373). +-define(wxPageSetupDialogData_GetPrintData, 2375). +-define(wxPageSetupDialogData_IsOk, 2376). +-define(wxPageSetupDialogData_SetDefaultInfo, 2377). +-define(wxPageSetupDialogData_SetDefaultMinMargins, 2378). +-define(wxPageSetupDialogData_SetMarginTopLeft, 2379). +-define(wxPageSetupDialogData_SetMarginBottomRight, 2380). +-define(wxPageSetupDialogData_SetMinMarginTopLeft, 2381). +-define(wxPageSetupDialogData_SetMinMarginBottomRight, 2382). +-define(wxPageSetupDialogData_SetPaperId, 2383). +-define(wxPageSetupDialogData_SetPaperSize_1_1, 2384). +-define(wxPageSetupDialogData_SetPaperSize_1_0, 2385). +-define(wxPageSetupDialogData_SetPrintData, 2386). +-define(wxPrintDialog_new_2_0, 2387). +-define(wxPrintDialog_new_2_1, 2388). +-define(wxPrintDialog_destruct, 2389). +-define(wxPrintDialog_GetPrintDialogData, 2390). +-define(wxPrintDialog_GetPrintDC, 2391). +-define(wxPrintDialogData_new_0, 2392). +-define(wxPrintDialogData_new_1_1, 2393). +-define(wxPrintDialogData_new_1_0, 2394). +-define(wxPrintDialogData_destruct, 2395). +-define(wxPrintDialogData_EnableHelp, 2396). +-define(wxPrintDialogData_EnablePageNumbers, 2397). +-define(wxPrintDialogData_EnablePrintToFile, 2398). +-define(wxPrintDialogData_EnableSelection, 2399). +-define(wxPrintDialogData_GetAllPages, 2400). +-define(wxPrintDialogData_GetCollate, 2401). +-define(wxPrintDialogData_GetFromPage, 2402). +-define(wxPrintDialogData_GetMaxPage, 2403). +-define(wxPrintDialogData_GetMinPage, 2404). +-define(wxPrintDialogData_GetNoCopies, 2405). +-define(wxPrintDialogData_GetPrintData, 2406). +-define(wxPrintDialogData_GetPrintToFile, 2407). +-define(wxPrintDialogData_GetSelection, 2408). +-define(wxPrintDialogData_GetToPage, 2409). +-define(wxPrintDialogData_IsOk, 2410). +-define(wxPrintDialogData_SetCollate, 2411). +-define(wxPrintDialogData_SetFromPage, 2412). +-define(wxPrintDialogData_SetMaxPage, 2413). +-define(wxPrintDialogData_SetMinPage, 2414). +-define(wxPrintDialogData_SetNoCopies, 2415). +-define(wxPrintDialogData_SetPrintData, 2416). +-define(wxPrintDialogData_SetPrintToFile, 2417). +-define(wxPrintDialogData_SetSelection, 2418). +-define(wxPrintDialogData_SetToPage, 2419). +-define(wxPrintData_new_0, 2420). +-define(wxPrintData_new_1, 2421). +-define(wxPrintData_destruct, 2422). +-define(wxPrintData_GetCollate, 2423). +-define(wxPrintData_GetBin, 2424). +-define(wxPrintData_GetColour, 2425). +-define(wxPrintData_GetDuplex, 2426). +-define(wxPrintData_GetNoCopies, 2427). +-define(wxPrintData_GetOrientation, 2428). +-define(wxPrintData_GetPaperId, 2429). +-define(wxPrintData_GetPrinterName, 2430). +-define(wxPrintData_GetQuality, 2431). +-define(wxPrintData_IsOk, 2432). +-define(wxPrintData_SetBin, 2433). +-define(wxPrintData_SetCollate, 2434). +-define(wxPrintData_SetColour, 2435). +-define(wxPrintData_SetDuplex, 2436). +-define(wxPrintData_SetNoCopies, 2437). +-define(wxPrintData_SetOrientation, 2438). +-define(wxPrintData_SetPaperId, 2439). +-define(wxPrintData_SetPrinterName, 2440). +-define(wxPrintData_SetQuality, 2441). +-define(wxPrintPreview_new_2, 2444). +-define(wxPrintPreview_new_3, 2445). +-define(wxPrintPreview_destruct, 2447). +-define(wxPrintPreview_GetCanvas, 2448). +-define(wxPrintPreview_GetCurrentPage, 2449). +-define(wxPrintPreview_GetFrame, 2450). +-define(wxPrintPreview_GetMaxPage, 2451). +-define(wxPrintPreview_GetMinPage, 2452). +-define(wxPrintPreview_GetPrintout, 2453). +-define(wxPrintPreview_GetPrintoutForPrinting, 2454). +-define(wxPrintPreview_IsOk, 2455). +-define(wxPrintPreview_PaintPage, 2456). +-define(wxPrintPreview_Print, 2457). +-define(wxPrintPreview_RenderPage, 2458). +-define(wxPrintPreview_SetCanvas, 2459). +-define(wxPrintPreview_SetCurrentPage, 2460). +-define(wxPrintPreview_SetFrame, 2461). +-define(wxPrintPreview_SetPrintout, 2462). +-define(wxPrintPreview_SetZoom, 2463). +-define(wxPreviewFrame_new, 2464). +-define(wxPreviewFrame_destruct, 2465). +-define(wxPreviewFrame_CreateControlBar, 2466). +-define(wxPreviewFrame_CreateCanvas, 2467). +-define(wxPreviewFrame_Initialize, 2468). +-define(wxPreviewFrame_OnCloseWindow, 2469). +-define(wxPreviewControlBar_new, 2470). +-define(wxPreviewControlBar_destruct, 2471). +-define(wxPreviewControlBar_CreateButtons, 2472). +-define(wxPreviewControlBar_GetPrintPreview, 2473). +-define(wxPreviewControlBar_GetZoomControl, 2474). +-define(wxPreviewControlBar_SetZoomControl, 2475). +-define(wxPrinter_new, 2477). +-define(wxPrinter_CreateAbortWindow, 2478). +-define(wxPrinter_GetAbort, 2479). +-define(wxPrinter_GetLastError, 2480). +-define(wxPrinter_GetPrintDialogData, 2481). +-define(wxPrinter_Print, 2482). +-define(wxPrinter_PrintDialog, 2483). +-define(wxPrinter_ReportError, 2484). +-define(wxPrinter_Setup, 2485). +-define(wxPrinter_destroy, 2486). +-define(wxXmlResource_new_1, 2487). +-define(wxXmlResource_new_2, 2488). +-define(wxXmlResource_destruct, 2489). +-define(wxXmlResource_AttachUnknownControl, 2490). +-define(wxXmlResource_ClearHandlers, 2491). +-define(wxXmlResource_CompareVersion, 2492). +-define(wxXmlResource_Get, 2493). +-define(wxXmlResource_GetFlags, 2494). +-define(wxXmlResource_GetVersion, 2495). +-define(wxXmlResource_GetXRCID, 2496). +-define(wxXmlResource_InitAllHandlers, 2497). +-define(wxXmlResource_Load, 2498). +-define(wxXmlResource_LoadBitmap, 2499). +-define(wxXmlResource_LoadDialog_2, 2500). +-define(wxXmlResource_LoadDialog_3, 2501). +-define(wxXmlResource_LoadFrame_2, 2502). +-define(wxXmlResource_LoadFrame_3, 2503). +-define(wxXmlResource_LoadIcon, 2504). +-define(wxXmlResource_LoadMenu, 2505). +-define(wxXmlResource_LoadMenuBar_2, 2506). +-define(wxXmlResource_LoadMenuBar_1, 2507). +-define(wxXmlResource_LoadPanel_2, 2508). +-define(wxXmlResource_LoadPanel_3, 2509). +-define(wxXmlResource_LoadToolBar, 2510). +-define(wxXmlResource_Set, 2511). +-define(wxXmlResource_SetFlags, 2512). +-define(wxXmlResource_Unload, 2513). +-define(wxXmlResource_xrcctrl, 2514). +-define(wxHtmlEasyPrinting_new, 2515). +-define(wxHtmlEasyPrinting_destruct, 2516). +-define(wxHtmlEasyPrinting_GetPrintData, 2517). +-define(wxHtmlEasyPrinting_GetPageSetupData, 2518). +-define(wxHtmlEasyPrinting_PreviewFile, 2519). +-define(wxHtmlEasyPrinting_PreviewText, 2520). +-define(wxHtmlEasyPrinting_PrintFile, 2521). +-define(wxHtmlEasyPrinting_PrintText, 2522). +-define(wxHtmlEasyPrinting_PageSetup, 2523). +-define(wxHtmlEasyPrinting_SetFonts, 2524). +-define(wxHtmlEasyPrinting_SetHeader, 2525). +-define(wxHtmlEasyPrinting_SetFooter, 2526). +-define(wxGLCanvas_new_2, 2528). +-define(wxGLCanvas_new_3_1, 2529). +-define(wxGLCanvas_new_3_0, 2530). +-define(wxGLCanvas_GetContext, 2531). +-define(wxGLCanvas_SetCurrent, 2533). +-define(wxGLCanvas_SwapBuffers, 2534). +-define(wxGLCanvas_destroy, 2535). +-define(wxAuiManager_new, 2536). +-define(wxAuiManager_destruct, 2537). +-define(wxAuiManager_AddPane_2_1, 2538). +-define(wxAuiManager_AddPane_3, 2539). +-define(wxAuiManager_AddPane_2_0, 2540). +-define(wxAuiManager_DetachPane, 2541). +-define(wxAuiManager_GetAllPanes, 2542). +-define(wxAuiManager_GetArtProvider, 2543). +-define(wxAuiManager_GetDockSizeConstraint, 2544). +-define(wxAuiManager_GetFlags, 2545). +-define(wxAuiManager_GetManagedWindow, 2546). +-define(wxAuiManager_GetManager, 2547). +-define(wxAuiManager_GetPane_1_1, 2548). +-define(wxAuiManager_GetPane_1_0, 2549). +-define(wxAuiManager_HideHint, 2550). +-define(wxAuiManager_InsertPane, 2551). +-define(wxAuiManager_LoadPaneInfo, 2552). +-define(wxAuiManager_LoadPerspective, 2553). +-define(wxAuiManager_SavePaneInfo, 2554). +-define(wxAuiManager_SavePerspective, 2555). +-define(wxAuiManager_SetArtProvider, 2556). +-define(wxAuiManager_SetDockSizeConstraint, 2557). +-define(wxAuiManager_SetFlags, 2558). +-define(wxAuiManager_SetManagedWindow, 2559). +-define(wxAuiManager_ShowHint, 2560). +-define(wxAuiManager_UnInit, 2561). +-define(wxAuiManager_Update, 2562). +-define(wxAuiPaneInfo_new_0, 2563). +-define(wxAuiPaneInfo_new_1, 2564). +-define(wxAuiPaneInfo_destruct, 2565). +-define(wxAuiPaneInfo_BestSize_1, 2566). +-define(wxAuiPaneInfo_BestSize_2, 2567). +-define(wxAuiPaneInfo_Bottom, 2568). +-define(wxAuiPaneInfo_BottomDockable, 2569). +-define(wxAuiPaneInfo_Caption, 2570). +-define(wxAuiPaneInfo_CaptionVisible, 2571). +-define(wxAuiPaneInfo_Centre, 2572). +-define(wxAuiPaneInfo_CentrePane, 2573). +-define(wxAuiPaneInfo_CloseButton, 2574). +-define(wxAuiPaneInfo_DefaultPane, 2575). +-define(wxAuiPaneInfo_DestroyOnClose, 2576). +-define(wxAuiPaneInfo_Direction, 2577). +-define(wxAuiPaneInfo_Dock, 2578). +-define(wxAuiPaneInfo_Dockable, 2579). +-define(wxAuiPaneInfo_Fixed, 2580). +-define(wxAuiPaneInfo_Float, 2581). +-define(wxAuiPaneInfo_Floatable, 2582). +-define(wxAuiPaneInfo_FloatingPosition_1, 2583). +-define(wxAuiPaneInfo_FloatingPosition_2, 2584). +-define(wxAuiPaneInfo_FloatingSize_1, 2585). +-define(wxAuiPaneInfo_FloatingSize_2, 2586). +-define(wxAuiPaneInfo_Gripper, 2587). +-define(wxAuiPaneInfo_GripperTop, 2588). +-define(wxAuiPaneInfo_HasBorder, 2589). +-define(wxAuiPaneInfo_HasCaption, 2590). +-define(wxAuiPaneInfo_HasCloseButton, 2591). +-define(wxAuiPaneInfo_HasFlag, 2592). +-define(wxAuiPaneInfo_HasGripper, 2593). +-define(wxAuiPaneInfo_HasGripperTop, 2594). +-define(wxAuiPaneInfo_HasMaximizeButton, 2595). +-define(wxAuiPaneInfo_HasMinimizeButton, 2596). +-define(wxAuiPaneInfo_HasPinButton, 2597). +-define(wxAuiPaneInfo_Hide, 2598). +-define(wxAuiPaneInfo_IsBottomDockable, 2599). +-define(wxAuiPaneInfo_IsDocked, 2600). +-define(wxAuiPaneInfo_IsFixed, 2601). +-define(wxAuiPaneInfo_IsFloatable, 2602). +-define(wxAuiPaneInfo_IsFloating, 2603). +-define(wxAuiPaneInfo_IsLeftDockable, 2604). +-define(wxAuiPaneInfo_IsMovable, 2605). +-define(wxAuiPaneInfo_IsOk, 2606). +-define(wxAuiPaneInfo_IsResizable, 2607). +-define(wxAuiPaneInfo_IsRightDockable, 2608). +-define(wxAuiPaneInfo_IsShown, 2609). +-define(wxAuiPaneInfo_IsToolbar, 2610). +-define(wxAuiPaneInfo_IsTopDockable, 2611). +-define(wxAuiPaneInfo_Layer, 2612). +-define(wxAuiPaneInfo_Left, 2613). +-define(wxAuiPaneInfo_LeftDockable, 2614). +-define(wxAuiPaneInfo_MaxSize_1, 2615). +-define(wxAuiPaneInfo_MaxSize_2, 2616). +-define(wxAuiPaneInfo_MaximizeButton, 2617). +-define(wxAuiPaneInfo_MinSize_1, 2618). +-define(wxAuiPaneInfo_MinSize_2, 2619). +-define(wxAuiPaneInfo_MinimizeButton, 2620). +-define(wxAuiPaneInfo_Movable, 2621). +-define(wxAuiPaneInfo_Name, 2622). +-define(wxAuiPaneInfo_PaneBorder, 2623). +-define(wxAuiPaneInfo_PinButton, 2624). +-define(wxAuiPaneInfo_Position, 2625). +-define(wxAuiPaneInfo_Resizable, 2626). +-define(wxAuiPaneInfo_Right, 2627). +-define(wxAuiPaneInfo_RightDockable, 2628). +-define(wxAuiPaneInfo_Row, 2629). +-define(wxAuiPaneInfo_SafeSet, 2630). +-define(wxAuiPaneInfo_SetFlag, 2631). +-define(wxAuiPaneInfo_Show, 2632). +-define(wxAuiPaneInfo_ToolbarPane, 2633). +-define(wxAuiPaneInfo_Top, 2634). +-define(wxAuiPaneInfo_TopDockable, 2635). +-define(wxAuiPaneInfo_Window, 2636). +-define(wxAuiNotebook_new_0, 2637). +-define(wxAuiNotebook_new_2, 2638). +-define(wxAuiNotebook_AddPage, 2639). +-define(wxAuiNotebook_Create, 2640). +-define(wxAuiNotebook_DeletePage, 2641). +-define(wxAuiNotebook_GetArtProvider, 2642). +-define(wxAuiNotebook_GetPage, 2643). +-define(wxAuiNotebook_GetPageBitmap, 2644). +-define(wxAuiNotebook_GetPageCount, 2645). +-define(wxAuiNotebook_GetPageIndex, 2646). +-define(wxAuiNotebook_GetPageText, 2647). +-define(wxAuiNotebook_GetSelection, 2648). +-define(wxAuiNotebook_InsertPage, 2649). +-define(wxAuiNotebook_RemovePage, 2650). +-define(wxAuiNotebook_SetArtProvider, 2651). +-define(wxAuiNotebook_SetFont, 2652). +-define(wxAuiNotebook_SetPageBitmap, 2653). +-define(wxAuiNotebook_SetPageText, 2654). +-define(wxAuiNotebook_SetSelection, 2655). +-define(wxAuiNotebook_SetTabCtrlHeight, 2656). +-define(wxAuiNotebook_SetUniformBitmapSize, 2657). +-define(wxAuiNotebook_destroy, 2658). +-define(wxMDIParentFrame_new_0, 2659). +-define(wxMDIParentFrame_new_4, 2660). +-define(wxMDIParentFrame_destruct, 2661). +-define(wxMDIParentFrame_ActivateNext, 2662). +-define(wxMDIParentFrame_ActivatePrevious, 2663). +-define(wxMDIParentFrame_ArrangeIcons, 2664). +-define(wxMDIParentFrame_Cascade, 2665). +-define(wxMDIParentFrame_Create, 2666). +-define(wxMDIParentFrame_GetActiveChild, 2667). +-define(wxMDIParentFrame_GetClientWindow, 2668). +-define(wxMDIParentFrame_Tile, 2669). +-define(wxMDIChildFrame_new_0, 2670). +-define(wxMDIChildFrame_new_4, 2671). +-define(wxMDIChildFrame_destruct, 2672). +-define(wxMDIChildFrame_Activate, 2673). +-define(wxMDIChildFrame_Create, 2674). +-define(wxMDIChildFrame_Maximize, 2675). +-define(wxMDIChildFrame_Restore, 2676). +-define(wxMDIClientWindow_new_0, 2677). +-define(wxMDIClientWindow_new_2, 2678). +-define(wxMDIClientWindow_destruct, 2679). +-define(wxMDIClientWindow_CreateClient, 2680). +-define(wxLayoutAlgorithm_new, 2681). +-define(wxLayoutAlgorithm_LayoutFrame, 2682). +-define(wxLayoutAlgorithm_LayoutMDIFrame, 2683). +-define(wxLayoutAlgorithm_LayoutWindow, 2684). +-define(wxLayoutAlgorithm_destroy, 2685). +-define(wxEvent_GetId, 2686). +-define(wxEvent_GetSkipped, 2687). +-define(wxEvent_GetTimestamp, 2688). +-define(wxEvent_IsCommandEvent, 2689). +-define(wxEvent_ResumePropagation, 2690). +-define(wxEvent_ShouldPropagate, 2691). +-define(wxEvent_Skip, 2692). +-define(wxEvent_StopPropagation, 2693). +-define(wxCommandEvent_getClientData, 2694). +-define(wxCommandEvent_GetExtraLong, 2695). +-define(wxCommandEvent_GetInt, 2696). +-define(wxCommandEvent_GetSelection, 2697). +-define(wxCommandEvent_GetString, 2698). +-define(wxCommandEvent_IsChecked, 2699). +-define(wxCommandEvent_IsSelection, 2700). +-define(wxCommandEvent_SetInt, 2701). +-define(wxCommandEvent_SetString, 2702). +-define(wxScrollEvent_GetOrientation, 2703). +-define(wxScrollEvent_GetPosition, 2704). +-define(wxScrollWinEvent_GetOrientation, 2705). +-define(wxScrollWinEvent_GetPosition, 2706). +-define(wxMouseEvent_AltDown, 2707). +-define(wxMouseEvent_Button, 2708). +-define(wxMouseEvent_ButtonDClick, 2709). +-define(wxMouseEvent_ButtonDown, 2710). +-define(wxMouseEvent_ButtonUp, 2711). +-define(wxMouseEvent_CmdDown, 2712). +-define(wxMouseEvent_ControlDown, 2713). +-define(wxMouseEvent_Dragging, 2714). +-define(wxMouseEvent_Entering, 2715). +-define(wxMouseEvent_GetButton, 2716). +-define(wxMouseEvent_GetPosition, 2719). +-define(wxMouseEvent_GetLogicalPosition, 2720). +-define(wxMouseEvent_GetLinesPerAction, 2721). +-define(wxMouseEvent_GetWheelRotation, 2722). +-define(wxMouseEvent_GetWheelDelta, 2723). +-define(wxMouseEvent_GetX, 2724). +-define(wxMouseEvent_GetY, 2725). +-define(wxMouseEvent_IsButton, 2726). +-define(wxMouseEvent_IsPageScroll, 2727). +-define(wxMouseEvent_Leaving, 2728). +-define(wxMouseEvent_LeftDClick, 2729). +-define(wxMouseEvent_LeftDown, 2730). +-define(wxMouseEvent_LeftIsDown, 2731). +-define(wxMouseEvent_LeftUp, 2732). +-define(wxMouseEvent_MetaDown, 2733). +-define(wxMouseEvent_MiddleDClick, 2734). +-define(wxMouseEvent_MiddleDown, 2735). +-define(wxMouseEvent_MiddleIsDown, 2736). +-define(wxMouseEvent_MiddleUp, 2737). +-define(wxMouseEvent_Moving, 2738). +-define(wxMouseEvent_RightDClick, 2739). +-define(wxMouseEvent_RightDown, 2740). +-define(wxMouseEvent_RightIsDown, 2741). +-define(wxMouseEvent_RightUp, 2742). +-define(wxMouseEvent_ShiftDown, 2743). +-define(wxSetCursorEvent_GetCursor, 2744). +-define(wxSetCursorEvent_GetX, 2745). +-define(wxSetCursorEvent_GetY, 2746). +-define(wxSetCursorEvent_HasCursor, 2747). +-define(wxSetCursorEvent_SetCursor, 2748). +-define(wxKeyEvent_AltDown, 2749). +-define(wxKeyEvent_CmdDown, 2750). +-define(wxKeyEvent_ControlDown, 2751). +-define(wxKeyEvent_GetKeyCode, 2752). +-define(wxKeyEvent_GetModifiers, 2753). +-define(wxKeyEvent_GetPosition, 2756). +-define(wxKeyEvent_GetRawKeyCode, 2757). +-define(wxKeyEvent_GetRawKeyFlags, 2758). +-define(wxKeyEvent_GetUnicodeKey, 2759). +-define(wxKeyEvent_GetX, 2760). +-define(wxKeyEvent_GetY, 2761). +-define(wxKeyEvent_HasModifiers, 2762). +-define(wxKeyEvent_MetaDown, 2763). +-define(wxKeyEvent_ShiftDown, 2764). +-define(wxSizeEvent_GetSize, 2765). +-define(wxMoveEvent_GetPosition, 2766). +-define(wxEraseEvent_GetDC, 2767). +-define(wxFocusEvent_GetWindow, 2768). +-define(wxChildFocusEvent_GetWindow, 2769). +-define(wxMenuEvent_GetMenu, 2770). +-define(wxMenuEvent_GetMenuId, 2771). +-define(wxMenuEvent_IsPopup, 2772). +-define(wxCloseEvent_CanVeto, 2773). +-define(wxCloseEvent_GetLoggingOff, 2774). +-define(wxCloseEvent_SetCanVeto, 2775). +-define(wxCloseEvent_SetLoggingOff, 2776). +-define(wxCloseEvent_Veto, 2777). +-define(wxShowEvent_SetShow, 2778). +-define(wxShowEvent_GetShow, 2779). +-define(wxIconizeEvent_Iconized, 2780). +-define(wxJoystickEvent_ButtonDown, 2781). +-define(wxJoystickEvent_ButtonIsDown, 2782). +-define(wxJoystickEvent_ButtonUp, 2783). +-define(wxJoystickEvent_GetButtonChange, 2784). +-define(wxJoystickEvent_GetButtonState, 2785). +-define(wxJoystickEvent_GetJoystick, 2786). +-define(wxJoystickEvent_GetPosition, 2787). +-define(wxJoystickEvent_GetZPosition, 2788). +-define(wxJoystickEvent_IsButton, 2789). +-define(wxJoystickEvent_IsMove, 2790). +-define(wxJoystickEvent_IsZMove, 2791). +-define(wxUpdateUIEvent_CanUpdate, 2792). +-define(wxUpdateUIEvent_Check, 2793). +-define(wxUpdateUIEvent_Enable, 2794). +-define(wxUpdateUIEvent_Show, 2795). +-define(wxUpdateUIEvent_GetChecked, 2796). +-define(wxUpdateUIEvent_GetEnabled, 2797). +-define(wxUpdateUIEvent_GetShown, 2798). +-define(wxUpdateUIEvent_GetSetChecked, 2799). +-define(wxUpdateUIEvent_GetSetEnabled, 2800). +-define(wxUpdateUIEvent_GetSetShown, 2801). +-define(wxUpdateUIEvent_GetSetText, 2802). +-define(wxUpdateUIEvent_GetText, 2803). +-define(wxUpdateUIEvent_GetMode, 2804). +-define(wxUpdateUIEvent_GetUpdateInterval, 2805). +-define(wxUpdateUIEvent_ResetUpdateTime, 2806). +-define(wxUpdateUIEvent_SetMode, 2807). +-define(wxUpdateUIEvent_SetText, 2808). +-define(wxUpdateUIEvent_SetUpdateInterval, 2809). +-define(wxMouseCaptureChangedEvent_GetCapturedWindow, 2810). +-define(wxPaletteChangedEvent_SetChangedWindow, 2811). +-define(wxPaletteChangedEvent_GetChangedWindow, 2812). +-define(wxQueryNewPaletteEvent_SetPaletteRealized, 2813). +-define(wxQueryNewPaletteEvent_GetPaletteRealized, 2814). +-define(wxNavigationKeyEvent_GetDirection, 2815). +-define(wxNavigationKeyEvent_SetDirection, 2816). +-define(wxNavigationKeyEvent_IsWindowChange, 2817). +-define(wxNavigationKeyEvent_SetWindowChange, 2818). +-define(wxNavigationKeyEvent_IsFromTab, 2819). +-define(wxNavigationKeyEvent_SetFromTab, 2820). +-define(wxNavigationKeyEvent_GetCurrentFocus, 2821). +-define(wxNavigationKeyEvent_SetCurrentFocus, 2822). +-define(wxHelpEvent_GetOrigin, 2823). +-define(wxHelpEvent_GetPosition, 2824). +-define(wxHelpEvent_SetOrigin, 2825). +-define(wxHelpEvent_SetPosition, 2826). +-define(wxContextMenuEvent_GetPosition, 2827). +-define(wxContextMenuEvent_SetPosition, 2828). +-define(wxIdleEvent_CanSend, 2829). +-define(wxIdleEvent_GetMode, 2830). +-define(wxIdleEvent_RequestMore, 2831). +-define(wxIdleEvent_MoreRequested, 2832). +-define(wxIdleEvent_SetMode, 2833). +-define(wxGridEvent_AltDown, 2834). +-define(wxGridEvent_ControlDown, 2835). +-define(wxGridEvent_GetCol, 2836). +-define(wxGridEvent_GetPosition, 2837). +-define(wxGridEvent_GetRow, 2838). +-define(wxGridEvent_MetaDown, 2839). +-define(wxGridEvent_Selecting, 2840). +-define(wxGridEvent_ShiftDown, 2841). +-define(wxNotifyEvent_Allow, 2842). +-define(wxNotifyEvent_IsAllowed, 2843). +-define(wxNotifyEvent_Veto, 2844). +-define(wxSashEvent_GetEdge, 2845). +-define(wxSashEvent_GetDragRect, 2846). +-define(wxSashEvent_GetDragStatus, 2847). +-define(wxListEvent_GetCacheFrom, 2848). +-define(wxListEvent_GetCacheTo, 2849). +-define(wxListEvent_GetKeyCode, 2850). +-define(wxListEvent_GetIndex, 2851). +-define(wxListEvent_GetColumn, 2852). +-define(wxListEvent_GetPoint, 2853). +-define(wxListEvent_GetLabel, 2854). +-define(wxListEvent_GetText, 2855). +-define(wxListEvent_GetImage, 2856). +-define(wxListEvent_GetData, 2857). +-define(wxListEvent_GetMask, 2858). +-define(wxListEvent_GetItem, 2859). +-define(wxListEvent_IsEditCancelled, 2860). +-define(wxDateEvent_GetDate, 2861). +-define(wxCalendarEvent_GetWeekDay, 2862). +-define(wxFileDirPickerEvent_GetPath, 2863). +-define(wxColourPickerEvent_GetColour, 2864). +-define(wxFontPickerEvent_GetFont, 2865). +-define(wxStyledTextEvent_GetPosition, 2866). +-define(wxStyledTextEvent_GetKey, 2867). +-define(wxStyledTextEvent_GetModifiers, 2868). +-define(wxStyledTextEvent_GetModificationType, 2869). +-define(wxStyledTextEvent_GetText, 2870). +-define(wxStyledTextEvent_GetLength, 2871). +-define(wxStyledTextEvent_GetLinesAdded, 2872). +-define(wxStyledTextEvent_GetLine, 2873). +-define(wxStyledTextEvent_GetFoldLevelNow, 2874). +-define(wxStyledTextEvent_GetFoldLevelPrev, 2875). +-define(wxStyledTextEvent_GetMargin, 2876). +-define(wxStyledTextEvent_GetMessage, 2877). +-define(wxStyledTextEvent_GetWParam, 2878). +-define(wxStyledTextEvent_GetLParam, 2879). +-define(wxStyledTextEvent_GetListType, 2880). +-define(wxStyledTextEvent_GetX, 2881). +-define(wxStyledTextEvent_GetY, 2882). +-define(wxStyledTextEvent_GetDragText, 2883). +-define(wxStyledTextEvent_GetDragAllowMove, 2884). +-define(wxStyledTextEvent_GetDragResult, 2885). +-define(wxStyledTextEvent_GetShift, 2886). +-define(wxStyledTextEvent_GetControl, 2887). +-define(wxStyledTextEvent_GetAlt, 2888). +-define(utils_wxGetKeyState, 2889). +-define(utils_wxGetMousePosition, 2890). +-define(utils_wxGetMouseState, 2891). +-define(utils_wxSetDetectableAutoRepeat, 2892). +-define(utils_wxBell, 2893). +-define(utils_wxFindMenuItemId, 2894). +-define(utils_wxGenericFindWindowAtPoint, 2895). +-define(utils_wxFindWindowAtPoint, 2896). +-define(utils_wxBeginBusyCursor, 2897). +-define(utils_wxEndBusyCursor, 2898). +-define(utils_wxIsBusy, 2899). +-define(utils_wxShutdown, 2900). +-define(utils_wxShell, 2901). +-define(utils_wxLaunchDefaultBrowser, 2902). +-define(utils_wxGetEmailAddress, 2903). +-define(utils_wxGetUserId, 2904). +-define(utils_wxGetHomeDir, 2905). +-define(utils_wxNewId, 2906). +-define(utils_wxRegisterId, 2907). +-define(utils_wxGetCurrentId, 2908). +-define(utils_wxGetOsDescription, 2909). +-define(utils_wxIsPlatformLittleEndian, 2910). +-define(utils_wxIsPlatform64Bit, 2911). +-define(wxPrintout_new, 2912). +-define(wxPrintout_destruct, 2913). +-define(wxPrintout_GetDC, 2914). +-define(wxPrintout_GetPageSizeMM, 2915). +-define(wxPrintout_GetPageSizePixels, 2916). +-define(wxPrintout_GetPaperRectPixels, 2917). +-define(wxPrintout_GetPPIPrinter, 2918). +-define(wxPrintout_GetPPIScreen, 2919). +-define(wxPrintout_GetTitle, 2920). +-define(wxPrintout_IsPreview, 2921). +-define(wxPrintout_FitThisSizeToPaper, 2922). +-define(wxPrintout_FitThisSizeToPage, 2923). +-define(wxPrintout_FitThisSizeToPageMargins, 2924). +-define(wxPrintout_MapScreenSizeToPaper, 2925). +-define(wxPrintout_MapScreenSizeToPage, 2926). +-define(wxPrintout_MapScreenSizeToPageMargins, 2927). +-define(wxPrintout_MapScreenSizeToDevice, 2928). +-define(wxPrintout_GetLogicalPaperRect, 2929). +-define(wxPrintout_GetLogicalPageRect, 2930). +-define(wxPrintout_GetLogicalPageMarginsRect, 2931). +-define(wxPrintout_SetLogicalOrigin, 2932). +-define(wxPrintout_OffsetLogicalOrigin, 2933). +-define(wxStyledTextCtrl_new_2, 2934). +-define(wxStyledTextCtrl_new_0, 2935). +-define(wxStyledTextCtrl_destruct, 2936). +-define(wxStyledTextCtrl_Create, 2937). +-define(wxStyledTextCtrl_AddText, 2938). +-define(wxStyledTextCtrl_AddStyledText, 2939). +-define(wxStyledTextCtrl_InsertText, 2940). +-define(wxStyledTextCtrl_ClearAll, 2941). +-define(wxStyledTextCtrl_ClearDocumentStyle, 2942). +-define(wxStyledTextCtrl_GetLength, 2943). +-define(wxStyledTextCtrl_GetCharAt, 2944). +-define(wxStyledTextCtrl_GetCurrentPos, 2945). +-define(wxStyledTextCtrl_GetAnchor, 2946). +-define(wxStyledTextCtrl_GetStyleAt, 2947). +-define(wxStyledTextCtrl_Redo, 2948). +-define(wxStyledTextCtrl_SetUndoCollection, 2949). +-define(wxStyledTextCtrl_SelectAll, 2950). +-define(wxStyledTextCtrl_SetSavePoint, 2951). +-define(wxStyledTextCtrl_GetStyledText, 2952). +-define(wxStyledTextCtrl_CanRedo, 2953). +-define(wxStyledTextCtrl_MarkerLineFromHandle, 2954). +-define(wxStyledTextCtrl_MarkerDeleteHandle, 2955). +-define(wxStyledTextCtrl_GetUndoCollection, 2956). +-define(wxStyledTextCtrl_GetViewWhiteSpace, 2957). +-define(wxStyledTextCtrl_SetViewWhiteSpace, 2958). +-define(wxStyledTextCtrl_PositionFromPoint, 2959). +-define(wxStyledTextCtrl_PositionFromPointClose, 2960). +-define(wxStyledTextCtrl_GotoLine, 2961). +-define(wxStyledTextCtrl_GotoPos, 2962). +-define(wxStyledTextCtrl_SetAnchor, 2963). +-define(wxStyledTextCtrl_GetCurLine, 2964). +-define(wxStyledTextCtrl_GetEndStyled, 2965). +-define(wxStyledTextCtrl_ConvertEOLs, 2966). +-define(wxStyledTextCtrl_GetEOLMode, 2967). +-define(wxStyledTextCtrl_SetEOLMode, 2968). +-define(wxStyledTextCtrl_StartStyling, 2969). +-define(wxStyledTextCtrl_SetStyling, 2970). +-define(wxStyledTextCtrl_GetBufferedDraw, 2971). +-define(wxStyledTextCtrl_SetBufferedDraw, 2972). +-define(wxStyledTextCtrl_SetTabWidth, 2973). +-define(wxStyledTextCtrl_GetTabWidth, 2974). +-define(wxStyledTextCtrl_SetCodePage, 2975). +-define(wxStyledTextCtrl_MarkerDefine, 2976). +-define(wxStyledTextCtrl_MarkerSetForeground, 2977). +-define(wxStyledTextCtrl_MarkerSetBackground, 2978). +-define(wxStyledTextCtrl_MarkerAdd, 2979). +-define(wxStyledTextCtrl_MarkerDelete, 2980). +-define(wxStyledTextCtrl_MarkerDeleteAll, 2981). +-define(wxStyledTextCtrl_MarkerGet, 2982). +-define(wxStyledTextCtrl_MarkerNext, 2983). +-define(wxStyledTextCtrl_MarkerPrevious, 2984). +-define(wxStyledTextCtrl_MarkerDefineBitmap, 2985). +-define(wxStyledTextCtrl_MarkerAddSet, 2986). +-define(wxStyledTextCtrl_MarkerSetAlpha, 2987). +-define(wxStyledTextCtrl_SetMarginType, 2988). +-define(wxStyledTextCtrl_GetMarginType, 2989). +-define(wxStyledTextCtrl_SetMarginWidth, 2990). +-define(wxStyledTextCtrl_GetMarginWidth, 2991). +-define(wxStyledTextCtrl_SetMarginMask, 2992). +-define(wxStyledTextCtrl_GetMarginMask, 2993). +-define(wxStyledTextCtrl_SetMarginSensitive, 2994). +-define(wxStyledTextCtrl_GetMarginSensitive, 2995). +-define(wxStyledTextCtrl_StyleClearAll, 2996). +-define(wxStyledTextCtrl_StyleSetForeground, 2997). +-define(wxStyledTextCtrl_StyleSetBackground, 2998). +-define(wxStyledTextCtrl_StyleSetBold, 2999). +-define(wxStyledTextCtrl_StyleSetItalic, 3000). +-define(wxStyledTextCtrl_StyleSetSize, 3001). +-define(wxStyledTextCtrl_StyleSetFaceName, 3002). +-define(wxStyledTextCtrl_StyleSetEOLFilled, 3003). +-define(wxStyledTextCtrl_StyleResetDefault, 3004). +-define(wxStyledTextCtrl_StyleSetUnderline, 3005). +-define(wxStyledTextCtrl_StyleSetCase, 3006). +-define(wxStyledTextCtrl_StyleSetHotSpot, 3007). +-define(wxStyledTextCtrl_SetSelForeground, 3008). +-define(wxStyledTextCtrl_SetSelBackground, 3009). +-define(wxStyledTextCtrl_GetSelAlpha, 3010). +-define(wxStyledTextCtrl_SetSelAlpha, 3011). +-define(wxStyledTextCtrl_SetCaretForeground, 3012). +-define(wxStyledTextCtrl_CmdKeyAssign, 3013). +-define(wxStyledTextCtrl_CmdKeyClear, 3014). +-define(wxStyledTextCtrl_CmdKeyClearAll, 3015). +-define(wxStyledTextCtrl_SetStyleBytes, 3016). +-define(wxStyledTextCtrl_StyleSetVisible, 3017). +-define(wxStyledTextCtrl_GetCaretPeriod, 3018). +-define(wxStyledTextCtrl_SetCaretPeriod, 3019). +-define(wxStyledTextCtrl_SetWordChars, 3020). +-define(wxStyledTextCtrl_BeginUndoAction, 3021). +-define(wxStyledTextCtrl_EndUndoAction, 3022). +-define(wxStyledTextCtrl_IndicatorSetStyle, 3023). +-define(wxStyledTextCtrl_IndicatorGetStyle, 3024). +-define(wxStyledTextCtrl_IndicatorSetForeground, 3025). +-define(wxStyledTextCtrl_IndicatorGetForeground, 3026). +-define(wxStyledTextCtrl_SetWhitespaceForeground, 3027). +-define(wxStyledTextCtrl_SetWhitespaceBackground, 3028). +-define(wxStyledTextCtrl_GetStyleBits, 3029). +-define(wxStyledTextCtrl_SetLineState, 3030). +-define(wxStyledTextCtrl_GetLineState, 3031). +-define(wxStyledTextCtrl_GetMaxLineState, 3032). +-define(wxStyledTextCtrl_GetCaretLineVisible, 3033). +-define(wxStyledTextCtrl_SetCaretLineVisible, 3034). +-define(wxStyledTextCtrl_GetCaretLineBackground, 3035). +-define(wxStyledTextCtrl_SetCaretLineBackground, 3036). +-define(wxStyledTextCtrl_AutoCompShow, 3037). +-define(wxStyledTextCtrl_AutoCompCancel, 3038). +-define(wxStyledTextCtrl_AutoCompActive, 3039). +-define(wxStyledTextCtrl_AutoCompPosStart, 3040). +-define(wxStyledTextCtrl_AutoCompComplete, 3041). +-define(wxStyledTextCtrl_AutoCompStops, 3042). +-define(wxStyledTextCtrl_AutoCompSetSeparator, 3043). +-define(wxStyledTextCtrl_AutoCompGetSeparator, 3044). +-define(wxStyledTextCtrl_AutoCompSelect, 3045). +-define(wxStyledTextCtrl_AutoCompSetCancelAtStart, 3046). +-define(wxStyledTextCtrl_AutoCompGetCancelAtStart, 3047). +-define(wxStyledTextCtrl_AutoCompSetFillUps, 3048). +-define(wxStyledTextCtrl_AutoCompSetChooseSingle, 3049). +-define(wxStyledTextCtrl_AutoCompGetChooseSingle, 3050). +-define(wxStyledTextCtrl_AutoCompSetIgnoreCase, 3051). +-define(wxStyledTextCtrl_AutoCompGetIgnoreCase, 3052). +-define(wxStyledTextCtrl_UserListShow, 3053). +-define(wxStyledTextCtrl_AutoCompSetAutoHide, 3054). +-define(wxStyledTextCtrl_AutoCompGetAutoHide, 3055). +-define(wxStyledTextCtrl_AutoCompSetDropRestOfWord, 3056). +-define(wxStyledTextCtrl_AutoCompGetDropRestOfWord, 3057). +-define(wxStyledTextCtrl_RegisterImage, 3058). +-define(wxStyledTextCtrl_ClearRegisteredImages, 3059). +-define(wxStyledTextCtrl_AutoCompGetTypeSeparator, 3060). +-define(wxStyledTextCtrl_AutoCompSetTypeSeparator, 3061). +-define(wxStyledTextCtrl_AutoCompSetMaxWidth, 3062). +-define(wxStyledTextCtrl_AutoCompGetMaxWidth, 3063). +-define(wxStyledTextCtrl_AutoCompSetMaxHeight, 3064). +-define(wxStyledTextCtrl_AutoCompGetMaxHeight, 3065). +-define(wxStyledTextCtrl_SetIndent, 3066). +-define(wxStyledTextCtrl_GetIndent, 3067). +-define(wxStyledTextCtrl_SetUseTabs, 3068). +-define(wxStyledTextCtrl_GetUseTabs, 3069). +-define(wxStyledTextCtrl_SetLineIndentation, 3070). +-define(wxStyledTextCtrl_GetLineIndentation, 3071). +-define(wxStyledTextCtrl_GetLineIndentPosition, 3072). +-define(wxStyledTextCtrl_GetColumn, 3073). +-define(wxStyledTextCtrl_SetUseHorizontalScrollBar, 3074). +-define(wxStyledTextCtrl_GetUseHorizontalScrollBar, 3075). +-define(wxStyledTextCtrl_SetIndentationGuides, 3076). +-define(wxStyledTextCtrl_GetIndentationGuides, 3077). +-define(wxStyledTextCtrl_SetHighlightGuide, 3078). +-define(wxStyledTextCtrl_GetHighlightGuide, 3079). +-define(wxStyledTextCtrl_GetLineEndPosition, 3080). +-define(wxStyledTextCtrl_GetCodePage, 3081). +-define(wxStyledTextCtrl_GetCaretForeground, 3082). +-define(wxStyledTextCtrl_GetReadOnly, 3083). +-define(wxStyledTextCtrl_SetCurrentPos, 3084). +-define(wxStyledTextCtrl_SetSelectionStart, 3085). +-define(wxStyledTextCtrl_GetSelectionStart, 3086). +-define(wxStyledTextCtrl_SetSelectionEnd, 3087). +-define(wxStyledTextCtrl_GetSelectionEnd, 3088). +-define(wxStyledTextCtrl_SetPrintMagnification, 3089). +-define(wxStyledTextCtrl_GetPrintMagnification, 3090). +-define(wxStyledTextCtrl_SetPrintColourMode, 3091). +-define(wxStyledTextCtrl_GetPrintColourMode, 3092). +-define(wxStyledTextCtrl_FindText, 3093). +-define(wxStyledTextCtrl_FormatRange, 3094). +-define(wxStyledTextCtrl_GetFirstVisibleLine, 3095). +-define(wxStyledTextCtrl_GetLine, 3096). +-define(wxStyledTextCtrl_GetLineCount, 3097). +-define(wxStyledTextCtrl_SetMarginLeft, 3098). +-define(wxStyledTextCtrl_GetMarginLeft, 3099). +-define(wxStyledTextCtrl_SetMarginRight, 3100). +-define(wxStyledTextCtrl_GetMarginRight, 3101). +-define(wxStyledTextCtrl_GetModify, 3102). +-define(wxStyledTextCtrl_SetSelection, 3103). +-define(wxStyledTextCtrl_GetSelectedText, 3104). +-define(wxStyledTextCtrl_GetTextRange, 3105). +-define(wxStyledTextCtrl_HideSelection, 3106). +-define(wxStyledTextCtrl_LineFromPosition, 3107). +-define(wxStyledTextCtrl_PositionFromLine, 3108). +-define(wxStyledTextCtrl_LineScroll, 3109). +-define(wxStyledTextCtrl_EnsureCaretVisible, 3110). +-define(wxStyledTextCtrl_ReplaceSelection, 3111). +-define(wxStyledTextCtrl_SetReadOnly, 3112). +-define(wxStyledTextCtrl_CanPaste, 3113). +-define(wxStyledTextCtrl_CanUndo, 3114). +-define(wxStyledTextCtrl_EmptyUndoBuffer, 3115). +-define(wxStyledTextCtrl_Undo, 3116). +-define(wxStyledTextCtrl_Cut, 3117). +-define(wxStyledTextCtrl_Copy, 3118). +-define(wxStyledTextCtrl_Paste, 3119). +-define(wxStyledTextCtrl_Clear, 3120). +-define(wxStyledTextCtrl_SetText, 3121). +-define(wxStyledTextCtrl_GetText, 3122). +-define(wxStyledTextCtrl_GetTextLength, 3123). +-define(wxStyledTextCtrl_GetOvertype, 3124). +-define(wxStyledTextCtrl_SetCaretWidth, 3125). +-define(wxStyledTextCtrl_GetCaretWidth, 3126). +-define(wxStyledTextCtrl_SetTargetStart, 3127). +-define(wxStyledTextCtrl_GetTargetStart, 3128). +-define(wxStyledTextCtrl_SetTargetEnd, 3129). +-define(wxStyledTextCtrl_GetTargetEnd, 3130). +-define(wxStyledTextCtrl_ReplaceTarget, 3131). +-define(wxStyledTextCtrl_SearchInTarget, 3132). +-define(wxStyledTextCtrl_SetSearchFlags, 3133). +-define(wxStyledTextCtrl_GetSearchFlags, 3134). +-define(wxStyledTextCtrl_CallTipShow, 3135). +-define(wxStyledTextCtrl_CallTipCancel, 3136). +-define(wxStyledTextCtrl_CallTipActive, 3137). +-define(wxStyledTextCtrl_CallTipPosAtStart, 3138). +-define(wxStyledTextCtrl_CallTipSetHighlight, 3139). +-define(wxStyledTextCtrl_CallTipSetBackground, 3140). +-define(wxStyledTextCtrl_CallTipSetForeground, 3141). +-define(wxStyledTextCtrl_CallTipSetForegroundHighlight, 3142). +-define(wxStyledTextCtrl_CallTipUseStyle, 3143). +-define(wxStyledTextCtrl_VisibleFromDocLine, 3144). +-define(wxStyledTextCtrl_DocLineFromVisible, 3145). +-define(wxStyledTextCtrl_WrapCount, 3146). +-define(wxStyledTextCtrl_SetFoldLevel, 3147). +-define(wxStyledTextCtrl_GetFoldLevel, 3148). +-define(wxStyledTextCtrl_GetLastChild, 3149). +-define(wxStyledTextCtrl_GetFoldParent, 3150). +-define(wxStyledTextCtrl_ShowLines, 3151). +-define(wxStyledTextCtrl_HideLines, 3152). +-define(wxStyledTextCtrl_GetLineVisible, 3153). +-define(wxStyledTextCtrl_SetFoldExpanded, 3154). +-define(wxStyledTextCtrl_GetFoldExpanded, 3155). +-define(wxStyledTextCtrl_ToggleFold, 3156). +-define(wxStyledTextCtrl_EnsureVisible, 3157). +-define(wxStyledTextCtrl_SetFoldFlags, 3158). +-define(wxStyledTextCtrl_EnsureVisibleEnforcePolicy, 3159). +-define(wxStyledTextCtrl_SetTabIndents, 3160). +-define(wxStyledTextCtrl_GetTabIndents, 3161). +-define(wxStyledTextCtrl_SetBackSpaceUnIndents, 3162). +-define(wxStyledTextCtrl_GetBackSpaceUnIndents, 3163). +-define(wxStyledTextCtrl_SetMouseDwellTime, 3164). +-define(wxStyledTextCtrl_GetMouseDwellTime, 3165). +-define(wxStyledTextCtrl_WordStartPosition, 3166). +-define(wxStyledTextCtrl_WordEndPosition, 3167). +-define(wxStyledTextCtrl_SetWrapMode, 3168). +-define(wxStyledTextCtrl_GetWrapMode, 3169). +-define(wxStyledTextCtrl_SetWrapVisualFlags, 3170). +-define(wxStyledTextCtrl_GetWrapVisualFlags, 3171). +-define(wxStyledTextCtrl_SetWrapVisualFlagsLocation, 3172). +-define(wxStyledTextCtrl_GetWrapVisualFlagsLocation, 3173). +-define(wxStyledTextCtrl_SetWrapStartIndent, 3174). +-define(wxStyledTextCtrl_GetWrapStartIndent, 3175). +-define(wxStyledTextCtrl_SetLayoutCache, 3176). +-define(wxStyledTextCtrl_GetLayoutCache, 3177). +-define(wxStyledTextCtrl_SetScrollWidth, 3178). +-define(wxStyledTextCtrl_GetScrollWidth, 3179). +-define(wxStyledTextCtrl_TextWidth, 3180). +-define(wxStyledTextCtrl_GetEndAtLastLine, 3181). +-define(wxStyledTextCtrl_TextHeight, 3182). +-define(wxStyledTextCtrl_SetUseVerticalScrollBar, 3183). +-define(wxStyledTextCtrl_GetUseVerticalScrollBar, 3184). +-define(wxStyledTextCtrl_AppendText, 3185). +-define(wxStyledTextCtrl_GetTwoPhaseDraw, 3186). +-define(wxStyledTextCtrl_SetTwoPhaseDraw, 3187). +-define(wxStyledTextCtrl_TargetFromSelection, 3188). +-define(wxStyledTextCtrl_LinesJoin, 3189). +-define(wxStyledTextCtrl_LinesSplit, 3190). +-define(wxStyledTextCtrl_SetFoldMarginColour, 3191). +-define(wxStyledTextCtrl_SetFoldMarginHiColour, 3192). +-define(wxStyledTextCtrl_LineDown, 3193). +-define(wxStyledTextCtrl_LineDownExtend, 3194). +-define(wxStyledTextCtrl_LineUp, 3195). +-define(wxStyledTextCtrl_LineUpExtend, 3196). +-define(wxStyledTextCtrl_CharLeft, 3197). +-define(wxStyledTextCtrl_CharLeftExtend, 3198). +-define(wxStyledTextCtrl_CharRight, 3199). +-define(wxStyledTextCtrl_CharRightExtend, 3200). +-define(wxStyledTextCtrl_WordLeft, 3201). +-define(wxStyledTextCtrl_WordLeftExtend, 3202). +-define(wxStyledTextCtrl_WordRight, 3203). +-define(wxStyledTextCtrl_WordRightExtend, 3204). +-define(wxStyledTextCtrl_Home, 3205). +-define(wxStyledTextCtrl_HomeExtend, 3206). +-define(wxStyledTextCtrl_LineEnd, 3207). +-define(wxStyledTextCtrl_LineEndExtend, 3208). +-define(wxStyledTextCtrl_DocumentStart, 3209). +-define(wxStyledTextCtrl_DocumentStartExtend, 3210). +-define(wxStyledTextCtrl_DocumentEnd, 3211). +-define(wxStyledTextCtrl_DocumentEndExtend, 3212). +-define(wxStyledTextCtrl_PageUp, 3213). +-define(wxStyledTextCtrl_PageUpExtend, 3214). +-define(wxStyledTextCtrl_PageDown, 3215). +-define(wxStyledTextCtrl_PageDownExtend, 3216). +-define(wxStyledTextCtrl_EditToggleOvertype, 3217). +-define(wxStyledTextCtrl_Cancel, 3218). +-define(wxStyledTextCtrl_DeleteBack, 3219). +-define(wxStyledTextCtrl_Tab, 3220). +-define(wxStyledTextCtrl_BackTab, 3221). +-define(wxStyledTextCtrl_NewLine, 3222). +-define(wxStyledTextCtrl_FormFeed, 3223). +-define(wxStyledTextCtrl_VCHome, 3224). +-define(wxStyledTextCtrl_VCHomeExtend, 3225). +-define(wxStyledTextCtrl_ZoomIn, 3226). +-define(wxStyledTextCtrl_ZoomOut, 3227). +-define(wxStyledTextCtrl_DelWordLeft, 3228). +-define(wxStyledTextCtrl_DelWordRight, 3229). +-define(wxStyledTextCtrl_LineCut, 3230). +-define(wxStyledTextCtrl_LineDelete, 3231). +-define(wxStyledTextCtrl_LineTranspose, 3232). +-define(wxStyledTextCtrl_LineDuplicate, 3233). +-define(wxStyledTextCtrl_LowerCase, 3234). +-define(wxStyledTextCtrl_UpperCase, 3235). +-define(wxStyledTextCtrl_LineScrollDown, 3236). +-define(wxStyledTextCtrl_LineScrollUp, 3237). +-define(wxStyledTextCtrl_DeleteBackNotLine, 3238). +-define(wxStyledTextCtrl_HomeDisplay, 3239). +-define(wxStyledTextCtrl_HomeDisplayExtend, 3240). +-define(wxStyledTextCtrl_LineEndDisplay, 3241). +-define(wxStyledTextCtrl_LineEndDisplayExtend, 3242). +-define(wxStyledTextCtrl_HomeWrapExtend, 3243). +-define(wxStyledTextCtrl_LineEndWrap, 3244). +-define(wxStyledTextCtrl_LineEndWrapExtend, 3245). +-define(wxStyledTextCtrl_VCHomeWrap, 3246). +-define(wxStyledTextCtrl_VCHomeWrapExtend, 3247). +-define(wxStyledTextCtrl_LineCopy, 3248). +-define(wxStyledTextCtrl_MoveCaretInsideView, 3249). +-define(wxStyledTextCtrl_LineLength, 3250). +-define(wxStyledTextCtrl_BraceHighlight, 3251). +-define(wxStyledTextCtrl_BraceBadLight, 3252). +-define(wxStyledTextCtrl_BraceMatch, 3253). +-define(wxStyledTextCtrl_GetViewEOL, 3254). +-define(wxStyledTextCtrl_SetViewEOL, 3255). +-define(wxStyledTextCtrl_SetModEventMask, 3256). +-define(wxStyledTextCtrl_GetEdgeColumn, 3257). +-define(wxStyledTextCtrl_SetEdgeColumn, 3258). +-define(wxStyledTextCtrl_GetEdgeMode, 3259). +-define(wxStyledTextCtrl_GetEdgeColour, 3260). +-define(wxStyledTextCtrl_SetEdgeColour, 3261). +-define(wxStyledTextCtrl_SearchAnchor, 3262). +-define(wxStyledTextCtrl_SearchNext, 3263). +-define(wxStyledTextCtrl_SearchPrev, 3264). +-define(wxStyledTextCtrl_LinesOnScreen, 3265). +-define(wxStyledTextCtrl_UsePopUp, 3266). +-define(wxStyledTextCtrl_SelectionIsRectangle, 3267). +-define(wxStyledTextCtrl_SetZoom, 3268). +-define(wxStyledTextCtrl_GetZoom, 3269). +-define(wxStyledTextCtrl_GetModEventMask, 3270). +-define(wxStyledTextCtrl_SetSTCFocus, 3271). +-define(wxStyledTextCtrl_GetSTCFocus, 3272). +-define(wxStyledTextCtrl_SetStatus, 3273). +-define(wxStyledTextCtrl_GetStatus, 3274). +-define(wxStyledTextCtrl_SetMouseDownCaptures, 3275). +-define(wxStyledTextCtrl_GetMouseDownCaptures, 3276). +-define(wxStyledTextCtrl_SetSTCCursor, 3277). +-define(wxStyledTextCtrl_GetSTCCursor, 3278). +-define(wxStyledTextCtrl_SetControlCharSymbol, 3279). +-define(wxStyledTextCtrl_GetControlCharSymbol, 3280). +-define(wxStyledTextCtrl_WordPartLeft, 3281). +-define(wxStyledTextCtrl_WordPartLeftExtend, 3282). +-define(wxStyledTextCtrl_WordPartRight, 3283). +-define(wxStyledTextCtrl_WordPartRightExtend, 3284). +-define(wxStyledTextCtrl_SetVisiblePolicy, 3285). +-define(wxStyledTextCtrl_DelLineLeft, 3286). +-define(wxStyledTextCtrl_DelLineRight, 3287). +-define(wxStyledTextCtrl_GetXOffset, 3288). +-define(wxStyledTextCtrl_ChooseCaretX, 3289). +-define(wxStyledTextCtrl_SetXCaretPolicy, 3290). +-define(wxStyledTextCtrl_SetYCaretPolicy, 3291). +-define(wxStyledTextCtrl_GetPrintWrapMode, 3292). +-define(wxStyledTextCtrl_SetHotspotActiveForeground, 3293). +-define(wxStyledTextCtrl_SetHotspotActiveBackground, 3294). +-define(wxStyledTextCtrl_SetHotspotActiveUnderline, 3295). +-define(wxStyledTextCtrl_SetHotspotSingleLine, 3296). +-define(wxStyledTextCtrl_ParaDownExtend, 3297). +-define(wxStyledTextCtrl_ParaUp, 3298). +-define(wxStyledTextCtrl_ParaUpExtend, 3299). +-define(wxStyledTextCtrl_PositionBefore, 3300). +-define(wxStyledTextCtrl_PositionAfter, 3301). +-define(wxStyledTextCtrl_CopyRange, 3302). +-define(wxStyledTextCtrl_CopyText, 3303). +-define(wxStyledTextCtrl_SetSelectionMode, 3304). +-define(wxStyledTextCtrl_GetSelectionMode, 3305). +-define(wxStyledTextCtrl_LineDownRectExtend, 3306). +-define(wxStyledTextCtrl_LineUpRectExtend, 3307). +-define(wxStyledTextCtrl_CharLeftRectExtend, 3308). +-define(wxStyledTextCtrl_CharRightRectExtend, 3309). +-define(wxStyledTextCtrl_HomeRectExtend, 3310). +-define(wxStyledTextCtrl_VCHomeRectExtend, 3311). +-define(wxStyledTextCtrl_LineEndRectExtend, 3312). +-define(wxStyledTextCtrl_PageUpRectExtend, 3313). +-define(wxStyledTextCtrl_PageDownRectExtend, 3314). +-define(wxStyledTextCtrl_StutteredPageUp, 3315). +-define(wxStyledTextCtrl_StutteredPageUpExtend, 3316). +-define(wxStyledTextCtrl_StutteredPageDown, 3317). +-define(wxStyledTextCtrl_StutteredPageDownExtend, 3318). +-define(wxStyledTextCtrl_WordLeftEnd, 3319). +-define(wxStyledTextCtrl_WordLeftEndExtend, 3320). +-define(wxStyledTextCtrl_WordRightEnd, 3321). +-define(wxStyledTextCtrl_WordRightEndExtend, 3322). +-define(wxStyledTextCtrl_SetWhitespaceChars, 3323). +-define(wxStyledTextCtrl_SetCharsDefault, 3324). +-define(wxStyledTextCtrl_AutoCompGetCurrent, 3325). +-define(wxStyledTextCtrl_Allocate, 3326). +-define(wxStyledTextCtrl_FindColumn, 3327). +-define(wxStyledTextCtrl_GetCaretSticky, 3328). +-define(wxStyledTextCtrl_SetCaretSticky, 3329). +-define(wxStyledTextCtrl_ToggleCaretSticky, 3330). +-define(wxStyledTextCtrl_SetPasteConvertEndings, 3331). +-define(wxStyledTextCtrl_GetPasteConvertEndings, 3332). +-define(wxStyledTextCtrl_SelectionDuplicate, 3333). +-define(wxStyledTextCtrl_SetCaretLineBackAlpha, 3334). +-define(wxStyledTextCtrl_GetCaretLineBackAlpha, 3335). +-define(wxStyledTextCtrl_StartRecord, 3336). +-define(wxStyledTextCtrl_StopRecord, 3337). +-define(wxStyledTextCtrl_SetLexer, 3338). +-define(wxStyledTextCtrl_GetLexer, 3339). +-define(wxStyledTextCtrl_Colourise, 3340). +-define(wxStyledTextCtrl_SetProperty, 3341). +-define(wxStyledTextCtrl_SetKeyWords, 3342). +-define(wxStyledTextCtrl_SetLexerLanguage, 3343). +-define(wxStyledTextCtrl_GetProperty, 3344). +-define(wxStyledTextCtrl_GetStyleBitsNeeded, 3345). +-define(wxStyledTextCtrl_GetCurrentLine, 3346). +-define(wxStyledTextCtrl_StyleSetSpec, 3347). +-define(wxStyledTextCtrl_StyleSetFont, 3348). +-define(wxStyledTextCtrl_StyleSetFontAttr, 3349). +-define(wxStyledTextCtrl_StyleSetCharacterSet, 3350). +-define(wxStyledTextCtrl_StyleSetFontEncoding, 3351). +-define(wxStyledTextCtrl_CmdKeyExecute, 3352). +-define(wxStyledTextCtrl_SetMargins, 3353). +-define(wxStyledTextCtrl_GetSelection, 3354). +-define(wxStyledTextCtrl_PointFromPosition, 3355). +-define(wxStyledTextCtrl_ScrollToLine, 3356). +-define(wxStyledTextCtrl_ScrollToColumn, 3357). +-define(wxStyledTextCtrl_SendMsg, 3358). +-define(wxStyledTextCtrl_SetVScrollBar, 3359). +-define(wxStyledTextCtrl_SetHScrollBar, 3360). +-define(wxStyledTextCtrl_GetLastKeydownProcessed, 3361). +-define(wxStyledTextCtrl_SetLastKeydownProcessed, 3362). +-define(wxStyledTextCtrl_SaveFile, 3363). +-define(wxStyledTextCtrl_LoadFile, 3364). +-define(wxStyledTextCtrl_DoDragOver, 3365). +-define(wxStyledTextCtrl_DoDropText, 3366). +-define(wxStyledTextCtrl_GetUseAntiAliasing, 3367). +-define(wxStyledTextCtrl_AddTextRaw, 3368). +-define(wxStyledTextCtrl_InsertTextRaw, 3369). +-define(wxStyledTextCtrl_GetCurLineRaw, 3370). +-define(wxStyledTextCtrl_GetLineRaw, 3371). +-define(wxStyledTextCtrl_GetSelectedTextRaw, 3372). +-define(wxStyledTextCtrl_GetTextRangeRaw, 3373). +-define(wxStyledTextCtrl_SetTextRaw, 3374). +-define(wxStyledTextCtrl_GetTextRaw, 3375). +-define(wxStyledTextCtrl_AppendTextRaw, 3376). +-define(wxArtProvider_GetBitmap, 3377). +-define(wxArtProvider_GetIcon, 3378). +-define(wxTreeEvent_GetKeyCode, 3379). +-define(wxTreeEvent_GetItem, 3380). +-define(wxTreeEvent_GetKeyEvent, 3381). +-define(wxTreeEvent_GetLabel, 3382). +-define(wxTreeEvent_GetOldItem, 3383). +-define(wxTreeEvent_GetPoint, 3384). +-define(wxTreeEvent_IsEditCancelled, 3385). +-define(wxTreeEvent_SetToolTip, 3386). +-define(wxNotebookEvent_GetOldSelection, 3387). +-define(wxNotebookEvent_GetSelection, 3388). +-define(wxNotebookEvent_SetOldSelection, 3389). +-define(wxNotebookEvent_SetSelection, 3390). +-define(wxFileDataObject_new, 3391). +-define(wxFileDataObject_AddFile, 3392). +-define(wxFileDataObject_GetFilenames, 3393). +-define(wxFileDataObject_destroy, 3394). +-define(wxTextDataObject_new, 3395). +-define(wxTextDataObject_GetTextLength, 3396). +-define(wxTextDataObject_GetText, 3397). +-define(wxTextDataObject_SetText, 3398). +-define(wxTextDataObject_destroy, 3399). +-define(wxBitmapDataObject_new_1_1, 3400). +-define(wxBitmapDataObject_new_1_0, 3401). +-define(wxBitmapDataObject_GetBitmap, 3402). +-define(wxBitmapDataObject_SetBitmap, 3403). +-define(wxBitmapDataObject_destroy, 3404). +-define(wxClipboard_new, 3406). +-define(wxClipboard_destruct, 3407). +-define(wxClipboard_AddData, 3408). +-define(wxClipboard_Clear, 3409). +-define(wxClipboard_Close, 3410). +-define(wxClipboard_Flush, 3411). +-define(wxClipboard_GetData, 3412). +-define(wxClipboard_IsOpened, 3413). +-define(wxClipboard_Open, 3414). +-define(wxClipboard_SetData, 3415). +-define(wxClipboard_UsePrimarySelection, 3417). +-define(wxClipboard_IsSupported, 3418). +-define(wxClipboard_Get, 3419). +-define(wxSpinEvent_GetPosition, 3420). +-define(wxSpinEvent_SetPosition, 3421). +-define(wxSplitterWindow_new_0, 3422). +-define(wxSplitterWindow_new_2, 3423). +-define(wxSplitterWindow_destruct, 3424). +-define(wxSplitterWindow_Create, 3425). +-define(wxSplitterWindow_GetMinimumPaneSize, 3426). +-define(wxSplitterWindow_GetSashGravity, 3427). +-define(wxSplitterWindow_GetSashPosition, 3428). +-define(wxSplitterWindow_GetSplitMode, 3429). +-define(wxSplitterWindow_GetWindow1, 3430). +-define(wxSplitterWindow_GetWindow2, 3431). +-define(wxSplitterWindow_Initialize, 3432). +-define(wxSplitterWindow_IsSplit, 3433). +-define(wxSplitterWindow_ReplaceWindow, 3434). +-define(wxSplitterWindow_SetSashGravity, 3435). +-define(wxSplitterWindow_SetSashPosition, 3436). +-define(wxSplitterWindow_SetSashSize, 3437). +-define(wxSplitterWindow_SetMinimumPaneSize, 3438). +-define(wxSplitterWindow_SetSplitMode, 3439). +-define(wxSplitterWindow_SplitHorizontally, 3440). +-define(wxSplitterWindow_SplitVertically, 3441). +-define(wxSplitterWindow_Unsplit, 3442). +-define(wxSplitterWindow_UpdateSize, 3443). +-define(wxSplitterEvent_GetSashPosition, 3444). +-define(wxSplitterEvent_GetX, 3445). +-define(wxSplitterEvent_GetY, 3446). +-define(wxSplitterEvent_GetWindowBeingRemoved, 3447). +-define(wxSplitterEvent_SetSashPosition, 3448). +-define(wxHtmlWindow_new_0, 3449). +-define(wxHtmlWindow_new_2, 3450). +-define(wxHtmlWindow_AppendToPage, 3451). +-define(wxHtmlWindow_GetOpenedAnchor, 3452). +-define(wxHtmlWindow_GetOpenedPage, 3453). +-define(wxHtmlWindow_GetOpenedPageTitle, 3454). +-define(wxHtmlWindow_GetRelatedFrame, 3455). +-define(wxHtmlWindow_HistoryBack, 3456). +-define(wxHtmlWindow_HistoryCanBack, 3457). +-define(wxHtmlWindow_HistoryCanForward, 3458). +-define(wxHtmlWindow_HistoryClear, 3459). +-define(wxHtmlWindow_HistoryForward, 3460). +-define(wxHtmlWindow_LoadFile, 3461). +-define(wxHtmlWindow_LoadPage, 3462). +-define(wxHtmlWindow_SelectAll, 3463). +-define(wxHtmlWindow_SelectionToText, 3464). +-define(wxHtmlWindow_SelectLine, 3465). +-define(wxHtmlWindow_SelectWord, 3466). +-define(wxHtmlWindow_SetBorders, 3467). +-define(wxHtmlWindow_SetFonts, 3468). +-define(wxHtmlWindow_SetPage, 3469). +-define(wxHtmlWindow_SetRelatedFrame, 3470). +-define(wxHtmlWindow_SetRelatedStatusBar, 3471). +-define(wxHtmlWindow_ToText, 3472). +-define(wxHtmlWindow_destroy, 3473). +-define(wxHtmlLinkEvent_GetLinkInfo, 3474). +-define(wxAuiNotebookEvent_SetSelection, 3475). +-define(wxAuiNotebookEvent_GetSelection, 3476). +-define(wxAuiNotebookEvent_SetOldSelection, 3477). +-define(wxAuiNotebookEvent_GetOldSelection, 3478). +-define(wxAuiNotebookEvent_SetDragSource, 3479). +-define(wxAuiNotebookEvent_GetDragSource, 3480). +-define(wxAuiManagerEvent_SetManager, 3481). +-define(wxAuiManagerEvent_GetManager, 3482). +-define(wxAuiManagerEvent_SetPane, 3483). +-define(wxAuiManagerEvent_GetPane, 3484). +-define(wxAuiManagerEvent_SetButton, 3485). +-define(wxAuiManagerEvent_GetButton, 3486). +-define(wxAuiManagerEvent_SetDC, 3487). +-define(wxAuiManagerEvent_GetDC, 3488). +-define(wxAuiManagerEvent_Veto, 3489). +-define(wxAuiManagerEvent_GetVeto, 3490). +-define(wxAuiManagerEvent_SetCanVeto, 3491). +-define(wxAuiManagerEvent_CanVeto, 3492). +-define(wxLogNull_new, 3493). +-define(wxLogNull_destroy, 3494). |