summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFred Hornsey <hornseyf@objectcomputing.com>2019-01-19 23:57:28 -0600
committerFred Hornsey <hornseyf@objectcomputing.com>2019-01-19 23:57:28 -0600
commit5845c114751e79e8cbd5955ec9c16f1c55e41121 (patch)
tree6d29710411406a885357888d3be1eeb054d5cd3b
parent320b8f9c1365484b5e1d4f20301a39fa3a72f97c (diff)
parent560f112ae96729e18e2980653ab12b8c399eaabe (diff)
downloadATCD-5845c114751e79e8cbd5955ec9c16f1c55e41121.tar.gz
Merge remote-tracking branch 'upstream/master' into igtd/android
-rw-r--r--.travis.yml27
-rw-r--r--ACE/ACE-INSTALL.html5
-rw-r--r--ACE/COPYING2
-rw-r--r--ACE/ChangeLogs/ACE-6_5_3367
-rw-r--r--ACE/NEWS15
-rw-r--r--ACE/PROBLEM-REPORT-FORM2
-rw-r--r--ACE/VERSION2
-rw-r--r--ACE/ace/Dev_Poll_Reactor.h4
-rw-r--r--ACE/ace/Message_Block.h2
-rw-r--r--ACE/ace/Reactor.h2
-rw-r--r--ACE/ace/Reactor_Impl.h4
-rw-r--r--ACE/ace/SString.h6
-rw-r--r--ACE/ace/Select_Reactor_T.h10
-rw-r--r--ACE/ace/Select_Reactor_T.inl2
-rw-r--r--ACE/ace/Sock_Connect.cpp2
-rw-r--r--ACE/ace/Vector_T.h10
-rw-r--r--ACE/ace/Vector_T.inl12
-rw-r--r--ACE/ace/Version.h8
-rw-r--r--ACE/ace/WFMO_Reactor.h6
-rw-r--r--ACE/ace/config-android.h2
-rw-r--r--ACE/ace/os_include/sys/os_sem.h4
-rw-r--r--ACE/bin/MakeProjectCreator/config/ace_openssl.mpb4
-rw-r--r--ACE/bin/MakeProjectCreator/config/vs2017nmake.mpb6
-rwxr-xr-xACE/bin/copy-local-script.sh8
-rwxr-xr-xACE/bin/copy-script.sh2
-rwxr-xr-xACE/bin/diff-builds-and-group-fixed-tests-only.sh2
-rw-r--r--ACE/debian/control62
-rw-r--r--ACE/debian/libace-6.5.2.lintian-overrides6
-rw-r--r--ACE/debian/libace-6.5.3.docs (renamed from ACE/debian/libace-6.5.2.docs)0
-rw-r--r--ACE/debian/libace-6.5.3.install (renamed from ACE/debian/libace-6.5.2.install)0
-rw-r--r--ACE/debian/libace-6.5.3.lintian-overrides6
-rw-r--r--ACE/debian/libace-flreactor-6.5.2.lintian-overrides1
-rw-r--r--ACE/debian/libace-flreactor-6.5.3.install (renamed from ACE/debian/libace-flreactor-6.5.2.install)0
-rw-r--r--ACE/debian/libace-flreactor-6.5.3.lintian-overrides1
-rw-r--r--ACE/debian/libace-foxreactor-6.5.2.lintian-overrides1
-rw-r--r--ACE/debian/libace-foxreactor-6.5.3.install (renamed from ACE/debian/libace-foxreactor-6.5.2.install)0
-rw-r--r--ACE/debian/libace-foxreactor-6.5.3.lintian-overrides1
-rw-r--r--ACE/debian/libace-htbp-6.5.2.lintian-overrides1
-rw-r--r--ACE/debian/libace-htbp-6.5.3.install (renamed from ACE/debian/libace-htbp-6.5.2.install)0
-rw-r--r--ACE/debian/libace-htbp-6.5.3.lintian-overrides1
-rw-r--r--ACE/debian/libace-inet-6.5.2.lintian-overrides2
-rw-r--r--ACE/debian/libace-inet-6.5.3.install (renamed from ACE/debian/libace-inet-6.5.2.install)0
-rw-r--r--ACE/debian/libace-inet-6.5.3.lintian-overrides2
-rw-r--r--ACE/debian/libace-inet-ssl-6.5.2.lintian-overrides4
-rw-r--r--ACE/debian/libace-inet-ssl-6.5.3.install (renamed from ACE/debian/libace-inet-ssl-6.5.2.install)0
-rw-r--r--ACE/debian/libace-inet-ssl-6.5.3.lintian-overrides4
-rw-r--r--ACE/debian/libace-rmcast-6.5.2.lintian-overrides1
-rw-r--r--ACE/debian/libace-rmcast-6.5.3.install (renamed from ACE/debian/libace-rmcast-6.5.2.install)0
-rw-r--r--ACE/debian/libace-rmcast-6.5.3.lintian-overrides1
-rw-r--r--ACE/debian/libace-ssl-6.5.2.lintian-overrides5
-rw-r--r--ACE/debian/libace-ssl-6.5.3.NEWS (renamed from ACE/debian/libace-ssl-6.5.2.NEWS)0
-rw-r--r--ACE/debian/libace-ssl-6.5.3.install (renamed from ACE/debian/libace-ssl-6.5.2.install)0
-rw-r--r--ACE/debian/libace-ssl-6.5.3.lintian-overrides5
-rw-r--r--ACE/debian/libace-tkreactor-6.5.2.lintian-overrides1
-rw-r--r--ACE/debian/libace-tkreactor-6.5.3.install (renamed from ACE/debian/libace-tkreactor-6.5.2.install)0
-rw-r--r--ACE/debian/libace-tkreactor-6.5.3.lintian-overrides1
-rw-r--r--ACE/debian/libace-tmcast-6.5.2.lintian-overrides1
-rw-r--r--ACE/debian/libace-tmcast-6.5.3.install (renamed from ACE/debian/libace-tmcast-6.5.2.install)0
-rw-r--r--ACE/debian/libace-tmcast-6.5.3.lintian-overrides1
-rw-r--r--ACE/debian/libace-xml-utils-6.5.2.lintian-overrides1
-rw-r--r--ACE/debian/libace-xml-utils-6.5.3.install (renamed from ACE/debian/libace-xml-utils-6.5.2.install)0
-rw-r--r--ACE/debian/libace-xml-utils-6.5.3.lintian-overrides1
-rw-r--r--ACE/debian/libace-xtreactor-6.5.2.lintian-overrides1
-rw-r--r--ACE/debian/libace-xtreactor-6.5.3.install (renamed from ACE/debian/libace-xtreactor-6.5.2.install)0
-rw-r--r--ACE/debian/libace-xtreactor-6.5.3.lintian-overrides1
-rw-r--r--ACE/debian/libacexml-6.5.2.lintian-overrides3
-rw-r--r--ACE/debian/libacexml-6.5.3.docs (renamed from ACE/debian/libacexml-6.5.2.docs)0
-rw-r--r--ACE/debian/libacexml-6.5.3.install (renamed from ACE/debian/libacexml-6.5.2.install)0
-rw-r--r--ACE/debian/libacexml-6.5.3.lintian-overrides3
-rw-r--r--ACE/debian/libkokyu-6.5.2.lintian-overrides1
-rw-r--r--ACE/debian/libkokyu-6.5.3.docs (renamed from ACE/debian/libkokyu-6.5.2.docs)0
-rw-r--r--ACE/debian/libkokyu-6.5.3.install (renamed from ACE/debian/libkokyu-6.5.2.install)0
-rw-r--r--ACE/debian/libkokyu-6.5.3.lintian-overrides1
-rw-r--r--ACE/debian/libnetsvcs-6.5.2.lintian-overrides1
-rw-r--r--ACE/debian/libnetsvcs-6.5.3.docs (renamed from ACE/debian/libnetsvcs-6.5.2.docs)0
-rw-r--r--ACE/debian/libnetsvcs-6.5.3.install (renamed from ACE/debian/libnetsvcs-6.5.2.install)0
-rw-r--r--ACE/debian/libnetsvcs-6.5.3.lintian-overrides1
-rw-r--r--ACE/docs/Download.html64
-rw-r--r--ACE/docs/bczar/bczar.html2
-rw-r--r--ACE/etc/index.html1
-rw-r--r--ACE/include/makeinclude/platform_android.GNU4
-rw-r--r--ACE/include/makeinclude/platform_linux_clang.GNU7
-rw-r--r--ACE/include/makeinclude/platform_linux_common.GNU4
-rw-r--r--ACE/include/makeinclude/wrapper_macros.GNU12
-rw-r--r--ACE/rpmbuild/ace-tao.spec4
-rw-r--r--ACE/tests/.gitignore4
-rw-r--r--ACE/tests/Bug_3709_Regression_Test.cpp6
-rw-r--r--ACE/tests/Message_Block_Test.cpp35
-rw-r--r--ACE/tests/Vector_Test.cpp31
-rw-r--r--README.md3
-rw-r--r--TAO/COPYING2
-rw-r--r--TAO/ChangeLogs/TAO-2_5_3369
-rw-r--r--TAO/MPC/config/taobaseidldefaults.mpb1
-rw-r--r--TAO/NEWS36
-rw-r--r--TAO/PROBLEM-REPORT-FORM4
-rw-r--r--TAO/TAO_IDL/.gitignore1
-rw-r--r--TAO/TAO_IDL/INSTALL.sun186
-rw-r--r--TAO/TAO_IDL/README.md17
-rw-r--r--TAO/TAO_IDL/README.sun245
-rw-r--r--TAO/TAO_IDL/ast/ast_annotation_appl.cpp181
-rw-r--r--TAO/TAO_IDL/ast/ast_annotation_decl.cpp114
-rw-r--r--TAO/TAO_IDL/ast/ast_annotation_member.cpp109
-rw-r--r--TAO/TAO_IDL/ast/ast_array.cpp15
-rw-r--r--TAO/TAO_IDL/ast/ast_decl.cpp177
-rw-r--r--TAO/TAO_IDL/ast/ast_enum.cpp13
-rw-r--r--TAO/TAO_IDL/ast/ast_enum_val.cpp15
-rw-r--r--TAO/TAO_IDL/ast/ast_expression.cpp123
-rw-r--r--TAO/TAO_IDL/ast/ast_field.cpp25
-rw-r--r--TAO/TAO_IDL/ast/ast_generator.cpp31
-rw-r--r--TAO/TAO_IDL/ast/ast_module.cpp7
-rw-r--r--TAO/TAO_IDL/ast/ast_sequence.cpp26
-rw-r--r--TAO/TAO_IDL/ast/ast_structure.cpp43
-rw-r--r--TAO/TAO_IDL/ast/ast_typedef.cpp46
-rw-r--r--TAO/TAO_IDL/ast/ast_union.cpp26
-rw-r--r--TAO/TAO_IDL/ast/ast_union_branch.cpp9
-rw-r--r--TAO/TAO_IDL/ast/ast_visitor.cpp5
-rw-r--r--TAO/TAO_IDL/be/be_global.cpp81
-rw-r--r--TAO/TAO_IDL/be/be_init.cpp2
-rw-r--r--TAO/TAO_IDL/be/be_visitor_ami_pre_proc.cpp9
-rw-r--r--TAO/TAO_IDL/be/be_visitor_field/cdr_op_cs.cpp15
-rw-r--r--TAO/TAO_IDL/be/be_visitor_scope.cpp5
-rw-r--r--TAO/TAO_IDL/be/be_visitor_union/union.cpp12
-rw-r--r--TAO/TAO_IDL/be_include/be_global.h4
-rw-r--r--TAO/TAO_IDL/docs/ANNOUNCEMENT131
-rw-r--r--TAO/TAO_IDL/docs/CHANGES122
-rw-r--r--TAO/TAO_IDL/docs/README.md54
-rw-r--r--TAO/TAO_IDL/docs/WRITING_A_BE5
-rw-r--r--TAO/TAO_IDL/docs/annotations.md502
-rw-r--r--TAO/TAO_IDL/docs/historical/ANNOUNCEMENT (renamed from TAO/TAO_IDL/ANNOUNCEMENT)0
-rw-r--r--TAO/TAO_IDL/docs/historical/BUG_REPORT (renamed from TAO/TAO_IDL/docs/BUG_REPORT)0
-rw-r--r--TAO/TAO_IDL/docs/historical/CHANGES (renamed from TAO/TAO_IDL/CHANGES)0
-rw-r--r--TAO/TAO_IDL/docs/historical/CLI (renamed from TAO/TAO_IDL/docs/CLI)0
-rw-r--r--TAO/TAO_IDL/docs/historical/INSTALL (renamed from TAO/TAO_IDL/docs/INSTALL)0
-rw-r--r--TAO/TAO_IDL/docs/historical/PROBLEMS (renamed from TAO/TAO_IDL/docs/PROBLEMS)0
-rw-r--r--TAO/TAO_IDL/docs/historical/README (renamed from TAO/TAO_IDL/docs/README)0
-rw-r--r--TAO/TAO_IDL/docs/historical/ROADMAP (renamed from TAO/TAO_IDL/docs/ROADMAP)0
-rw-r--r--TAO/TAO_IDL/driver/drv_args.cpp448
-rw-r--r--TAO/TAO_IDL/fe/fe_extern.cpp11
-rw-r--r--TAO/TAO_IDL/fe/fe_lookup.cpp2
-rw-r--r--TAO/TAO_IDL/fe/idl.ll6
-rw-r--r--TAO/TAO_IDL/fe/idl.tab.cpp5764
-rw-r--r--TAO/TAO_IDL/fe/idl.tab.hpp25
-rw-r--r--TAO/TAO_IDL/fe/idl.ypp1434
-rw-r--r--TAO/TAO_IDL/fe/idl.yy.cpp1328
-rw-r--r--TAO/TAO_IDL/fe/lookup_starter.txt3
-rw-r--r--TAO/TAO_IDL/fe/post_flex.sed10
-rw-r--r--TAO/TAO_IDL/fe/post_gperf.sed2
-rw-r--r--TAO/TAO_IDL/include/ast_annotation_appl.h112
-rw-r--r--TAO/TAO_IDL/include/ast_annotation_decl.h60
-rw-r--r--TAO/TAO_IDL/include/ast_annotation_member.h69
-rw-r--r--TAO/TAO_IDL/include/ast_array.h15
-rw-r--r--TAO/TAO_IDL/include/ast_concrete_type.h2
-rw-r--r--TAO/TAO_IDL/include/ast_constant.h2
-rw-r--r--TAO/TAO_IDL/include/ast_decl.h126
-rw-r--r--TAO/TAO_IDL/include/ast_enum.h2
-rw-r--r--TAO/TAO_IDL/include/ast_enum_val.h13
-rw-r--r--TAO/TAO_IDL/include/ast_expression.h13
-rw-r--r--TAO/TAO_IDL/include/ast_field.h19
-rw-r--r--TAO/TAO_IDL/include/ast_generator.h16
-rw-r--r--TAO/TAO_IDL/include/ast_module.h6
-rw-r--r--TAO/TAO_IDL/include/ast_sequence.h13
-rw-r--r--TAO/TAO_IDL/include/ast_structure.h13
-rw-r--r--TAO/TAO_IDL/include/ast_typedef.h12
-rw-r--r--TAO/TAO_IDL/include/ast_union.h13
-rw-r--r--TAO/TAO_IDL/include/ast_union_branch.h2
-rw-r--r--TAO/TAO_IDL/include/ast_visitor.h2
-rw-r--r--TAO/TAO_IDL/include/fe_declarator.h2
-rw-r--r--TAO/TAO_IDL/include/fe_extern.h29
-rw-r--r--TAO/TAO_IDL/include/idl_defines.h36
-rw-r--r--TAO/TAO_IDL/include/idl_global.h265
-rw-r--r--TAO/TAO_IDL/include/idl_version.h114
-rw-r--r--TAO/TAO_IDL/include/utl_annotations.h26
-rw-r--r--TAO/TAO_IDL/include/utl_err.h70
-rw-r--r--TAO/TAO_IDL/include/utl_identifier.h23
-rw-r--r--TAO/TAO_IDL/include/utl_idlist.h11
-rw-r--r--TAO/TAO_IDL/include/utl_scope.h12
-rw-r--r--TAO/TAO_IDL/narrow/narrow.cpp6
-rwxr-xr-xTAO/TAO_IDL/regen.pl16
-rwxr-xr-xTAO/TAO_IDL/regen.sh6
-rw-r--r--TAO/TAO_IDL/tao_idl.cpp84
-rw-r--r--TAO/TAO_IDL/tao_idl.mpc2
-rw-r--r--TAO/TAO_IDL/tao_idl_fe.mpc28
-rw-r--r--TAO/TAO_IDL/util/idl_version.cpp95
-rw-r--r--TAO/TAO_IDL/util/utl_annotations.cpp46
-rw-r--r--TAO/TAO_IDL/util/utl_err.cpp561
-rw-r--r--TAO/TAO_IDL/util/utl_global.cpp119
-rw-r--r--TAO/TAO_IDL/util/utl_identifier.cpp91
-rw-r--r--TAO/TAO_IDL/util/utl_idlist.cpp82
-rw-r--r--TAO/TAO_IDL/util/utl_scope.cpp44
-rw-r--r--TAO/VERSION2
-rw-r--r--TAO/bin/tao_orb_tests.lst3
-rw-r--r--TAO/bin/tao_other_tests.lst1
-rw-r--r--TAO/docs/ORBEndpoint.html9
-rw-r--r--TAO/docs/Options.html2
-rw-r--r--TAO/docs/compiler.html92
-rw-r--r--TAO/docs/pluggable_messaging.html7
-rw-r--r--TAO/docs/pluggable_protocols/index.html4
-rw-r--r--TAO/docs/tutorials/Quoter/Event_Service/index.html2
-rw-r--r--TAO/examples/RTScheduling/Fixed_Priority_Scheduler/Fixed_Priority_Scheduler.mpc1
-rw-r--r--TAO/examples/RTScheduling/MIF_Scheduler/MIF_Scheduler.mpc1
-rw-r--r--TAO/orbsvcs/IFR_Service/be_global.cpp57
-rw-r--r--TAO/orbsvcs/IFR_Service/be_global.h2
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.cpp204
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.h3
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/AsyncListManager.cpp4
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/Forwarder.cpp5
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/ImR_Activator_i.cpp42
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/ImR_Locator.idl15
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.cpp144
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.h4
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/ImplRepo_Service.mpc2
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/LiveCheck.cpp271
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/LiveCheck.h33
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/Locator_Options.cpp35
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/Locator_Options.h4
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/Locator_Repository.cpp10
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/Locator_XMLHandler.cpp4
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/Server_Info.h2
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/Shared_Backing_Store.cpp17
-rw-r--r--TAO/orbsvcs/ImplRepo_Service/tao_imr_i.cpp10
-rw-r--r--TAO/orbsvcs/orbsvcs/HTIOP.mpc1
-rw-r--r--TAO/orbsvcs/orbsvcs/SSLIOP.mpc1
-rw-r--r--TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Connector.cpp2
-rw-r--r--TAO/orbsvcs/tests/Bug_3216_Regression/client.cpp3
-rw-r--r--TAO/orbsvcs/tests/FT_Naming/FaultTolerant/client.cpp6
-rw-r--r--TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/README6
-rw-r--r--TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/Test.idl2
-rw-r--r--TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/Test_i.cpp1
-rw-r--r--TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/Test_i.h3
-rw-r--r--TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/client.cpp41
-rwxr-xr-xTAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/run_test.pl20
-rw-r--r--TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/server.cpp13
-rw-r--r--TAO/orbsvcs/tests/ImplRepo/ReconnectServer/README.txt2
-rw-r--r--TAO/orbsvcs/tests/ImplRepo/ReconnectServer/client.cpp4
-rw-r--r--TAO/orbsvcs/tests/Notify/Bug_1884_Regression/supplier.cpp4
-rw-r--r--TAO/orbsvcs/tests/Notify/Bug_3688_Regression/supplier.cpp4
-rw-r--r--TAO/orbsvcs/tests/Notify/MC/.gitignore1
-rw-r--r--TAO/orbsvcs/tests/Security/BiDirectional/README4
-rw-r--r--TAO/orbsvcs/tests/Security/Secure_Invocation/README14
-rw-r--r--TAO/orbsvcs/tests/Security/ssliop_corbaloc/README21
-rw-r--r--TAO/orbsvcs/tests/Security/ssliop_corbaloc/cacert.pem16
-rw-r--r--TAO/orbsvcs/tests/Security/ssliop_corbaloc/client.conf3
-rw-r--r--TAO/orbsvcs/tests/Security/ssliop_corbaloc/client.conf.xml2
-rw-r--r--TAO/orbsvcs/tests/Security/ssliop_corbaloc/client.cpp35
-rw-r--r--TAO/orbsvcs/tests/Security/ssliop_corbaloc/client.h4
-rw-r--r--TAO/orbsvcs/tests/Security/ssliop_corbaloc/client_cert.pem59
-rw-r--r--TAO/orbsvcs/tests/Security/ssliop_corbaloc/client_key.pem15
-rw-r--r--TAO/orbsvcs/tests/Security/ssliop_corbaloc/corbaloc_ssliop.mpc2
-rw-r--r--TAO/orbsvcs/tests/Security/ssliop_corbaloc/pvtkey-client.pem16
-rw-r--r--TAO/orbsvcs/tests/Security/ssliop_corbaloc/pvtkey.pem10
-rwxr-xr-xTAO/orbsvcs/tests/Security/ssliop_corbaloc/run_test.pl6
-rw-r--r--TAO/orbsvcs/tests/Security/ssliop_corbaloc/selfsigncert-client.pem24
-rw-r--r--TAO/orbsvcs/tests/Security/ssliop_corbaloc/selfsigncert.pem16
-rw-r--r--TAO/orbsvcs/tests/Security/ssliop_corbaloc/server.conf2
-rw-r--r--TAO/orbsvcs/tests/Security/ssliop_corbaloc/server.conf.xml2
-rw-r--r--TAO/orbsvcs/tests/Security/ssliop_corbaloc/server_cert.pem59
-rw-r--r--TAO/orbsvcs/tests/Security/ssliop_corbaloc/server_key.pem15
-rw-r--r--TAO/tao/CORBALOC_Parser.cpp11
-rw-r--r--TAO/tao/DynamicInterface/DII_Reply_Dispatcher.cpp12
-rw-r--r--TAO/tao/Fixed_Array_Argument_T.inl14
-rw-r--r--TAO/tao/IIOP_Connection_Handler.cpp2
-rw-r--r--TAO/tao/ImR_Client/ImplRepo.idl1
-rw-r--r--TAO/tao/Messaging/Asynch_Reply_Dispatcher.cpp2
-rw-r--r--TAO/tao/Messaging/Messaging.h11
-rw-r--r--TAO/tao/Strategies/SCIOP_Connection_Handler.cpp2
-rw-r--r--TAO/tao/Strategies/SHMIOP_Profile.cpp2
-rw-r--r--TAO/tao/Strategies/UIOP_Connection_Handler.cpp2
-rw-r--r--TAO/tao/Strategies/UIOP_Connector.cpp2
-rw-r--r--TAO/tao/Transport.cpp6
-rw-r--r--TAO/tao/Valuetype/ValueFactory_Map.h4
-rw-r--r--TAO/tao/Valuetype/Valuetype_Adapter_Factory_Impl.h4
-rw-r--r--TAO/tao/Version.h8
-rw-r--r--TAO/tests/Bug_3940_Regression/Bug_3940_Regression.mpc1
-rw-r--r--TAO/tests/Bug_3940_Regression/test.idl20
-rw-r--r--TAO/tests/Bug_4213_Regression/Bug_4213_Regression.mpc35
-rw-r--r--TAO/tests/Bug_4213_Regression/Hello.cpp18
-rw-r--r--TAO/tests/Bug_4213_Regression/Hello.h28
-rw-r--r--TAO/tests/Bug_4213_Regression/Test.idl17
-rw-r--r--TAO/tests/Bug_4213_Regression/client.cpp71
-rwxr-xr-xTAO/tests/Bug_4213_Regression/run_test.pl83
-rw-r--r--TAO/tests/Bug_4213_Regression/server.cpp113
-rw-r--r--TAO/tests/Connection_Purging/README2
-rw-r--r--TAO/tests/Connection_Purging/test.idl2
-rw-r--r--TAO/tests/Hello/README2
-rw-r--r--TAO/tests/IDL_Test/.gitignore464
-rw-r--r--TAO/tests/IDLv4/README.md3
-rw-r--r--TAO/tests/IDLv4/TestIDLv4.idl111
-rw-r--r--TAO/tests/IDLv4/annotations/.gitignore1
-rw-r--r--TAO/tests/IDLv4/annotations/README.md5
-rw-r--r--TAO/tests/IDLv4/annotations/annotest_idl.cpp1
-rw-r--r--TAO/tests/IDLv4/annotations/annotest_idl.mpc6
-rw-r--r--TAO/tests/IDLv4/annotations/be_extern.h16
-rw-r--r--TAO/tests/IDLv4/annotations/be_global.cpp38
-rw-r--r--TAO/tests/IDLv4/annotations/be_global.h23
-rw-r--r--TAO/tests/IDLv4/annotations/be_init.cpp1265
-rw-r--r--TAO/tests/IDLv4/annotations/be_produce.cpp21
-rw-r--r--TAO/tests/IDLv4/annotations/be_util.cpp29
-rw-r--r--TAO/tests/IDLv4/annotations/be_util.h25
-rw-r--r--TAO/tests/IDLv4/annotations/drv_args.cpp1
-rw-r--r--TAO/tests/IDLv4/annotations/drv_prepoc.cpp1
-rwxr-xr-xTAO/tests/IDLv4/annotations/run_test.pl27
-rw-r--r--TAO/tests/Oneway_Buffering/README10
-rwxr-xr-xTAO/tests/POA/TIE/run_test.pl12
-rw-r--r--azure-pipelines.yml110
304 files changed, 11905 insertions, 7064 deletions
diff --git a/.travis.yml b/.travis.yml
index 5255b611543..e9cc4d13b4a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,4 +1,3 @@
-sudo: false
group: travis_latest
language: cpp
os:
@@ -26,28 +25,6 @@ env:
matrix:
include:
- - compiler: clang
- addons:
- apt:
- sources:
- - ubuntu-toolchain-r-test
- - llvm-toolchain-trusty-6.0
- packages:
- - libxerces-c-dev
- - libssl-dev
- - clang-6.0
- env: COMPILER='clang++-6.0' VERSIONED=1 TAO=1 ACETESTS=1
- - compiler: clang
- addons:
- apt:
- sources:
- - ubuntu-toolchain-r-test
- - llvm-toolchain-trusty-5.0
- packages:
- - libxerces-c-dev
- - libssl-dev
- - clang-5.0
- env: COMPILER='clang++-5.0' VERSIONED=1 TAO=1 ACETESTS=1
- compiler: gcc
addons:
apt:
@@ -57,7 +34,7 @@ matrix:
- libxerces-c-dev
- libssl-dev
- g++-7
- env: COMPILER='g++-7' VERSIONED=1 TAO=1 ACETESTS=1
+ env: COMPILER=g++-7 VERSIONED=1 TAO=1 ACETESTS=1
- compiler: gcc
addons:
apt:
@@ -67,7 +44,7 @@ matrix:
- libxerces-c-dev
- libssl-dev
- g++-6
- env: COMPILER='g++-6' VERSIONED=1 TAO=1 ACETESTS=1
+ env: COMPILER=g++-6 VERSIONED=1 TAO=1 ACETESTS=1
- os: osx
env: COMPILER=clang++ VERSIONED=1 TAO=1 ACETESTS=1
diff --git a/ACE/ACE-INSTALL.html b/ACE/ACE-INSTALL.html
index cb20ea78a7f..844d53d5d38 100644
--- a/ACE/ACE-INSTALL.html
+++ b/ACE/ACE-INSTALL.html
@@ -1796,11 +1796,6 @@ have caveats:
<code>platform_android.GNU</code>. <b>This should be set for NDKs before r15.</b>
</li>
<li>
- There is an unresolved name conflict involving the <code>semun</code> union
- when using NDK's r14 or earlier and Android API Levels 21 or greater. These
- combinations are not supported.
- </li>
- <li>
There are probably unknown conflicts, especially in the minor revisions
before the last minor revision.
</li>
diff --git a/ACE/COPYING b/ACE/COPYING
index 67fc56322e6..fc3685c847a 100644
--- a/ACE/COPYING
+++ b/ACE/COPYING
@@ -8,7 +8,7 @@
(henceforth referred to as "DOC software") are copyrighted by
[5]Douglas C. Schmidt and his [6]research group at [7]Washington
University, [8]University of California, Irvine, and [9]Vanderbilt
- University, Copyright (c) 1993-2018, all rights reserved. Since DOC
+ University, Copyright (c) 1993-2019, all rights reserved. Since DOC
software is open-source, freely available software, you are free to
use, modify, copy, and distribute--perpetually and irrevocably--the
DOC software source code and object code produced from the source, as
diff --git a/ACE/ChangeLogs/ACE-6_5_3 b/ACE/ChangeLogs/ACE-6_5_3
new file mode 100644
index 00000000000..58130d91da7
--- /dev/null
+++ b/ACE/ChangeLogs/ACE-6_5_3
@@ -0,0 +1,367 @@
+commit c7ef18e4589dd6a16a5d35f7eee45f1f761e5a87
+Merge: 01ff2f9dcd8 776b9cc8e60
+Author: Steve Huston <shuston@riverace.com>
+Date: Fri Nov 16 10:22:09 2018 -0500
+
+ Merge pull request #749 from DOCGroup/issue-748
+
+ Add a test case exercising user-allocated ACE_Data_Block-derived object controlled by ACE_Message_Block.
+
+commit 94ce9b72ac6cc07ac73f02368c0bed7a5ea4c80e
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Fri Nov 16 16:00:05 2018 +0100
+
+ List more changes
+
+commit ac1259a122c71dbc1a34fc06bf9289ffe5288d66
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Fri Nov 16 11:28:02 2018 +0100
+
+ Fixed typo in comment
+
+ * ACE/ace/Message_Block.h:
+
+commit b0d2c3ec0e1c844aa6f6a1a13dc8859efcbe3879
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Fri Nov 16 11:27:49 2018 +0100
+
+ List new changes
+
+ * ACE/NEWS:
+ * TAO/NEWS:
+
+commit 776b9cc8e609a4ddfe9e61efacb7bc8135890832
+Author: Steve Huston <shuston@riverace.com>
+Date: Fri Nov 16 00:23:16 2018 +0000
+
+ Remove trailing whitespace per fuzz
+
+commit bd3b3d8cab87cf43a15c9196858291c8a0e5965c
+Author: Steve Huston <shuston@riverace.com>
+Date: Thu Nov 15 21:07:48 2018 +0000
+
+ Use correct ACE_Allocator for user-defined data block per API requirements
+
+commit 5c8a5f3056270427afe82cdc95750b1abd8541ba
+Author: Steve Huston <shuston@riverace.com>
+Date: Thu Nov 15 17:58:07 2018 +0000
+
+ Add user-defined ACE_Data_Block test case
+
+commit 0d16c9482cc00ee70f3c8115ced0154170db748e
+Merge: e222083eee8 2bc4eca4e2b
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Thu Nov 8 09:27:43 2018 +0100
+
+ Merge pull request #746 from mitza-oci/clang-compiler-test
+
+ Update compiler test for clang
+
+commit e222083eee80bec572611f4257315e5ddaefca30
+Merge: f6b983b175a aeb6cb47d17
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Wed Nov 7 18:25:50 2018 +0100
+
+ Merge pull request #747 from jwillemsen/master
+
+ semun is not available on Android with NDK less 12.1b or API level 21…
+
+commit aeb6cb47d17fd0f39ae09c16ef981eec4b5bc5c1
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Wed Nov 7 18:25:08 2018 +0100
+
+ semun is not available on Android with NDK less 12.1b or API level 21. With NDK >= 12.1 or API level >= 21 we include sys/sem.h which defines semun
+
+ * ACE/ace/config-android.h:
+
+commit 2bc4eca4e2bd4ea75433c2d5699781590df996e4
+Author: Adam Mitz <mitza@ociweb.com>
+Date: Wed Nov 7 10:45:32 2018 -0600
+
+ Current versions of clang claim to have this fixed, its bugzilla bug is closed
+
+commit 43a8c6c45a904664d0ca322c24cdba724c59b1af
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Wed Nov 7 15:10:48 2018 +0100
+
+ Removed experiment for using linux/sem.h
+
+ * ACE/ace/os_include/sys/os_sem.h:
+
+commit 677136f06ad184103e5df1270b68cee572e900d4
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Wed Nov 7 15:06:37 2018 +0100
+
+ Android API or NDK>=15 do have a senum so don't let ACE define its version
+
+ * ACE/ace/config-android.h:
+
+commit 857dc18761d04c4fa3e88302f5090b0f0e09b108
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Wed Nov 7 15:03:00 2018 +0100
+
+ Revert "Android NDK13 does ship a senum type, isn't usable, but ACE shouldn't…"
+
+commit 950dd74dd9ac2379c6b4ec1365738d6393313ce1
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Wed Nov 7 14:56:01 2018 +0100
+
+ Removed define of ACE_HAS_SEMUN, when not set ACE will define a senum type, it shouldn't do that on Android
+
+ * ACE/ace/config-android.h:
+
+commit 901f33ca78dc15ff64922e42a401ee18c074a4c3
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Wed Nov 7 14:51:14 2018 +0100
+
+ Android NDK13 does ship a senum type, isn't usable, but ACE shouldn't define its own version
+
+ * ACE/ace/config-android.h:
+ * ACE/ace/os_include/sys/os_sem.h:
+
+commit 1f110c0861392f44ff76335cd3a7ac64d9c4fdb3
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Wed Nov 7 12:47:42 2018 +0100
+
+ Only define ACE_HAS_SEMUN when we have API >= 12 and at least NDK 15, if not, we just not define it
+
+ * ACE/ace/config-android.h:
+
+commit 646f3913692ea052a3f28b5c41637a3705dc0115
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Wed Nov 7 12:46:51 2018 +0100
+
+ Fixed typo
+
+ * ACE/include/makeinclude/platform_android.GNU:
+
+commit 618533091124a97d6dcd4b106e38cb5ca2477b98
+Merge: 764ff58a2e8 40af509ec08
+Author: Adam Mitz <mitza@objectcomputing.com>
+Date: Tue Nov 6 16:50:01 2018 -0600
+
+ Merge pull request #726 from iguessthislldo/igtd/android
+
+ Support for Clang based Android NDKs
+
+commit 097e1e7f880b2e9f55a5cf557f373a44035e0b93
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Fri Nov 2 09:14:22 2018 +0100
+
+ Use SSL_INCDIR and SSL_LIBDIR as they are now generated by MPC
+
+commit ad1c781d9f20082620aaf27f69ccbd829991017e
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Wed Oct 31 12:17:01 2018 +0100
+
+ Only set CXX and CC when they are not set by the user
+
+ * ACE/include/makeinclude/platform_linux_clang.GNU:
+
+commit 40af509ec08305295db1db5e8c4ed6b74eb13ec8
+Author: Fred Hornsey <hornseyf@objectcomputing.com>
+Date: Tue Oct 30 17:19:29 2018 -0500
+
+ platform_android.GNU: Fix android_neon
+
+commit f50935c83e7c627ab0b17c76c825ea081a2487ce
+Author: Fred Hornsey <hornseyf@objectcomputing.com>
+Date: Tue Oct 30 16:47:51 2018 -0500
+
+ ACE-INSTALL.html: Update Android Section
+
+ Also made other small changes throughout the file. The largest of these
+ is changing the style of pre and code tags to stand out more with a grey
+ background, and any changes to fix broken html revealed by that style
+ change.
+
+commit d39c21045d5747b1cfec09653038c9f09fa305b1
+Author: Fred Hornsey <hornseyf@objectcomputing.com>
+Date: Tue Oct 30 15:24:54 2018 -0500
+
+ config-android.h: Adjust a NDK version macro
+
+commit c1f4fbaa1b07651b2e212f1bd568bb6abe6751d9
+Author: Fred Hornsey <hornseyf@objectcomputing.com>
+Date: Tue Oct 30 11:39:23 2018 -0500
+
+ platform_android.GNU: Combine arm7 marcos
+
+commit 02ab4d6ef4606ad7fea5f9c0a87aee3b2e06ee53
+Author: Fred Hornsey <hornseyf@objectcomputing.com>
+Date: Mon Oct 29 17:29:40 2018 -0500
+
+ config-android.h: Fix error message
+
+commit ef125b3b256e85068b74f2e74755139caada6ecb
+Author: Fred Hornsey <hornseyf@objectcomputing.com>
+Date: Mon Oct 29 17:15:48 2018 -0500
+
+ platform_android.GNU: Force clang by default
+
+ This tries to fix a problem with NDKs where the transision between GCC
+ and clang is causing problems using g++. android_force_clang will have
+ to be set to 0 to use g++, which can be GCC or clang.
+
+commit cddb2d2bb178b0d618c3f4ea6be1a1351ad3998e
+Author: Fred Hornsey <hornseyf@objectcomputing.com>
+Date: Mon Oct 29 16:01:49 2018 -0500
+
+ Error if Android NDK < r15 and Android API >= 21
+
+commit baf54e97e1f00d18c90d2241e3d75ec3298c6475
+Author: Fred Hornsey <fred@hornsey.us>
+Date: Wed Oct 24 21:47:18 2018 -0500
+
+ Force Non-Versioned SOs on Android
+
+commit 5f8a64354dc7293591caf4f011f16f4f9e98239f
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Mon Oct 22 10:52:27 2018 +0200
+
+ Layout changes
+
+ * ACE/ace/Reactor.h:
+ * ACE/ace/Select_Reactor_T.h:
+ * ACE/ace/Select_Reactor_T.inl:
+
+commit 6d77d231876be9f18e8e54dc4fd43d5a9c7177e5
+Author: Fred Hornsey <fred@hornsey.us>
+Date: Thu Oct 18 15:22:43 2018 -0500
+
+ Try to fix semaphores in older Android NDKs
+
+commit cc9d5d4d536cc031253b986b5fbd4abd07f3652e
+Author: Fred Hornsey <fred@hornsey.us>
+Date: Wed Oct 17 20:24:30 2018 -0500
+
+ config-android.h: Update for Newer NDK
+
+commit 85291bed9f9e941d64e3e2b91c36e9761908f55c
+Author: Fred Hornsey <fred@hornsey.us>
+Date: Tue Oct 16 18:00:31 2018 -0500
+
+ Update platform make files to support android clang
+
+commit 10983a559cf292c3c3255c869de8d024769cbe57
+Merge: f44396b9b5a 09adcb36020
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Oct 9 17:05:33 2018 +0100
+
+ Merge pull request #722 from jwillemsen/master
+
+ Const enhancements
+
+commit 09adcb360201488de3635baf7d662f4e28ad0927
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Oct 9 11:42:22 2018 +0200
+
+ Const enhancements
+
+ * ACE/ace/Time_Value.cpp:
+
+commit f44396b9b5a3f0f7496e207a554798616fde0c7d
+Merge: 40998af8327 cefeaac755c
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Sun Oct 7 09:14:18 2018 +0100
+
+ Merge pull request #703 from likema/feature/rpath
+
+ Fix AIX and Solaris linking rpath errors.
+
+commit 1b27e1d8bb7c9246b7f7ffd53532fb1d1123e896
+Author: Adam Mitz <mitza@ociweb.com>
+Date: Wed Sep 26 09:05:14 2018 -0500
+
+ clang 7
+
+commit b12d3a7598f4017b864af9ae6b49b2067e262f6e
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Thu Sep 20 14:34:38 2018 +0200
+
+ Fixed typo
+
+commit 8de28a4880d600d2ed08aa414aadf2f2576e3acc
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Thu Sep 20 14:31:54 2018 +0200
+
+ Removed broken links
+
+ * ACE/docs/ACE-subsets.html:
+
+commit bac61a111f3c0e22275a07f7098f1bd9356882c5
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Thu Sep 20 14:21:30 2018 +0200
+
+ Removed broken link
+
+ * ACE/ACE-INSTALL.html:
+
+commit 6881ff62f2d8bc16efb060307bad5deb4fc7a7fd
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Sep 18 14:36:37 2018 +0200
+
+ Upgraded to latest doxygen configuration file version
+
+ * ACE/etc/ace.doxygen:
+ * ACE/etc/ace_inet.doxygen:
+ * ACE/etc/ace_qos.doxygen:
+ * ACE/etc/ace_rmcast.doxygen:
+ * ACE/etc/ace_ssl.doxygen:
+ * ACE/etc/acexml.doxygen:
+ * TAO/etc/tao.doxygen:
+ * TAO/etc/tao_anytypecode.doxygen:
+ * TAO/etc/tao_av.doxygen:
+ * TAO/etc/tao_compression.doxygen:
+ * TAO/etc/tao_cosevent.doxygen:
+ * TAO/etc/tao_cosnaming.doxygen:
+ * TAO/etc/tao_cosnotification.doxygen:
+ * TAO/etc/tao_costime.doxygen:
+ * TAO/etc/tao_costrader.doxygen:
+ * TAO/etc/tao_dynamicany.doxygen:
+ * TAO/etc/tao_dynamicinterface.doxygen:
+ * TAO/etc/tao_esf.doxygen:
+ * TAO/etc/tao_ifr.doxygen:
+ * TAO/etc/tao_implrepo.doxygen:
+ * TAO/etc/tao_iormanip.doxygen:
+ * TAO/etc/tao_iortable.doxygen:
+ * TAO/etc/tao_pi.doxygen:
+ * TAO/etc/tao_pi_server.doxygen:
+ * TAO/etc/tao_portablegroup.doxygen:
+ * TAO/etc/tao_portableserver.doxygen:
+ * TAO/etc/tao_rtcorba.doxygen:
+ * TAO/etc/tao_rtevent.doxygen:
+ * TAO/etc/tao_rtportableserver.doxygen:
+ * TAO/etc/tao_security.doxygen:
+ * TAO/etc/tao_smartproxies.doxygen:
+ * TAO/etc/tao_ssliop.doxygen:
+ * TAO/etc/tao_strategies.doxygen:
+ * TAO/etc/tao_transportcurrent.doxygen:
+ * TAO/etc/tao_ziop.doxygen:
+
+commit d6adab822decfad3e7408d6f4538490f5566c0d8
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Sep 18 11:40:28 2018 +0200
+
+ Use https links to OBS and remove link to Ken Sedgwick's RPMs because these are not updated anymore
+
+ * ACE/docs/Download.html:
+
+commit 01fc7a23cf7e6772d85f9fee367803b3e85a1118
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Sep 18 09:36:39 2018 +0200
+
+ Make x.5.2 public as new release
+
+ * ACE/NEWS:
+ * ACE/bin/diff-builds-and-group-fixed-tests-only.sh:
+ * ACE/docs/Download.html:
+ * ACE/docs/bczar/bczar.html:
+ * ACE/etc/index.html:
+ * TAO/NEWS:
+
+commit cefeaac755c65d4a6969163733e2e92928dff849
+Author: Like Ma <likemartinma@gmail.com>
+Date: Wed Sep 12 19:40:38 2018 +0800
+
+ Fix AIX and Solaris linking rpath errors.
diff --git a/ACE/NEWS b/ACE/NEWS
index cec388f2502..50a9fe7dd3e 100644
--- a/ACE/NEWS
+++ b/ACE/NEWS
@@ -1,6 +1,21 @@
+USER VISIBLE CHANGES BETWEEN ACE-6.5.3 and ACE-6.5.4
+====================================================
+
+. Fix ACE_Vector::end(), which now correctly
+ represents the end of the elements of the vector
+ instead of the end of the base array.
+
USER VISIBLE CHANGES BETWEEN ACE-6.5.2 and ACE-6.5.3
====================================================
+. Enhance Android support
+
+. Fix AIX and Solaris linking rpath errors
+
+. Add support for SSL_INCDIR/SSL_LIBDIR and XERCESC_INCDIR/XERCESC_LIBDIR
+ to specify a custom include/lib dir as required for vcpkg versions of
+ openssl/xercesc
+
USER VISIBLE CHANGES BETWEEN ACE-6.5.1 and ACE-6.5.2
====================================================
diff --git a/ACE/PROBLEM-REPORT-FORM b/ACE/PROBLEM-REPORT-FORM
index 75b1119c9a2..3f83fa6bb73 100644
--- a/ACE/PROBLEM-REPORT-FORM
+++ b/ACE/PROBLEM-REPORT-FORM
@@ -40,7 +40,7 @@
To: ace-bugs@list.isis.vanderbilt.edu
Subject: [area]: [synopsis]
- ACE VERSION: 6.5.2
+ ACE VERSION: 6.5.3
HOST MACHINE and OPERATING SYSTEM:
If on Windows based OS's, which version of WINSOCK do you
diff --git a/ACE/VERSION b/ACE/VERSION
index 9241f2bc305..dd5359ba80b 100644
--- a/ACE/VERSION
+++ b/ACE/VERSION
@@ -1,4 +1,4 @@
-This is ACE version 6.5.2, released Tue Sep 18 09:25:49 CEST 2018
+This is ACE version 6.5.3, released Mon Nov 19 10:44:23 CET 2018
If you have any problems with or questions about ACE, please send
e-mail to the ACE mailing list (ace-bugs@list.isis.vanderbilt.edu),
diff --git a/ACE/ace/Dev_Poll_Reactor.h b/ACE/ace/Dev_Poll_Reactor.h
index 78b4166eef7..37798db97ee 100644
--- a/ACE/ace/Dev_Poll_Reactor.h
+++ b/ACE/ace/Dev_Poll_Reactor.h
@@ -756,7 +756,7 @@ public:
* Set the maximum number of times that ACE_Reactor_Impl will
* iterate and dispatch the ACE_Event_Handlers that are passed in
* via the notify queue before breaking out of its
- * <ACE_Message_Queue::dequeue> loop. By default, this is set to
+ * ACE_Message_Queue::dequeue() loop. By default, this is set to
* -1, which means "iterate until the queue is empty." Setting this
* to a value like "1 or 2" will increase "fairness" (and thus
* prevent starvation) at the expense of slightly higher dispatching
@@ -768,7 +768,7 @@ public:
* Get the maximum number of times that the ACE_Reactor_Impl will
* iterate and dispatch the ACE_Event_Handlers that are passed in
* via the notify queue before breaking out of its
- * <ACE_Message_Queue::dequeue> loop.
+ * ACE_Message_Queue::dequeue() loop.
*/
virtual int max_notify_iterations (void);
diff --git a/ACE/ace/Message_Block.h b/ACE/ace/Message_Block.h
index 1a742d088e6..fc6c0cd42bd 100644
--- a/ACE/ace/Message_Block.h
+++ b/ACE/ace/Message_Block.h
@@ -715,7 +715,7 @@ public:
*/
char *mark (void) const;
- // = Message size is the total amount of space allotred.
+ // = Message size is the total amount of space allocated.
/// Get the total amount of allotted space in the message. The amount of
/// allotted space may be less than allocated space.
diff --git a/ACE/ace/Reactor.h b/ACE/ace/Reactor.h
index b7b8eb005e1..a7cbc6220d0 100644
--- a/ACE/ace/Reactor.h
+++ b/ACE/ace/Reactor.h
@@ -341,7 +341,6 @@ public:
ACE_Reactor_Mask mask);
#if defined (ACE_WIN32)
-
/**
* Register handler for OS events.
*
@@ -360,7 +359,6 @@ public:
*/
int register_handler (ACE_Event_Handler *event_handler,
ACE_HANDLE event_handle = ACE_INVALID_HANDLE);
-
#endif /* ACE_WIN32 */
/**
diff --git a/ACE/ace/Reactor_Impl.h b/ACE/ace/Reactor_Impl.h
index dd02f9857b9..a0ea308a499 100644
--- a/ACE/ace/Reactor_Impl.h
+++ b/ACE/ace/Reactor_Impl.h
@@ -449,7 +449,7 @@ public:
* Set the maximum number of times that ACE_Reactor_Impl will
* iterate and dispatch the ACE_Event_Handlers that are passed in
* via the notify queue before breaking out of its
- * <ACE_Message_Queue::dequeue> loop. By default, this is set to
+ * ACE_Message_Queue::dequeue() loop. By default, this is set to
* -1, which means "iterate until the queue is empty." Setting this
* to a value like "1 or 2" will increase "fairness" (and thus
* prevent starvation) at the expense of slightly higher dispatching
@@ -461,7 +461,7 @@ public:
* Get the maximum number of times that the ACE_Reactor_Impl will
* iterate and dispatch the ACE_Event_Handlers that are passed in
* via the notify queue before breaking out of its
- * <ACE_Message_Queue::dequeue> loop.
+ * ACE_Message_Queue::dequeue() loop.
*/
virtual int max_notify_iterations (void) = 0;
diff --git a/ACE/ace/SString.h b/ACE/ace/SString.h
index 2eb3e8b8b55..a7525d3a1c2 100644
--- a/ACE/ace/SString.h
+++ b/ACE/ace/SString.h
@@ -156,11 +156,11 @@ public:
/// Default destructor.
~ACE_SString (void);
- /// Return the <slot'th> character in the string (doesn't perform
+ /// Return the slot'th character in the string (doesn't perform
/// bounds checking).
char operator [] (size_type slot) const;
- /// Return the <slot'th> character by reference in the string
+ /// Return the slot'th character by reference in the string
/// (doesn't perform bounds checking).
char &operator [] (size_type slot);
@@ -204,7 +204,7 @@ public:
/// location that matches (will be >= pos), else npos.
size_type find (const ACE_SString &str, size_type pos = 0) const;
- /// Find <s> starting at pos. Returns the slot of the first
+ /// Find @a s starting at pos. Returns the slot of the first
/// location that matches (will be >= pos), else npos.
size_type find (const char *s, size_type pos = 0) const;
diff --git a/ACE/ace/Select_Reactor_T.h b/ACE/ace/Select_Reactor_T.h
index c27f62211d8..cff1e9f6a26 100644
--- a/ACE/ace/Select_Reactor_T.h
+++ b/ACE/ace/Select_Reactor_T.h
@@ -220,7 +220,6 @@ public:
ACE_Reactor_Mask mask);
#if defined (ACE_WIN32)
-
// Originally this interface was available for all platforms, but
// because ACE_HANDLE is an int on non-Win32 platforms, compilers
// are not able to tell the difference between
@@ -231,7 +230,6 @@ public:
/// Not implemented.
virtual int register_handler (ACE_Event_Handler *event_handler,
ACE_HANDLE event_handle = ACE_INVALID_HANDLE);
-
#endif /* ACE_WIN32 */
/// Not implemented.
@@ -432,9 +430,9 @@ public:
/**
* Set the maximum number of times that the
- * <ACE_Select_Reactor_Notify::handle_input> method will iterate and
+ * ACE_Select_Reactor_Notify::handle_input() method will iterate and
* dispatch the ACE_Event_Handlers that are passed in via the
- * notify pipe before breaking out of its <recv> loop. By default,
+ * notify pipe before breaking out of its recv loop. By default,
* this is set to -1, which means "iterate until the pipe is empty."
* Setting this to a value like "1 or 2" will increase "fairness"
* (and thus prevent starvation) at the expense of slightly higher
@@ -444,9 +442,9 @@ public:
/**
* Get the maximum number of times that the
- * <ACE_Select_Reactor_Notify::handle_input> method will iterate and
+ * ACE_Select_Reactor_Notify::handle_input() method will iterate and
* dispatch the ACE_Event_Handlers that are passed in via the
- * notify pipe before breaking out of its <recv> loop.
+ * notify pipe before breaking out of its recv loop.
*/
virtual int max_notify_iterations (void);
diff --git a/ACE/ace/Select_Reactor_T.inl b/ACE/ace/Select_Reactor_T.inl
index be6192c55da..7200933a448 100644
--- a/ACE/ace/Select_Reactor_T.inl
+++ b/ACE/ace/Select_Reactor_T.inl
@@ -70,7 +70,6 @@ ACE_Select_Reactor_T<ACE_SELECT_REACTOR_TOKEN>::register_handler (int signum,
}
#if defined (ACE_WIN32)
-
template <class ACE_SELECT_REACTOR_TOKEN>
ACE_INLINE int
ACE_Select_Reactor_T<ACE_SELECT_REACTOR_TOKEN>::register_handler (ACE_Event_Handler *,
@@ -79,7 +78,6 @@ ACE_Select_Reactor_T<ACE_SELECT_REACTOR_TOKEN>::register_handler (ACE_Event_Hand
// Don't have an implementation for this yet...
ACE_NOTSUP_RETURN (-1);
}
-
#endif /* ACE_WIN32 */
template <class ACE_SELECT_REACTOR_TOKEN>
diff --git a/ACE/ace/Sock_Connect.cpp b/ACE/ace/Sock_Connect.cpp
index 1d7cf300b7a..43606fa2f3c 100644
--- a/ACE/ace/Sock_Connect.cpp
+++ b/ACE/ace/Sock_Connect.cpp
@@ -1475,7 +1475,7 @@ ip_check (int &ipvn_enabled, int pf)
#if defined (ACE_WIN32)
// as of the release of Windows 2008, even hosts that have IPv6 interfaces disabled
// will still permit the creation of a PF_INET6 socket, thus rendering the socket
- // creation test inconsistent. The reccommended solution is to get the list of
+ // creation test inconsistent. The recommended solution is to get the list of
// endpoint addresses and see if any match the desired family.
ACE_INET_Addr *if_addrs = 0;
size_t if_cnt = 0;
diff --git a/ACE/ace/Vector_T.h b/ACE/ace/Vector_T.h
index 13c4ba0302d..a5be43470b5 100644
--- a/ACE/ace/Vector_T.h
+++ b/ACE/ace/Vector_T.h
@@ -188,6 +188,16 @@ public:
void swap (ACE_Vector &rhs);
+ /*
+ * Implement our own end functions because Array_Base's end functions use the
+ * current capacity, not the Vector's actual element count!
+ */
+ /// C++ Standard End Iterator
+ ///{
+ typename ACE_Array_Base<T>::iterator end ();
+ typename ACE_Array_Base<T>::const_iterator end () const;
+ ///}
+
protected:
/**
diff --git a/ACE/ace/Vector_T.inl b/ACE/ace/Vector_T.inl
index 81382438534..103bb93beec 100644
--- a/ACE/ace/Vector_T.inl
+++ b/ACE/ace/Vector_T.inl
@@ -45,6 +45,18 @@ void ACE_Vector<T, DEFAULT_SIZE>::pop_back (void)
}
}
+template <class T, size_t DEFAULT_SIZE> ACE_INLINE
+typename ACE_Array_Base<T>::iterator ACE_Vector<T, DEFAULT_SIZE>::end ()
+{
+ return ACE_Array_Base<T>::array_ + length_;
+}
+
+template <class T, size_t DEFAULT_SIZE> ACE_INLINE
+typename ACE_Array_Base<T>::const_iterator ACE_Vector<T, DEFAULT_SIZE>::end () const
+{
+ return ACE_Array_Base<T>::array_ + length_;
+}
+
// Compare this vector with <s> for inequality.
template <class T, size_t DEFAULT_SIZE> ACE_INLINE bool
diff --git a/ACE/ace/Version.h b/ACE/ace/Version.h
index 145af28027e..910d84df986 100644
--- a/ACE/ace/Version.h
+++ b/ACE/ace/Version.h
@@ -4,9 +4,9 @@
#define ACE_MAJOR_VERSION 6
#define ACE_MINOR_VERSION 5
-#define ACE_MICRO_VERSION 2
-#define ACE_BETA_VERSION 2
-#define ACE_VERSION "6.5.2"
-#define ACE_VERSION_CODE 394498
+#define ACE_MICRO_VERSION 3
+#define ACE_BETA_VERSION 3
+#define ACE_VERSION "6.5.3"
+#define ACE_VERSION_CODE 394499
#define ACE_MAKE_VERSION_CODE(a,b,c) (((a) << 16) + ((b) << 8) + (c))
diff --git a/ACE/ace/WFMO_Reactor.h b/ACE/ace/WFMO_Reactor.h
index b85cb152b6d..76bad5e9cd8 100644
--- a/ACE/ace/WFMO_Reactor.h
+++ b/ACE/ace/WFMO_Reactor.h
@@ -545,10 +545,10 @@ public:
/**
* Set the maximum number of times that the
- * <ACE_WFMO_Reactor_Notify::handle_input> method will iterate and
+ * ACE_WFMO_Reactor_Notify::handle_input() method will iterate and
* dispatch the ACE_Event_Handlers that are passed in via the
* notify queue before breaking out of its
- * <ACE_Message_Queue::dequeue> loop. By default, this is set to
+ * ACE_Message_Queue::dequeue() loop. By default, this is set to
* -1, which means "iterate until the queue is empty." Setting this
* to a value like "1 or 2" will increase "fairness" (and thus
* prevent starvation) at the expense of slightly higher dispatching
@@ -561,7 +561,7 @@ public:
* ACE_WFMO_Reactor_Notify::handle_input() method will iterate and
* dispatch the ACE_Event_Handlers that are passed in via the
* notify queue before breaking out of its
- * <ACE_Message_Queue::dequeue> loop.
+ * ACE_Message_Queue::dequeue() loop.
*/
int max_notify_iterations (void);
diff --git a/ACE/ace/config-android.h b/ACE/ace/config-android.h
index a71b2f86d1d..dbe8fc0c95b 100644
--- a/ACE/ace/config-android.h
+++ b/ACE/ace/config-android.h
@@ -80,6 +80,8 @@
# define ACE_LACKS_SYS_MSG_H
# define ACE_LACKS_SYS_SHM_H
# define ACE_LACKS_SYSV_SHMEM
+#else
+# define ACE_HAS_SEMUN
#endif
// NDK has telldir() and seekdir() by 15c
diff --git a/ACE/ace/os_include/sys/os_sem.h b/ACE/ace/os_include/sys/os_sem.h
index 91b9b4f1c70..7efec988f7a 100644
--- a/ACE/ace/os_include/sys/os_sem.h
+++ b/ACE/ace/os_include/sys/os_sem.h
@@ -27,10 +27,6 @@
#if !defined (ACE_LACKS_SYS_SEM_H)
# include /**/ <sys/sem.h>
-#else
-# ifdef ACE_HAS_LINUX_SEM_H
-# include <linux/sem.h>
-# endif
#endif /* !ACE_LACKS_SYS_SEM_H */
// Place all additions (especially function declarations) within extern "C" {}
diff --git a/ACE/bin/MakeProjectCreator/config/ace_openssl.mpb b/ACE/bin/MakeProjectCreator/config/ace_openssl.mpb
index dd31898e0e8..b566b40300e 100644
--- a/ACE/bin/MakeProjectCreator/config/ace_openssl.mpb
+++ b/ACE/bin/MakeProjectCreator/config/ace_openssl.mpb
@@ -4,9 +4,9 @@ project : openssl {
// the values provided by the openssl base project.
specific (gnuace) {
lit_libs -= ssl crypto
- includes -= $(SSL_ROOT)/include
+ includes -= $(SSL_INCDIR)
includes -= /usr/kerberos/include
- libpaths -= $(SSL_ROOT)/lib
+ libpaths -= $(SSL_LIBDIR)
}
// These values get set in platform_macros.GNU or defaulted
diff --git a/ACE/bin/MakeProjectCreator/config/vs2017nmake.mpb b/ACE/bin/MakeProjectCreator/config/vs2017nmake.mpb
index 84ea914a679..a2de3923249 100644
--- a/ACE/bin/MakeProjectCreator/config/vs2017nmake.mpb
+++ b/ACE/bin/MakeProjectCreator/config/vs2017nmake.mpb
@@ -5,6 +5,12 @@ feature (nmake_avoid_Wp64) {
}
}
+feature (nmake_avoid_Gm) {
+ specific(nmake) {
+ compile_flags -= /Gm
+ }
+}
+
feature(vc_avoid_hides_local_declaration) {
specific(nmake) {
DisableSpecificWarnings += 4456
diff --git a/ACE/bin/copy-local-script.sh b/ACE/bin/copy-local-script.sh
new file mode 100755
index 00000000000..af812b9c95b
--- /dev/null
+++ b/ACE/bin/copy-local-script.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+for i in *.gz *.bz2 *.zip *.md5; do
+ d=`echo $i | sed 's/\.[tz][ai][rp]/-6.5.4&/'`
+ echo "Copying $i to $d"
+ cp -ip $i $d
+done
+
diff --git a/ACE/bin/copy-script.sh b/ACE/bin/copy-script.sh
index 2b893b584e9..b559ade8a66 100755
--- a/ACE/bin/copy-script.sh
+++ b/ACE/bin/copy-script.sh
@@ -1,7 +1,7 @@
#!/bin/sh
for i in *.gz *.bz2 *.zip *.md5; do
- d=`echo $i | sed 's/\.[tz][ai][rp]/-$1&/'`
+ d=`echo $i | sed 's/\.[tz][ai][rp]/-6.5.4&/'`
echo "Copying $i to $d"
cp -ip $i /export/www/download.dre/previous_versions/$d
done
diff --git a/ACE/bin/diff-builds-and-group-fixed-tests-only.sh b/ACE/bin/diff-builds-and-group-fixed-tests-only.sh
index 938700d724c..ac7065aac11 100755
--- a/ACE/bin/diff-builds-and-group-fixed-tests-only.sh
+++ b/ACE/bin/diff-builds-and-group-fixed-tests-only.sh
@@ -2,7 +2,7 @@
if test -z $1; then newdate=`date -u +%Y_%m_%d`; else newdate=$1; fi
if test -z $2; then prefix=`date -u +%Y%m%d%a`; else prefix=$2; fi
-if test -z $3; then olddate=2018_09_18; else olddate=$3; fi
+if test -z $3; then olddate=2018_11_19; else olddate=$3; fi
if test -z $ACE_ROOT; then ACE_ROOT=..; fi
if test -z $TAO_ROOT; then TAO_ROOT=${ACE_ROOT}/TAO; fi
if test -z $CIAO_ROOT; then CIAO_ROOT=${TAO_ROOT}/CIAO; fi
diff --git a/ACE/debian/control b/ACE/debian/control
index 25d98b26a84..4b81b6dbdea 100644
--- a/ACE/debian/control
+++ b/ACE/debian/control
@@ -27,7 +27,7 @@ Description: makefile, project, and workspace creator
* mpc-ace: generates project files for a single target
* mwc-ace: generates workspace files for a set of projects
-Package: libace-6.5.2
+Package: libace-6.5.3
Architecture: any
Section: libs
Depends: ${shlibs:Depends}, ${misc:Depends}
@@ -45,7 +45,7 @@ Description: C++ network programming framework
Package: libace-dev
Architecture: any
Section: libdevel
-Depends: libace-6.5.2 (= ${binary:Version}), ${misc:Depends}
+Depends: libace-6.5.3 (= ${binary:Version}), ${misc:Depends}
Suggests: libace-doc, pkg-config
Replaces: mpc-ace (<< 5.6.3-4)
Description: C++ network programming framework - development files
@@ -62,7 +62,7 @@ Description: C++ network programming framework - documentation
This package contains the ACE overview documentation, tutorials,
examples, and information regarding upstream development.
-Package: libace-ssl-6.5.2
+Package: libace-ssl-6.5.3
Architecture: any
Section: libs
Depends: ${shlibs:Depends}, ${misc:Depends}
@@ -73,12 +73,12 @@ Description: ACE secure socket layer library
Package: libace-ssl-dev
Architecture: any
Section: libdevel
-Depends: libace-ssl-6.5.2 (= ${binary:Version}), libace-dev (= ${binary:Version}), libssl-dev, ${misc:Depends}
+Depends: libace-ssl-6.5.3 (= ${binary:Version}), libace-dev (= ${binary:Version}), libssl-dev, ${misc:Depends}
Description: ACE secure socket layer library - development files
This package contains the header files and static library for the ACE
SSL library.
-Package: libace-rmcast-6.5.2
+Package: libace-rmcast-6.5.3
Architecture: any
Section: libs
Depends: ${shlibs:Depends}, ${misc:Depends}
@@ -92,12 +92,12 @@ Description: ACE reliable multicast library
Package: libace-rmcast-dev
Architecture: any
Section: libdevel
-Depends: libace-rmcast-6.5.2 (= ${binary:Version}), libace-dev (= ${binary:Version}), ${misc:Depends}
+Depends: libace-rmcast-6.5.3 (= ${binary:Version}), libace-dev (= ${binary:Version}), ${misc:Depends}
Description: ACE reliable multicast library - development files
This package contains the header files and static library for the ACE
reliable multicast library.
-Package: libace-tmcast-6.5.2
+Package: libace-tmcast-6.5.3
Architecture: any
Section: libs
Depends: ${shlibs:Depends}, ${misc:Depends}
@@ -111,12 +111,12 @@ Description: ACE transactional multicast library
Package: libace-tmcast-dev
Architecture: any
Section: libdevel
-Depends: libace-tmcast-6.5.2 (= ${binary:Version}), libace-dev (= ${binary:Version}), ${misc:Depends}
+Depends: libace-tmcast-6.5.3 (= ${binary:Version}), libace-dev (= ${binary:Version}), ${misc:Depends}
Description: ACE transactional multicast library - development files
This package contains the header files and static library for the ACE
transactional multicast library.
-Package: libace-htbp-6.5.2
+Package: libace-htbp-6.5.3
Architecture: any
Section: libs
Depends: ${shlibs:Depends}, ${misc:Depends}
@@ -130,12 +130,12 @@ Description: ACE protocol over HTTP tunneling library
Package: libace-htbp-dev
Architecture: any
Section: libdevel
-Depends: libace-htbp-6.5.2 (= ${binary:Version}), libace-dev (= ${binary:Version}), ${misc:Depends}
+Depends: libace-htbp-6.5.3 (= ${binary:Version}), libace-dev (= ${binary:Version}), ${misc:Depends}
Description: ACE protocol over HTTP tunneling library - development files
This package contains the header files and static library for the ACE
HTBP library.
-Package: libace-inet-6.5.2
+Package: libace-inet-6.5.3
Architecture: any
Section: libs
Depends: ${shlibs:Depends}, ${misc:Depends}
@@ -146,15 +146,15 @@ Description: ACE Inet protocol library
Package: libace-inet-dev
Architecture: any
Section: libdevel
-Depends: libace-inet-6.5.2 (= ${binary:Version}), libace-dev (= ${binary:Version}), ${misc:Depends}
+Depends: libace-inet-6.5.3 (= ${binary:Version}), libace-dev (= ${binary:Version}), ${misc:Depends}
Description: ACE Inet protocol library - development files
This package contains the header files and static library for the ACE
Inet protocol library.
-Package: libace-inet-ssl-6.5.2
+Package: libace-inet-ssl-6.5.3
Architecture: any
Section: libs
-Depends: libace-inet-6.5.2, libace-ssl-6.5.2, ${shlibs:Depends}, ${misc:Depends}
+Depends: libace-inet-6.5.3, libace-ssl-6.5.3, ${shlibs:Depends}, ${misc:Depends}
Description: ACE SSL-enabled Inet protocol library
This package provides an ACE addon library for clients (and possibly
servers at some point) using Inet protocols which support SSL, such as
@@ -163,7 +163,7 @@ Description: ACE SSL-enabled Inet protocol library
Package: libace-inet-ssl-dev
Architecture: any
Section: libdevel
-Depends: libace-inet-ssl-6.5.2 (= ${binary:Version}), libace-inet-dev (= ${binary:Version}), libace-ssl-dev (= ${binary:Version}), ${misc:Depends}
+Depends: libace-inet-ssl-6.5.3 (= ${binary:Version}), libace-inet-dev (= ${binary:Version}), libace-ssl-dev (= ${binary:Version}), ${misc:Depends}
Description: ACE SSL-enabled Inet protocol library - development files
This package contains the header files and static library for the ACE
SSL-enabled Inet protocol library.
@@ -180,7 +180,7 @@ Description: ACE perfect hash function generator
basically the same options and functionality. ace_gperf simply takes
advantage of some of the features provided by the ACE library.
-Package: libacexml-6.5.2
+Package: libacexml-6.5.3
Architecture: any
Section: libs
Depends: ${shlibs:Depends}, ${misc:Depends}
@@ -196,12 +196,12 @@ Package: libacexml-dev
Architecture: any
Section: libdevel
Replaces: libace-dev (<< 5.7.7-4)
-Depends: libacexml-6.5.2 (= ${binary:Version}), libace-dev (= ${binary:Version}), ${misc:Depends}
+Depends: libacexml-6.5.3 (= ${binary:Version}), libace-dev (= ${binary:Version}), ${misc:Depends}
Description: ACE SAX based XML parsing library - development files
This package contains the header files and static library for the ACE
XML parsing library.
-Package: libace-xml-utils-6.5.2
+Package: libace-xml-utils-6.5.3
Architecture: any
Section: libs
Depends: ${shlibs:Depends}, ${misc:Depends}
@@ -215,12 +215,12 @@ Package: libace-xml-utils-dev
Architecture: any
Section: libdevel
Replaces: libace-dev (<< 5.7.7-4)
-Depends: libace-xml-utils-6.5.2 (= ${binary:Version}), libace-dev (= ${binary:Version}), ${misc:Depends}, libxerces-c-dev
+Depends: libace-xml-utils-6.5.3 (= ${binary:Version}), libace-dev (= ${binary:Version}), ${misc:Depends}, libxerces-c-dev
Description: ACE XML utility classes and methods - development files
This package contains the header files and static library for the ACE XML
Utils library
-Package: libkokyu-6.5.2
+Package: libkokyu-6.5.3
Architecture: any
Section: libs
Depends: ${shlibs:Depends}, ${misc:Depends}
@@ -234,12 +234,12 @@ Description: ACE scheduling and dispatching library
Package: libkokyu-dev
Architecture: any
Section: libdevel
-Depends: libkokyu-6.5.2 (= ${binary:Version}), libace-dev (= ${binary:Version}), ${misc:Depends}
+Depends: libkokyu-6.5.3 (= ${binary:Version}), libace-dev (= ${binary:Version}), ${misc:Depends}
Description: ACE scheduling and dispatching library - development files
This package contains the header files and static library for the ACE
scheduling and dispatching library.
-Package: libace-xtreactor-6.5.2
+Package: libace-xtreactor-6.5.3
Architecture: any
Section: libs
Depends: ${shlibs:Depends}, ${misc:Depends}
@@ -257,12 +257,12 @@ Description: ACE-GUI reactor integration for Xt
Package: libace-xtreactor-dev
Architecture: any
Section: libdevel
-Depends: libace-xtreactor-6.5.2 (= ${binary:Version}), libace-dev (= ${binary:Version}), libxt-dev (>= 4.3.0), ${misc:Depends}
+Depends: libace-xtreactor-6.5.3 (= ${binary:Version}), libace-dev (= ${binary:Version}), libxt-dev (>= 4.3.0), ${misc:Depends}
Description: ACE-GUI reactor integration for Xt - development files
This package contains header files and static library for the ACE-Xt
reactor integration.
-Package: libace-tkreactor-6.5.2
+Package: libace-tkreactor-6.5.3
Architecture: any
Section: libs
Depends: ${shlibs:Depends}, ${misc:Depends}
@@ -281,12 +281,12 @@ Description: ACE-GUI reactor integration for Tk
Package: libace-tkreactor-dev
Architecture: any
Section: libdevel
-Depends: libace-tkreactor-6.5.2 (= ${binary:Version}), libace-dev (= ${binary:Version}), tk-dev (>= 8.5), ${misc:Depends}
+Depends: libace-tkreactor-6.5.3 (= ${binary:Version}), libace-dev (= ${binary:Version}), tk-dev (>= 8.5), ${misc:Depends}
Description: ACE-GUI reactor integration for Tk - development files
This package contains header files and static library for the ACE-Tk
reactor integration.
-Package: libace-flreactor-6.5.2
+Package: libace-flreactor-6.5.3
Architecture: any
Section: libs
Depends: ${shlibs:Depends}, ${misc:Depends}
@@ -304,12 +304,12 @@ Description: ACE-GUI reactor integration for FLTK
Package: libace-flreactor-dev
Architecture: any
Section: libdevel
-Depends: libace-flreactor-6.5.2 (= ${binary:Version}), libace-dev (= ${binary:Version}), libfltk1.1-dev (>= 1.1.4), ${misc:Depends}
+Depends: libace-flreactor-6.5.3 (= ${binary:Version}), libace-dev (= ${binary:Version}), libfltk1.1-dev (>= 1.1.4), ${misc:Depends}
Description: ACE-GUI reactor integration for FLTK - development files
This package contains header files and static library for the ACE-FLTK
reactor integration.
-Package: libace-foxreactor-6.5.2
+Package: libace-foxreactor-6.5.3
Architecture: any
Section: libs
Depends: ${shlibs:Depends}, ${misc:Depends}
@@ -326,7 +326,7 @@ Description: ACE-GUI reactor integration for FOX
Package: libace-foxreactor-dev
Architecture: any
Section: libdevel
-Depends: libace-foxreactor-6.5.2 (= ${binary:Version}), libace-dev (= ${binary:Version}), libfox-1.6-dev, ${misc:Depends}
+Depends: libace-foxreactor-6.5.3 (= ${binary:Version}), libace-dev (= ${binary:Version}), libfox-1.6-dev, ${misc:Depends}
Description: ACE-GUI reactor integration for FOX - development files
This package contains header files and static library for the ACE-FOX
reactor integration.
@@ -343,7 +343,7 @@ Description: ACE network service implementations
files to link the various ACE network services together, either
statically or dynamically, and form complete server programs.
-Package: libnetsvcs-6.5.2
+Package: libnetsvcs-6.5.3
Architecture: any
Section: libs
Depends: ${shlibs:Depends}, ${misc:Depends}
@@ -357,7 +357,7 @@ Description: ACE network service implementations - libraries
Package: libnetsvcs-dev
Architecture: any
Section: libdevel
-Depends: libnetsvcs-6.5.2 (= ${binary:Version}), libace-dev (= ${binary:Version}), ${misc:Depends}
+Depends: libnetsvcs-6.5.3 (= ${binary:Version}), libace-dev (= ${binary:Version}), ${misc:Depends}
Description: ACE network service implementations - development files
ACE network services provide reusable components for common
distributed system tasks such as logging, naming, locking, and time
diff --git a/ACE/debian/libace-6.5.2.lintian-overrides b/ACE/debian/libace-6.5.2.lintian-overrides
deleted file mode 100644
index 2c6a8f23a26..00000000000
--- a/ACE/debian/libace-6.5.2.lintian-overrides
+++ /dev/null
@@ -1,6 +0,0 @@
-libace-6.5.2: no-symbols-control-file usr/lib/libACE-6.5.2.so
-libace-6.5.2: no-symbols-control-file usr/lib/libACE_ETCL_Parser-6.5.2.so
-libace-6.5.2: no-symbols-control-file usr/lib/libACE_Monitor_Control-6.5.2.so
-libace-6.5.2: no-symbols-control-file usr/lib/libACE_ETCL-6.5.2.so
-libace-6.5.2: no-symbols-control-file usr/lib/libACE_RLECompression-6.5.2.so
-libace-6.5.2: no-symbols-control-file usr/lib/libACE_Compression-6.5.2.so
diff --git a/ACE/debian/libace-6.5.2.docs b/ACE/debian/libace-6.5.3.docs
index 3bdab5b0089..3bdab5b0089 100644
--- a/ACE/debian/libace-6.5.2.docs
+++ b/ACE/debian/libace-6.5.3.docs
diff --git a/ACE/debian/libace-6.5.2.install b/ACE/debian/libace-6.5.3.install
index 182a5eda411..182a5eda411 100644
--- a/ACE/debian/libace-6.5.2.install
+++ b/ACE/debian/libace-6.5.3.install
diff --git a/ACE/debian/libace-6.5.3.lintian-overrides b/ACE/debian/libace-6.5.3.lintian-overrides
new file mode 100644
index 00000000000..f6271121c15
--- /dev/null
+++ b/ACE/debian/libace-6.5.3.lintian-overrides
@@ -0,0 +1,6 @@
+libace-6.5.3: no-symbols-control-file usr/lib/libACE-6.5.3.so
+libace-6.5.3: no-symbols-control-file usr/lib/libACE_ETCL_Parser-6.5.3.so
+libace-6.5.3: no-symbols-control-file usr/lib/libACE_Monitor_Control-6.5.3.so
+libace-6.5.3: no-symbols-control-file usr/lib/libACE_ETCL-6.5.3.so
+libace-6.5.3: no-symbols-control-file usr/lib/libACE_RLECompression-6.5.3.so
+libace-6.5.3: no-symbols-control-file usr/lib/libACE_Compression-6.5.3.so
diff --git a/ACE/debian/libace-flreactor-6.5.2.lintian-overrides b/ACE/debian/libace-flreactor-6.5.2.lintian-overrides
deleted file mode 100644
index d2c0a3aa593..00000000000
--- a/ACE/debian/libace-flreactor-6.5.2.lintian-overrides
+++ /dev/null
@@ -1 +0,0 @@
-libace-flreactor-6.5.2: no-symbols-control-file usr/lib/libACE_FlReactor-6.5.2.so
diff --git a/ACE/debian/libace-flreactor-6.5.2.install b/ACE/debian/libace-flreactor-6.5.3.install
index 528836aacee..528836aacee 100644
--- a/ACE/debian/libace-flreactor-6.5.2.install
+++ b/ACE/debian/libace-flreactor-6.5.3.install
diff --git a/ACE/debian/libace-flreactor-6.5.3.lintian-overrides b/ACE/debian/libace-flreactor-6.5.3.lintian-overrides
new file mode 100644
index 00000000000..cef17d2cbdb
--- /dev/null
+++ b/ACE/debian/libace-flreactor-6.5.3.lintian-overrides
@@ -0,0 +1 @@
+libace-flreactor-6.5.3: no-symbols-control-file usr/lib/libACE_FlReactor-6.5.3.so
diff --git a/ACE/debian/libace-foxreactor-6.5.2.lintian-overrides b/ACE/debian/libace-foxreactor-6.5.2.lintian-overrides
deleted file mode 100644
index 552b11a964b..00000000000
--- a/ACE/debian/libace-foxreactor-6.5.2.lintian-overrides
+++ /dev/null
@@ -1 +0,0 @@
-libace-foxreactor-6.5.2: no-symbols-control-file usr/lib/libACE_FoxReactor-6.5.2.so
diff --git a/ACE/debian/libace-foxreactor-6.5.2.install b/ACE/debian/libace-foxreactor-6.5.3.install
index e360f29f5af..e360f29f5af 100644
--- a/ACE/debian/libace-foxreactor-6.5.2.install
+++ b/ACE/debian/libace-foxreactor-6.5.3.install
diff --git a/ACE/debian/libace-foxreactor-6.5.3.lintian-overrides b/ACE/debian/libace-foxreactor-6.5.3.lintian-overrides
new file mode 100644
index 00000000000..863f086953e
--- /dev/null
+++ b/ACE/debian/libace-foxreactor-6.5.3.lintian-overrides
@@ -0,0 +1 @@
+libace-foxreactor-6.5.3: no-symbols-control-file usr/lib/libACE_FoxReactor-6.5.3.so
diff --git a/ACE/debian/libace-htbp-6.5.2.lintian-overrides b/ACE/debian/libace-htbp-6.5.2.lintian-overrides
deleted file mode 100644
index 386b435edb5..00000000000
--- a/ACE/debian/libace-htbp-6.5.2.lintian-overrides
+++ /dev/null
@@ -1 +0,0 @@
-libace-htbp-6.5.2: no-symbols-control-file usr/lib/libACE_HTBP-6.5.2.so
diff --git a/ACE/debian/libace-htbp-6.5.2.install b/ACE/debian/libace-htbp-6.5.3.install
index 08103fd5cad..08103fd5cad 100644
--- a/ACE/debian/libace-htbp-6.5.2.install
+++ b/ACE/debian/libace-htbp-6.5.3.install
diff --git a/ACE/debian/libace-htbp-6.5.3.lintian-overrides b/ACE/debian/libace-htbp-6.5.3.lintian-overrides
new file mode 100644
index 00000000000..b6715089b19
--- /dev/null
+++ b/ACE/debian/libace-htbp-6.5.3.lintian-overrides
@@ -0,0 +1 @@
+libace-htbp-6.5.3: no-symbols-control-file usr/lib/libACE_HTBP-6.5.3.so
diff --git a/ACE/debian/libace-inet-6.5.2.lintian-overrides b/ACE/debian/libace-inet-6.5.2.lintian-overrides
deleted file mode 100644
index 8f451dc7ad4..00000000000
--- a/ACE/debian/libace-inet-6.5.2.lintian-overrides
+++ /dev/null
@@ -1,2 +0,0 @@
-libace-inet-6.5.2: extended-description-is-probably-too-short
-libace-inet-6.5.2: no-symbols-control-file usr/lib/libACE_INet-6.5.2.so
diff --git a/ACE/debian/libace-inet-6.5.2.install b/ACE/debian/libace-inet-6.5.3.install
index 59a73a509d0..59a73a509d0 100644
--- a/ACE/debian/libace-inet-6.5.2.install
+++ b/ACE/debian/libace-inet-6.5.3.install
diff --git a/ACE/debian/libace-inet-6.5.3.lintian-overrides b/ACE/debian/libace-inet-6.5.3.lintian-overrides
new file mode 100644
index 00000000000..fc60f5c3130
--- /dev/null
+++ b/ACE/debian/libace-inet-6.5.3.lintian-overrides
@@ -0,0 +1,2 @@
+libace-inet-6.5.3: extended-description-is-probably-too-short
+libace-inet-6.5.3: no-symbols-control-file usr/lib/libACE_INet-6.5.3.so
diff --git a/ACE/debian/libace-inet-ssl-6.5.2.lintian-overrides b/ACE/debian/libace-inet-ssl-6.5.2.lintian-overrides
deleted file mode 100644
index bcb3079d1db..00000000000
--- a/ACE/debian/libace-inet-ssl-6.5.2.lintian-overrides
+++ /dev/null
@@ -1,4 +0,0 @@
-libace-inet-ssl-6.5.2: no-symbols-control-file usr/lib/libACE_INet_SSL-6.5.2.so
-
-# It's Bison-generate code covered by the GNU Bison GPL-exception
-libace-inet-ssl-6.5.2: possible-gpl-code-linked-with-openssl
diff --git a/ACE/debian/libace-inet-ssl-6.5.2.install b/ACE/debian/libace-inet-ssl-6.5.3.install
index b9b8b9045f7..b9b8b9045f7 100644
--- a/ACE/debian/libace-inet-ssl-6.5.2.install
+++ b/ACE/debian/libace-inet-ssl-6.5.3.install
diff --git a/ACE/debian/libace-inet-ssl-6.5.3.lintian-overrides b/ACE/debian/libace-inet-ssl-6.5.3.lintian-overrides
new file mode 100644
index 00000000000..81624536bcf
--- /dev/null
+++ b/ACE/debian/libace-inet-ssl-6.5.3.lintian-overrides
@@ -0,0 +1,4 @@
+libace-inet-ssl-6.5.3: no-symbols-control-file usr/lib/libACE_INet_SSL-6.5.3.so
+
+# It's Bison-generate code covered by the GNU Bison GPL-exception
+libace-inet-ssl-6.5.3: possible-gpl-code-linked-with-openssl
diff --git a/ACE/debian/libace-rmcast-6.5.2.lintian-overrides b/ACE/debian/libace-rmcast-6.5.2.lintian-overrides
deleted file mode 100644
index cf94e80df3d..00000000000
--- a/ACE/debian/libace-rmcast-6.5.2.lintian-overrides
+++ /dev/null
@@ -1 +0,0 @@
-libace-rmcast-6.5.2: no-symbols-control-file usr/lib/libACE_RMCast-6.5.2.so
diff --git a/ACE/debian/libace-rmcast-6.5.2.install b/ACE/debian/libace-rmcast-6.5.3.install
index 86e78259853..86e78259853 100644
--- a/ACE/debian/libace-rmcast-6.5.2.install
+++ b/ACE/debian/libace-rmcast-6.5.3.install
diff --git a/ACE/debian/libace-rmcast-6.5.3.lintian-overrides b/ACE/debian/libace-rmcast-6.5.3.lintian-overrides
new file mode 100644
index 00000000000..88acc1b27ed
--- /dev/null
+++ b/ACE/debian/libace-rmcast-6.5.3.lintian-overrides
@@ -0,0 +1 @@
+libace-rmcast-6.5.3: no-symbols-control-file usr/lib/libACE_RMCast-6.5.3.so
diff --git a/ACE/debian/libace-ssl-6.5.2.lintian-overrides b/ACE/debian/libace-ssl-6.5.2.lintian-overrides
deleted file mode 100644
index 9b9d32fdba8..00000000000
--- a/ACE/debian/libace-ssl-6.5.2.lintian-overrides
+++ /dev/null
@@ -1,5 +0,0 @@
-libace-ssl-6.5.2: extended-description-is-probably-too-short
-libace-ssl-6.5.2: no-symbols-control-file usr/lib/libACE_SSL-6.5.2.so
-
-# It's Bison-generate code covered by the GNU Bison GPL-exception
-libace-ssl-6.5.2: possible-gpl-code-linked-with-openssl
diff --git a/ACE/debian/libace-ssl-6.5.2.NEWS b/ACE/debian/libace-ssl-6.5.3.NEWS
index e5bd0e4aa10..e5bd0e4aa10 100644
--- a/ACE/debian/libace-ssl-6.5.2.NEWS
+++ b/ACE/debian/libace-ssl-6.5.3.NEWS
diff --git a/ACE/debian/libace-ssl-6.5.2.install b/ACE/debian/libace-ssl-6.5.3.install
index 8df45a6d55f..8df45a6d55f 100644
--- a/ACE/debian/libace-ssl-6.5.2.install
+++ b/ACE/debian/libace-ssl-6.5.3.install
diff --git a/ACE/debian/libace-ssl-6.5.3.lintian-overrides b/ACE/debian/libace-ssl-6.5.3.lintian-overrides
new file mode 100644
index 00000000000..d57e65e1158
--- /dev/null
+++ b/ACE/debian/libace-ssl-6.5.3.lintian-overrides
@@ -0,0 +1,5 @@
+libace-ssl-6.5.3: extended-description-is-probably-too-short
+libace-ssl-6.5.3: no-symbols-control-file usr/lib/libACE_SSL-6.5.3.so
+
+# It's Bison-generate code covered by the GNU Bison GPL-exception
+libace-ssl-6.5.3: possible-gpl-code-linked-with-openssl
diff --git a/ACE/debian/libace-tkreactor-6.5.2.lintian-overrides b/ACE/debian/libace-tkreactor-6.5.2.lintian-overrides
deleted file mode 100644
index 57332e40e76..00000000000
--- a/ACE/debian/libace-tkreactor-6.5.2.lintian-overrides
+++ /dev/null
@@ -1 +0,0 @@
-libace-tkreactor-6.5.2: no-symbols-control-file usr/lib/libACE_TkReactor-6.5.2.so
diff --git a/ACE/debian/libace-tkreactor-6.5.2.install b/ACE/debian/libace-tkreactor-6.5.3.install
index 12ab35062d2..12ab35062d2 100644
--- a/ACE/debian/libace-tkreactor-6.5.2.install
+++ b/ACE/debian/libace-tkreactor-6.5.3.install
diff --git a/ACE/debian/libace-tkreactor-6.5.3.lintian-overrides b/ACE/debian/libace-tkreactor-6.5.3.lintian-overrides
new file mode 100644
index 00000000000..97a42b1b136
--- /dev/null
+++ b/ACE/debian/libace-tkreactor-6.5.3.lintian-overrides
@@ -0,0 +1 @@
+libace-tkreactor-6.5.3: no-symbols-control-file usr/lib/libACE_TkReactor-6.5.3.so
diff --git a/ACE/debian/libace-tmcast-6.5.2.lintian-overrides b/ACE/debian/libace-tmcast-6.5.2.lintian-overrides
deleted file mode 100644
index 9ee76d5186e..00000000000
--- a/ACE/debian/libace-tmcast-6.5.2.lintian-overrides
+++ /dev/null
@@ -1 +0,0 @@
-libace-tmcast-6.5.2: no-symbols-control-file usr/lib/libACE_TMCast-6.5.2.so
diff --git a/ACE/debian/libace-tmcast-6.5.2.install b/ACE/debian/libace-tmcast-6.5.3.install
index e066131dea0..e066131dea0 100644
--- a/ACE/debian/libace-tmcast-6.5.2.install
+++ b/ACE/debian/libace-tmcast-6.5.3.install
diff --git a/ACE/debian/libace-tmcast-6.5.3.lintian-overrides b/ACE/debian/libace-tmcast-6.5.3.lintian-overrides
new file mode 100644
index 00000000000..d830c04851a
--- /dev/null
+++ b/ACE/debian/libace-tmcast-6.5.3.lintian-overrides
@@ -0,0 +1 @@
+libace-tmcast-6.5.3: no-symbols-control-file usr/lib/libACE_TMCast-6.5.3.so
diff --git a/ACE/debian/libace-xml-utils-6.5.2.lintian-overrides b/ACE/debian/libace-xml-utils-6.5.2.lintian-overrides
deleted file mode 100644
index 42c31526464..00000000000
--- a/ACE/debian/libace-xml-utils-6.5.2.lintian-overrides
+++ /dev/null
@@ -1 +0,0 @@
-libace-xml-utils-6.5.2: no-symbols-control-file usr/lib/libACE_XML_Utils-6.5.2.so
diff --git a/ACE/debian/libace-xml-utils-6.5.2.install b/ACE/debian/libace-xml-utils-6.5.3.install
index 2428ec9f109..2428ec9f109 100644
--- a/ACE/debian/libace-xml-utils-6.5.2.install
+++ b/ACE/debian/libace-xml-utils-6.5.3.install
diff --git a/ACE/debian/libace-xml-utils-6.5.3.lintian-overrides b/ACE/debian/libace-xml-utils-6.5.3.lintian-overrides
new file mode 100644
index 00000000000..41a55a73dce
--- /dev/null
+++ b/ACE/debian/libace-xml-utils-6.5.3.lintian-overrides
@@ -0,0 +1 @@
+libace-xml-utils-6.5.3: no-symbols-control-file usr/lib/libACE_XML_Utils-6.5.3.so
diff --git a/ACE/debian/libace-xtreactor-6.5.2.lintian-overrides b/ACE/debian/libace-xtreactor-6.5.2.lintian-overrides
deleted file mode 100644
index ee0bc214bdd..00000000000
--- a/ACE/debian/libace-xtreactor-6.5.2.lintian-overrides
+++ /dev/null
@@ -1 +0,0 @@
-libace-xtreactor-6.5.2: no-symbols-control-file usr/lib/libACE_XtReactor-6.5.2.so
diff --git a/ACE/debian/libace-xtreactor-6.5.2.install b/ACE/debian/libace-xtreactor-6.5.3.install
index c53614c7208..c53614c7208 100644
--- a/ACE/debian/libace-xtreactor-6.5.2.install
+++ b/ACE/debian/libace-xtreactor-6.5.3.install
diff --git a/ACE/debian/libace-xtreactor-6.5.3.lintian-overrides b/ACE/debian/libace-xtreactor-6.5.3.lintian-overrides
new file mode 100644
index 00000000000..327db86d2a5
--- /dev/null
+++ b/ACE/debian/libace-xtreactor-6.5.3.lintian-overrides
@@ -0,0 +1 @@
+libace-xtreactor-6.5.3: no-symbols-control-file usr/lib/libACE_XtReactor-6.5.3.so
diff --git a/ACE/debian/libacexml-6.5.2.lintian-overrides b/ACE/debian/libacexml-6.5.2.lintian-overrides
deleted file mode 100644
index b4d34a87a85..00000000000
--- a/ACE/debian/libacexml-6.5.2.lintian-overrides
+++ /dev/null
@@ -1,3 +0,0 @@
-libacexml-6.5.2: no-symbols-control-file usr/lib/libACEXML_Parser-6.5.2.so
-libacexml-6.5.2: no-symbols-control-file usr/lib/libACEXML_XML_Svc_Conf_Parser-6.5.2.so
-libacexml-6.5.2: no-symbols-control-file usr/lib/libACEXML-6.5.2.so
diff --git a/ACE/debian/libacexml-6.5.2.docs b/ACE/debian/libacexml-6.5.3.docs
index 002855d7915..002855d7915 100644
--- a/ACE/debian/libacexml-6.5.2.docs
+++ b/ACE/debian/libacexml-6.5.3.docs
diff --git a/ACE/debian/libacexml-6.5.2.install b/ACE/debian/libacexml-6.5.3.install
index d3e912ffa51..d3e912ffa51 100644
--- a/ACE/debian/libacexml-6.5.2.install
+++ b/ACE/debian/libacexml-6.5.3.install
diff --git a/ACE/debian/libacexml-6.5.3.lintian-overrides b/ACE/debian/libacexml-6.5.3.lintian-overrides
new file mode 100644
index 00000000000..f2083dbd3f3
--- /dev/null
+++ b/ACE/debian/libacexml-6.5.3.lintian-overrides
@@ -0,0 +1,3 @@
+libacexml-6.5.3: no-symbols-control-file usr/lib/libACEXML_Parser-6.5.3.so
+libacexml-6.5.3: no-symbols-control-file usr/lib/libACEXML_XML_Svc_Conf_Parser-6.5.3.so
+libacexml-6.5.3: no-symbols-control-file usr/lib/libACEXML-6.5.3.so
diff --git a/ACE/debian/libkokyu-6.5.2.lintian-overrides b/ACE/debian/libkokyu-6.5.2.lintian-overrides
deleted file mode 100644
index e759bbcfd7e..00000000000
--- a/ACE/debian/libkokyu-6.5.2.lintian-overrides
+++ /dev/null
@@ -1 +0,0 @@
-libkokyu-6.5.2: no-symbols-control-file usr/lib/libKokyu-6.5.2.so
diff --git a/ACE/debian/libkokyu-6.5.2.docs b/ACE/debian/libkokyu-6.5.3.docs
index e8869c513b2..e8869c513b2 100644
--- a/ACE/debian/libkokyu-6.5.2.docs
+++ b/ACE/debian/libkokyu-6.5.3.docs
diff --git a/ACE/debian/libkokyu-6.5.2.install b/ACE/debian/libkokyu-6.5.3.install
index 62854308f96..62854308f96 100644
--- a/ACE/debian/libkokyu-6.5.2.install
+++ b/ACE/debian/libkokyu-6.5.3.install
diff --git a/ACE/debian/libkokyu-6.5.3.lintian-overrides b/ACE/debian/libkokyu-6.5.3.lintian-overrides
new file mode 100644
index 00000000000..562551daf17
--- /dev/null
+++ b/ACE/debian/libkokyu-6.5.3.lintian-overrides
@@ -0,0 +1 @@
+libkokyu-6.5.3: no-symbols-control-file usr/lib/libKokyu-6.5.3.so
diff --git a/ACE/debian/libnetsvcs-6.5.2.lintian-overrides b/ACE/debian/libnetsvcs-6.5.2.lintian-overrides
deleted file mode 100644
index aa26fd7ba22..00000000000
--- a/ACE/debian/libnetsvcs-6.5.2.lintian-overrides
+++ /dev/null
@@ -1 +0,0 @@
-libnetsvcs-6.5.2: no-symbols-control-file usr/lib/libnetsvcs-6.5.2.so
diff --git a/ACE/debian/libnetsvcs-6.5.2.docs b/ACE/debian/libnetsvcs-6.5.3.docs
index 0b03c55b91f..0b03c55b91f 100644
--- a/ACE/debian/libnetsvcs-6.5.2.docs
+++ b/ACE/debian/libnetsvcs-6.5.3.docs
diff --git a/ACE/debian/libnetsvcs-6.5.2.install b/ACE/debian/libnetsvcs-6.5.3.install
index c7a04b16213..c7a04b16213 100644
--- a/ACE/debian/libnetsvcs-6.5.2.install
+++ b/ACE/debian/libnetsvcs-6.5.3.install
diff --git a/ACE/debian/libnetsvcs-6.5.3.lintian-overrides b/ACE/debian/libnetsvcs-6.5.3.lintian-overrides
new file mode 100644
index 00000000000..28dd22e1d8d
--- /dev/null
+++ b/ACE/debian/libnetsvcs-6.5.3.lintian-overrides
@@ -0,0 +1 @@
+libnetsvcs-6.5.3: no-symbols-control-file usr/lib/libnetsvcs-6.5.3.so
diff --git a/ACE/docs/Download.html b/ACE/docs/Download.html
index 04232e54fc0..3a7c9f87ac5 100644
--- a/ACE/docs/Download.html
+++ b/ACE/docs/Download.html
@@ -92,81 +92,81 @@ Windows line feeds. For all other platforms download a .gz/.bz2 package.
</P>
<UL>
-<LI> <B>Latest ACE+TAO Micro Release.</B> The latest micro release is ACE 6.5.2 and TAO 2.5.2
-(ACE+TAO x.5.2), please use the links below to download it.<P>
+<LI> <B>Latest ACE+TAO Micro Release.</B> The latest micro release is ACE 6.5.3 and TAO 2.5.3
+(ACE+TAO x.5.3), please use the links below to download it.<P>
<TABLE BORDER="4">
<TR><TH>Filename</TH><TH>Description</TH><TH>Full</TH><TH>Sources only</TH></TR>
<TR><TD>ACE+TAO.tar.gz</TD>
<TD>ACE+TAO (tar+gzip format)</TD>
- <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-6.5.2.tar.gz">HTTP</A>]
- [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-6.5.2.tar.gz">FTP</A>]
+ <TD>[<A HREF="http://github.com/DOCGroup/ACE_TAO/releases/download/ACE%2BTAO-6_5_3/ACE+TAO-6.5.3.tar.gz">HTTP</A>]
+ [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-6.5.3.tar.gz">FTP</A>]
</TD>
- <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-src-6.5.2.tar.gz">HTTP</A>]
- [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-src-6.5.2.tar.gz">FTP</A>]
+ <TD>[<A HREF="http://github.com/DOCGroup/ACE_TAO/releases/download/ACE%2BTAO-6_5_3/ACE+TAO-src-6.5.3.tar.gz">HTTP</A>]
+ [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-src-6.5.3.tar.gz">FTP</A>]
</TD>
</TR>
<TR><TD>ACE+TAO.tar.bz2</TD>
<TD>ACE+TAO (tar+bzip2 format)</TD>
- <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-6.5.2.tar.bz2">HTTP</A>]
- [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-6.5.2.tar.bz2">FTP</A>]
+ <TD>[<A HREF="http://github.com/DOCGroup/ACE_TAO/releases/download/ACE%2BTAO-6_5_3/ACE+TAO-6.5.3.tar.bz2">HTTP</A>]
+ [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-6.5.3.tar.bz2">FTP</A>]
</TD>
- <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-src-6.5.2.tar.bz2">HTTP</A>]
- [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-src-6.5.2.tar.bz2">FTP</A>]
+ <TD>[<A HREF="http://github.com/DOCGroup/ACE_TAO/releases/download/ACE%2BTAO-6_5_3/ACE+TAO-src-6.5.3.tar.bz2">HTTP</A>]
+ [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-src-6.5.3.tar.bz2">FTP</A>]
</TD>
</TR>
<TR><TD>ACE+TAO.zip</TD>
<TD>ACE+TAO (zip format)</TD>
- <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-6.5.2.zip">HTTP</A>]
- [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-6.5.2.zip">FTP</A>]
+ <TD>[<A HREF="http://github.com/DOCGroup/ACE_TAO/releases/download/ACE%2BTAO-6_5_3/ACE+TAO-6.5.3.zip">HTTP</A>]
+ [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-6.5.3.zip">FTP</A>]
</TD>
- <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-src-6.5.2.zip">HTTP</A>]
- [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-src-6.5.2.zip">FTP</A>]
+ <TD>[<A HREF="http://github.com/DOCGroup/ACE_TAO/releases/download/ACE%2BTAO-6_5_3/ACE+TAO-src-6.5.3.zip">HTTP</A>]
+ [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE+TAO-src-6.5.3.zip">FTP</A>]
</TD>
</TR>
<TR><TD>ACE-html.tar.gz</TD>
<TD>Doxygen documentation for ACE+TAO (tar+gzip format)</TD>
- <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-html-6.5.2.tar.gz">HTTP</A>]
- [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-html-6.5.2.tar.gz">FTP</A>]
+ <TD>[<A HREF="http://github.com/DOCGroup/ACE_TAO/releases/download/ACE%2BTAO-6_5_3/ACE-html-6.5.3.tar.gz">HTTP</A>]
+ [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-html-6.5.3.tar.gz">FTP</A>]
</TD>
</TR>
<TR><TD>ACE-html.tar.bz2</TD>
<TD>Doxygen documentation for ACE+TAO (tar+bzip2 format)</TD>
- <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-html-6.5.2.tar.bz2">HTTP</A>]
- [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-html-6.5.2.tar.bz2">FTP</A>]
+ <TD>[<A HREF="http://github.com/DOCGroup/ACE_TAO/releases/download/ACE%2BTAO-6_5_3/ACE-html-6.5.3.tar.bz2">HTTP</A>]
+ [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-html-6.5.3.tar.bz2">FTP</A>]
</TD>
</TR>
<TR><TD>ACE-html.zip</TD>
<TD>Doxygen documentation for ACE+TAO (zip format)</TD>
- <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-html-6.5.2.zip">HTTP</A>]
- [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-html-6.5.2.zip">FTP</A>]
+ <TD>[<A HREF="http://github.com/DOCGroup/ACE_TAO/releases/download/ACE%2BTAO-6_5_3/ACE-html-6.5.3.zip">HTTP</A>]
+ [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-html-6.5.3.zip">FTP</A>]
</TD>
</TR>
<TR><TD>ACE.tar.gz</TD>
<TD>ACE only (tar+gzip format)</TD>
- <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-6.5.2.tar.gz">HTTP</A>]
- [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-6.5.2.tar.gz">FTP</A>]
+ <TD>[<A HREF="http://github.com/DOCGroup/ACE_TAO/releases/download/ACE%2BTAO-6_5_3/ACE-6.5.3.tar.gz">HTTP</A>]
+ [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-6.5.3.tar.gz">FTP</A>]
</TD>
- <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-src-6.5.2.tar.gz">HTTP</A>]
- [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-src-6.5.2.tar.gz">FTP</A>]
+ <TD>[<A HREF="http://github.com/DOCGroup/ACE_TAO/releases/download/ACE%2BTAO-6_5_3/ACE-src-6.5.3.tar.gz">HTTP</A>]
+ [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-src-6.5.3.tar.gz">FTP</A>]
</TD>
</TR>
<TR><TD>ACE.tar.bz2</TD>
<TD>ACE only (tar+bzip2 format)</TD>
- <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-6.5.2.tar.bz2">HTTP</A>]
- [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-6.5.2.tar.bz2">FTP</A>]
+ <TD>[<A HREF="http://github.com/DOCGroup/ACE_TAO/releases/download/ACE%2BTAO-6_5_3/ACE-6.5.3.tar.bz2">HTTP</A>]
+ [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-6.5.3.tar.bz2">FTP</A>]
</TD>
- <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-src-6.5.2.tar.bz2">HTTP</A>]
- [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-src-6.5.2.tar.bz2">FTP</A>]
+ <TD>[<A HREF="http://github.com/DOCGroup/ACE_TAO/releases/download/ACE%2BTAO-6_5_3/ACE-src-6.5.3.tar.bz2">HTTP</A>]
+ [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-src-6.5.3.tar.bz2">FTP</A>]
</TD>
</TR>
<TR><TD>ACE.zip</TD>
<TD>ACE only (zip format)</TD>
- <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-6.5.2.zip">HTTP</A>]
- [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-6.5.2.zip">FTP</A>]
+ <TD>[<A HREF="http://github.com/DOCGroup/ACE_TAO/releases/download/ACE%2BTAO-6_5_3/ACE-6.5.3.zip">HTTP</A>]
+ [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-6.5.3.zip">FTP</A>]
</TD>
- <TD>[<A HREF="http://download.dre.vanderbilt.edu/previous_versions/ACE-src-6.5.2.zip">HTTP</A>]
- [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-src-6.5.2.zip">FTP</A>]
+ <TD>[<A HREF="http://github.com/DOCGroup/ACE_TAO/releases/download/ACE%2BTAO-6_5_3/ACE-src-6.5.3.zip">HTTP</A>]
+ [<A HREF="ftp://download.dre.vanderbilt.edu/previous_versions/ACE-src-6.5.3.zip">FTP</A>]
</TD>
</TR>
</TABLE>
diff --git a/ACE/docs/bczar/bczar.html b/ACE/docs/bczar/bczar.html
index c1541b074a6..5d2e7203e63 100644
--- a/ACE/docs/bczar/bczar.html
+++ b/ACE/docs/bczar/bczar.html
@@ -295,7 +295,7 @@
rm -rf doxygen<br>
mkdir doxygen<br>
cd doxygen<br>
- git clone https://github.com/DOCGroup/ACE_TAO.git --depth 1 --branch ACE+TAO-6_5_2 ACE_TAO<br>
+ git clone https://github.com/DOCGroup/ACE_TAO.git --depth 1 --branch ACE+TAO-6_5_3 ACE_TAO<br>
cd ACE_TAO<br>
export ACE_ROOT=$PWD/ACE<br>
export TAO_ROOT=$PWD/TAO<br>
diff --git a/ACE/etc/index.html b/ACE/etc/index.html
index ca2b70783da..a60b7d37c8e 100644
--- a/ACE/etc/index.html
+++ b/ACE/etc/index.html
@@ -30,6 +30,7 @@
<hr>
We do have the documentation for previous releases
<ul>
+ <LI><P><A HREF="6.5.3/html">6.5.3</A></P></LI>
<LI><P><A HREF="6.5.2/html">6.5.2</A></P></LI>
<LI><P><A HREF="6.5.1/html">6.5.1</A></P></LI>
<LI><P><A HREF="6.5.0/html">6.5.0</A></P></LI>
diff --git a/ACE/include/makeinclude/platform_android.GNU b/ACE/include/makeinclude/platform_android.GNU
index 813d56ba29b..597360bd20e 100644
--- a/ACE/include/makeinclude/platform_android.GNU
+++ b/ACE/include/makeinclude/platform_android.GNU
@@ -22,8 +22,8 @@ PIE ?= -pie
#No rwho on Android
rwho = 0
-# Android Studio does not seem to reconize so files with versions
-versioned_so=0
+# Android Studio does not seem to recognize so files with versions
+versioned_so ?= 0
# Only try to use clang, unless this is set to 0, then try to use g++
android_force_clang ?= 1
diff --git a/ACE/include/makeinclude/platform_linux_clang.GNU b/ACE/include/makeinclude/platform_linux_clang.GNU
index 303cc580393..facabe30b10 100644
--- a/ACE/include/makeinclude/platform_linux_clang.GNU
+++ b/ACE/include/makeinclude/platform_linux_clang.GNU
@@ -1,11 +1,12 @@
-
# This file should allow ACE to be built on Linux, using the clang compiler.
include $(ACE_ROOT)/include/makeinclude/platform_linux_common.GNU
ifeq ($(insure),0)
- CC = clang
- CXX = clang++
+ ifeq ($(CXX),g++)
+ CC = clang
+ CXX = clang++
+ endif
endif
ifndef CXX_VERSION
diff --git a/ACE/include/makeinclude/platform_linux_common.GNU b/ACE/include/makeinclude/platform_linux_common.GNU
index 14870b457b7..fb0972d2747 100644
--- a/ACE/include/makeinclude/platform_linux_common.GNU
+++ b/ACE/include/makeinclude/platform_linux_common.GNU
@@ -107,11 +107,11 @@ ifeq ($(ssl),1)
PLATFORM_SSL_CPPFLAGS += -I/usr/kerberos/include
endif # ssl
-PLATFORM_LARGEFILE_CFLAGS := $(shell getconf LFS_CFLAGS 2> /dev/null || echo Unknown)
+PLATFORM_LARGEFILE_CFLAGS := $(shell getconf LFS_CFLAGS 2> /dev/null)
ifdef PLATFORM_LARGEFILE_CFLAGS
# Large file support
CPPFLAGS += $(PLATFORM_LARGEFILE_CFLAGS)
-endif #largefile
+endif
SYSARCH := $(shell uname -m)
diff --git a/ACE/include/makeinclude/wrapper_macros.GNU b/ACE/include/makeinclude/wrapper_macros.GNU
index 9d2a25292cd..8627695fccd 100644
--- a/ACE/include/makeinclude/wrapper_macros.GNU
+++ b/ACE/include/makeinclude/wrapper_macros.GNU
@@ -677,8 +677,16 @@ ifeq ($(ssl),0)
else
ifneq ($(SSL_ROOT), /usr)
ifneq ($(SSL_ROOT),)
- PLATFORM_SSL_CPPFLAGS += -I$(SSL_ROOT)/include
- PLATFORM_SSL_LDFLAGS += -L$(SSL_ROOT)/lib
+ ifneq ($(SSL_INCDIR),)
+ PLATFORM_SSL_CPPFLAGS += -I$(SSL_INCDIR)
+ else
+ PLATFORM_SSL_CPPFLAGS += -I$(SSL_ROOT)/include
+ endif
+ ifneq ($(SSL_LIBDIR),)
+ PLATFORM_SSL_LDFLAGS += -L$(SSL_LIBDIR)
+ else
+ PLATFORM_SSL_LDFLAGS += -L$(SSL_ROOT)/lib
+ endif
endif
endif
PLATFORM_SSL_LIBS ?= -lssl -lcrypto
diff --git a/ACE/rpmbuild/ace-tao.spec b/ACE/rpmbuild/ace-tao.spec
index 152fe30e408..081aedb603e 100644
--- a/ACE/rpmbuild/ace-tao.spec
+++ b/ACE/rpmbuild/ace-tao.spec
@@ -1,6 +1,6 @@
# Set the version number here.
-%define ACEVER 6.5.2
-%define TAOVER 2.5.2
+%define ACEVER 6.5.3
+%define TAOVER 2.5.3
# Conditional build
# Default values are
diff --git a/ACE/tests/.gitignore b/ACE/tests/.gitignore
index c2402c11670..8da5ea9d5fd 100644
--- a/ACE/tests/.gitignore
+++ b/ACE/tests/.gitignore
@@ -272,3 +272,7 @@
/XtAthenaReactor_Test
/XtMotifReactor_Test
/XtReactor_Test
+/Compiler_Features_36_Test
+/Compiler_Features_37_Test
+/Compiler_Features_38_Test
+/SOCK_Acceptor_Test
diff --git a/ACE/tests/Bug_3709_Regression_Test.cpp b/ACE/tests/Bug_3709_Regression_Test.cpp
index 11b7d4fc1dc..f902a4bfbc3 100644
--- a/ACE/tests/Bug_3709_Regression_Test.cpp
+++ b/ACE/tests/Bug_3709_Regression_Test.cpp
@@ -17,12 +17,6 @@ using namespace std;
#define BROKEN_TEMPLATE_TEMPLATE
#endif
-// clang version 2.9 crashes when trying to compile the test
-// http://llvm.org/bugs/show_bug.cgi?id=9643
-#ifdef __clang__
-#define BROKEN_TEMPLATE_TEMPLATE
-#endif
-
#ifdef __SUNPRO_CC
#define BROKEN_TEMPLATE_TEMPLATE
#endif
diff --git a/ACE/tests/Message_Block_Test.cpp b/ACE/tests/Message_Block_Test.cpp
index 554ce4c20da..1355efc066a 100644
--- a/ACE/tests/Message_Block_Test.cpp
+++ b/ACE/tests/Message_Block_Test.cpp
@@ -28,6 +28,20 @@ static const int ACE_ALLOC_SIZE = 5;
// Amount of memory block preallocated.
static const size_t ACE_ALLOC_AMOUNT = 48;
+// For the user-defined data block test
+static bool user_data_dtor_called = false;
+class User_Data : public ACE_Data_Block
+{
+public:
+ User_Data() {}
+
+ ~User_Data()
+ {
+ ACE_DEBUG((LM_DEBUG, ACE_TEXT ("User_Data dtor\n")));
+ user_data_dtor_called = true;
+ }
+};
+
#if defined (ACE_HAS_THREADS)
#include "ace/Lock_Adapter_T.h"
@@ -345,6 +359,27 @@ int
run_main (int, ACE_TCHAR *[])
{
ACE_START_TEST (ACE_TEXT ("Message_Block_Test"));
+
+ // A quick user-defined data block test, then the main event
+ User_Data *user_data_block = 0;
+ ACE_NEW_MALLOC_RETURN (user_data_block,
+ static_cast<User_Data *>(
+ ACE_Allocator::instance()->malloc(sizeof (User_Data))),
+ User_Data (),
+ -1);
+
+ // Create a new message block referring to the User_Data block and
+ // ensure it is released and freed correctly.
+ ACE_Message_Block *wrapper_mb = 0;
+ ACE_NEW_RETURN (wrapper_mb,
+ ACE_Message_Block (user_data_block),
+ -1);
+
+ wrapper_mb->release ();
+ wrapper_mb = 0;
+ if (!user_data_dtor_called)
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("User-defined data block not freed correctly.\n")));
+
#if defined (ACE_HAS_THREADS)
int n_threads = ACE_MAX_THREADS;
diff --git a/ACE/tests/Vector_Test.cpp b/ACE/tests/Vector_Test.cpp
index 5470166b176..cac2f398faa 100644
--- a/ACE/tests/Vector_Test.cpp
+++ b/ACE/tests/Vector_Test.cpp
@@ -9,11 +9,10 @@
*/
//=============================================================================
+#include <algorithm>
#include "test_config.h"
-
-
#include "ace/Vector_T.h"
typedef size_t DATA;
@@ -157,6 +156,34 @@ int run_main (int, ACE_TCHAR *[])
if (v2.size () != 3)
ACE_ERROR ((LM_ERROR, ACE_TEXT ("v2's size should be 3\n")));
+ // Assert that vector standard iterators work
+ {
+ VECTOR vector;
+ const size_t size = 200;
+ const size_t offset = 5;
+
+ ACE_TEST_ASSERT (vector.begin () == vector.end ());
+
+ size_t i;
+ for (i = 0; i < size; i++)
+ {
+ vector.push_back (i + offset);
+ }
+
+ i = 0;
+ for (VECTOR::iterator it = vector.begin (); it != vector.end (); ++it)
+ {
+ ACE_TEST_ASSERT (*it == i++ + offset);
+ }
+
+ std::reverse (vector.begin (), vector.end());
+ i = size - 1;
+ for (VECTOR::iterator it = vector.begin (); it != vector.end (); ++it)
+ {
+ ACE_TEST_ASSERT (*it == i-- + offset);
+ }
+ }
+
ACE_END_TEST;
return 0;
diff --git a/README.md b/README.md
index 7587c76571d..f7a8ba5d1ce 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,6 @@
+[![Lastest release](https://img.shields.io/github/release/docgroup/ace_tao.svg)](https://github.com/DOCGroup/ACE_TAO/releases/latest)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/9a20abe6590a4b3ca946d7634d9f51af)](https://www.codacy.com/app/DOCGroup/ACE_TAO?utm_source=github.com&utm_medium=referral&utm_content=DOCGroup/ACE_TAO&utm_campaign=badger)
-[![Build Status](https://travis-ci.org/DOCGroup/ACE_TAO.svg?branch=master)](https://travis-ci.org/DOCGroup/ACE_TAO)
+[![Build Status](https://travis-ci.com/DOCGroup/ACE_TAO.svg?branch=master)](https://travis-ci.com/DOCGroup/ACE_TAO)
[![Build Status](https://ci.appveyor.com/api/projects/status/umif8ghl2fg8rtx6/branch/master?svg=true)](https://ci.appveyor.com/project/jwillemsen/ace-tao)
[![Coverity Scan Build Status](https://scan.coverity.com/projects/1/badge.svg)](https://scan.coverity.com/projects/1)
[![Azure DevOps](https://dev.azure.com/docgroup/ACE_TAO/_apis/build/status/DOCGroup.ACE_TAO)](https://dev.azure.com/docgroup/ACE_TAO/_build/latest?definitionId=1)
diff --git a/TAO/COPYING b/TAO/COPYING
index 67fc56322e6..fc3685c847a 100644
--- a/TAO/COPYING
+++ b/TAO/COPYING
@@ -8,7 +8,7 @@
(henceforth referred to as "DOC software") are copyrighted by
[5]Douglas C. Schmidt and his [6]research group at [7]Washington
University, [8]University of California, Irvine, and [9]Vanderbilt
- University, Copyright (c) 1993-2018, all rights reserved. Since DOC
+ University, Copyright (c) 1993-2019, all rights reserved. Since DOC
software is open-source, freely available software, you are free to
use, modify, copy, and distribute--perpetually and irrevocably--the
DOC software source code and object code produced from the source, as
diff --git a/TAO/ChangeLogs/TAO-2_5_3 b/TAO/ChangeLogs/TAO-2_5_3
new file mode 100644
index 00000000000..65fe5c9f7df
--- /dev/null
+++ b/TAO/ChangeLogs/TAO-2_5_3
@@ -0,0 +1,369 @@
+commit b0d2c3ec0e1c844aa6f6a1a13dc8859efcbe3879
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Fri Nov 16 11:27:49 2018 +0100
+
+ List new changes
+
+ * ACE/NEWS:
+ * TAO/NEWS:
+
+commit 618533091124a97d6dcd4b106e38cb5ca2477b98
+Merge: 764ff58a2e8 40af509ec08
+Author: Adam Mitz <mitza@objectcomputing.com>
+Date: Tue Nov 6 16:50:01 2018 -0600
+
+ Merge pull request #726 from iguessthislldo/igtd/android
+
+ Support for Clang based Android NDKs
+
+commit da981b00af6c6ffe6b3cef7df8840eb01ec45812
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Mon Nov 5 15:51:21 2018 +0100
+
+ Doxygen changes and use const int for the statics to resolve the issues with Embarcadero C++ Builder pre compiled header support
+
+ * TAO/tao/Messaging/Messaging.h:
+ * TAO/tao/Valuetype/Valuetype_Adapter_Factory_Impl.h:
+
+commit ec0df6cbcc64f4a361b4b003fca0c9964dead887
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Mon Nov 5 14:57:41 2018 +0100
+
+ Doxygen changes
+
+ * TAO/tao/Valuetype/ValueFactory_Map.h:
+
+commit 55dfd83e68b0bdd90b0d29c1ee20a3906156a02e
+Author: Fred Hornsey <hornseyf@objectcomputing.com>
+Date: Tue Oct 30 17:13:01 2018 -0500
+
+ TAO-INSTALL.html: Formerly not Formally
+
+commit 36e155902a9a386ab7ac80980a30edc11539befb
+Author: Fred Hornsey <hornseyf@objectcomputing.com>
+Date: Tue Oct 30 13:19:54 2018 -0500
+
+ TAO-INSTALL.html: Rephrasing
+
+ It makes it sound like TAO supported Windows 95 only until "recently",
+ which is a ambiguous way to phrase it anyway.
+
+commit e3f6c776b0abbdeff7933063e1d7a7a10b073ba1
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Oct 30 15:08:22 2018 +0100
+
+ Add TIE test, bugzilla 4182
+
+ * TAO/bin/tao_orb_tests.lst:
+
+commit 91b984bfce503bf61eaa0af03b2d7fdb33b33682
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Oct 30 15:07:44 2018 +0100
+
+ Fixed IOR file usage in test script
+
+ * TAO/tests/POA/TIE/run_test.pl:
+
+commit 4256451a9b89b4c8280c0976c8e03a753e003453
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Oct 30 12:12:04 2018 +0100
+
+ Removed obsolete files
+
+ * TAO/orbsvcs/tests/Security/ssliop_corbaloc/pvtkey-client.pem:
+ * TAO/orbsvcs/tests/Security/ssliop_corbaloc/pvtkey.pem:
+ * TAO/orbsvcs/tests/Security/ssliop_corbaloc/selfsigncert-client.pem:
+ * TAO/orbsvcs/tests/Security/ssliop_corbaloc/selfsigncert.pem:
+ Deleted.
+
+commit 2578fef175f99ce2e03a764514c428e0ca7f7de5
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Oct 30 12:10:18 2018 +0100
+
+ Use different certificates
+
+ * TAO/orbsvcs/tests/Security/ssliop_corbaloc/client.conf.xml:
+ * TAO/orbsvcs/tests/Security/ssliop_corbaloc/client.conf:
+ * TAO/orbsvcs/tests/Security/ssliop_corbaloc/server.conf.xml:
+ * TAO/orbsvcs/tests/Security/ssliop_corbaloc/server.conf:
+
+commit c6e382658aa985f4d2cbb8fb01037c954a31d5bf
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Oct 30 12:10:06 2018 +0100
+
+ Enable ssliop collocated invocation support
+
+ * TAO/orbsvcs/tests/Security/ssliop_corbaloc/client.cpp:
+
+commit be0958e97b739026684dd5bb3ebd2af92c6e46d3
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Oct 30 12:09:46 2018 +0100
+
+ Added security libs to linker and use certs from another test which do work
+
+ * TAO/orbsvcs/tests/Security/ssliop_corbaloc/cacert.pem:
+ * TAO/orbsvcs/tests/Security/ssliop_corbaloc/client_cert.pem:
+ * TAO/orbsvcs/tests/Security/ssliop_corbaloc/client_key.pem:
+ * TAO/orbsvcs/tests/Security/ssliop_corbaloc/server_cert.pem:
+ * TAO/orbsvcs/tests/Security/ssliop_corbaloc/server_key.pem:
+ Added.
+
+ * TAO/orbsvcs/tests/Security/ssliop_corbaloc/corbaloc_ssliop.mpc:
+
+commit 6abc40ce9bd581f82422662543013689944a1f01
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Oct 30 12:08:34 2018 +0100
+
+ Layout changes
+
+ * TAO/orbsvcs/tests/Security/ssliop_corbaloc/README:
+
+commit 7661e1085621c5a7548401865f3eb94407520a22
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Oct 30 12:08:16 2018 +0100
+
+ Layout changes
+
+ * TAO/orbsvcs/tests/Security/Secure_Invocation/README:
+
+commit a93ce0d1ca4f6fb58e587e3335162396185845a6
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Oct 30 12:08:00 2018 +0100
+
+ Layout changes
+
+ * TAO/orbsvcs/tests/Security/BiDirectional/README:
+
+commit 50c131d843bf9f7c38d00ec0a4c26881756aa9aa
+Merge: 1a7f9bc556a f776ce71367
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Oct 30 11:46:56 2018 +0100
+
+ Merge branch 'ssliop_corbaloc_parser_comma_fix' of git://github.com/milan-mpathix/ATCD into milan-mpathix-ssliop_corbaloc_parser_comma_fix
+
+commit e6499d3d089f100cb9eb859bf6e3bc3334fc369a
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Oct 30 10:03:22 2018 +0100
+
+ Layout change
+
+ * TAO/tests/Bug_4213_Regression/server.cpp:
+
+commit 31eec62b48c615088d6c70f0d7ee610d81aa0b9b
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Oct 30 10:03:11 2018 +0100
+
+ Only list the invocation which failed without the necesary fix
+
+ * TAO/tests/Bug_4213_Regression/run_test.pl:
+
+commit 2c747ee395016bef8bfe0a235063430e580da9c6
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Oct 30 10:02:52 2018 +0100
+
+ Add new bug 4213 unit test
+
+ * TAO/bin/tao_orb_tests.lst:
+
+commit 8dd037ee00f6274f79652a30ba275136ef2ce053
+Merge: ffaae9ead79 19605786704
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Oct 30 09:56:09 2018 +0100
+
+ Merge branch 'bug_4213-uiop_corbaloc_key' of git://github.com/milan-mpathix/ATCD into milan-mpathix-bug_4213-uiop_corbaloc_key
+
+commit ffaae9ead794c3e56e9ef2417ddbecd568b61843
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Oct 30 09:52:08 2018 +0100
+
+ Fixed typos
+
+commit 7d6b33e807e9d75a2d28248d0f69b143a18bddc3
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Oct 30 09:51:53 2018 +0100
+
+ New unit test for bugzilla 4213
+
+commit e56a460c00e39f00c63b4b1192a68cda35f8893f
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Oct 30 09:34:19 2018 +0100
+
+ Fixed link to OMG ORT spec
+
+commit 690d9efe48328e7605f3565e76b63bbd4ca8d191
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Oct 30 09:27:08 2018 +0100
+
+ Fixed incorrect classname in logging statement
+
+ * TAO/tao/Strategies/SHMIOP_Profile.cpp:
+
+commit 9878a2e603a25a10972a9b5eb23c434f22ec5428
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Oct 30 09:02:27 2018 +0100
+
+ Use bool instead of int
+
+ * TAO/tao/CORBALOC_Parser.cpp:
+
+commit 23d91ca6ff4b0e61ac1835c2e3c6cbf757c79d4d
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Oct 30 08:58:12 2018 +0100
+
+ Fixed typos
+
+ * TAO/docs/ORBEndpoint.html:
+ * TAO/docs/pluggable_messaging.html:
+
+commit c619e9ac8bd1fb1ad1e5d0c1a7b2b52f17970914
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Oct 30 08:57:58 2018 +0100
+
+ Removed commented out operation
+
+ * TAO/tests/Connection_Purging/test.idl:
+
+commit 1f916302499a56d6de52d61c0c8c8a4b8f4c2d4b
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Oct 30 08:57:40 2018 +0100
+
+ Make formatting of debug message consistent with others in the TAO core
+
+ * TAO/tao/Strategies/UIOP_Connection_Handler.cpp:
+
+commit ed5755ec9040af82191f6d5b1190f7c7afea6830
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Oct 30 08:48:56 2018 +0100
+
+ Removed empty lines
+
+ * TAO/tests/Connection_Purging/README:
+
+commit 544206dd28b596155332e41bf70d7e1c00e0e3b0
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Fri Sep 21 15:28:55 2018 +0200
+
+ When we have an error parsing our GIOP header we should log a message using an error, not debug
+
+ * TAO/tao/GIOP_Message_State.cpp:
+
+commit 6881ff62f2d8bc16efb060307bad5deb4fc7a7fd
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Sep 18 14:36:37 2018 +0200
+
+ Upgraded to latest doxygen configuration file version
+
+ * ACE/etc/ace.doxygen:
+ * ACE/etc/ace_inet.doxygen:
+ * ACE/etc/ace_qos.doxygen:
+ * ACE/etc/ace_rmcast.doxygen:
+ * ACE/etc/ace_ssl.doxygen:
+ * ACE/etc/acexml.doxygen:
+ * TAO/etc/tao.doxygen:
+ * TAO/etc/tao_anytypecode.doxygen:
+ * TAO/etc/tao_av.doxygen:
+ * TAO/etc/tao_compression.doxygen:
+ * TAO/etc/tao_cosevent.doxygen:
+ * TAO/etc/tao_cosnaming.doxygen:
+ * TAO/etc/tao_cosnotification.doxygen:
+ * TAO/etc/tao_costime.doxygen:
+ * TAO/etc/tao_costrader.doxygen:
+ * TAO/etc/tao_dynamicany.doxygen:
+ * TAO/etc/tao_dynamicinterface.doxygen:
+ * TAO/etc/tao_esf.doxygen:
+ * TAO/etc/tao_ifr.doxygen:
+ * TAO/etc/tao_implrepo.doxygen:
+ * TAO/etc/tao_iormanip.doxygen:
+ * TAO/etc/tao_iortable.doxygen:
+ * TAO/etc/tao_pi.doxygen:
+ * TAO/etc/tao_pi_server.doxygen:
+ * TAO/etc/tao_portablegroup.doxygen:
+ * TAO/etc/tao_portableserver.doxygen:
+ * TAO/etc/tao_rtcorba.doxygen:
+ * TAO/etc/tao_rtevent.doxygen:
+ * TAO/etc/tao_rtportableserver.doxygen:
+ * TAO/etc/tao_security.doxygen:
+ * TAO/etc/tao_smartproxies.doxygen:
+ * TAO/etc/tao_ssliop.doxygen:
+ * TAO/etc/tao_strategies.doxygen:
+ * TAO/etc/tao_transportcurrent.doxygen:
+ * TAO/etc/tao_ziop.doxygen:
+
+commit 01fc7a23cf7e6772d85f9fee367803b3e85a1118
+Author: Johnny Willemsen <jwillemsen@remedy.nl>
+Date: Tue Sep 18 09:36:39 2018 +0200
+
+ Make x.5.2 public as new release
+
+ * ACE/NEWS:
+ * ACE/bin/diff-builds-and-group-fixed-tests-only.sh:
+ * ACE/docs/Download.html:
+ * ACE/docs/bczar/bczar.html:
+ * ACE/etc/index.html:
+ * TAO/NEWS:
+
+commit f776ce71367a69b891db4164f744d62b2ca06205
+Merge: 287883987b9 ed1925da7c3
+Author: Milan Cvetkovic <milan.cvetkovic@mpathix.com>
+Date: Wed Jan 24 11:21:56 2018 -0500
+
+ Merge tag 'ACE+TAO-6_4_6' into ssliop_corbaloc_parser_comma_fix
+
+commit 1960578670452b98f7636a1e1acfc1528d455765
+Merge: dc5c956f2f0 ed1925da7c3
+Author: Milan Cvetkovic <milan.cvetkovic@mpathix.com>
+Date: Tue Jan 23 19:00:36 2018 -0500
+
+ Merge tag 'ACE+TAO-6_4_6' into bug_4213-uiop_corbaloc_key
+
+commit dc5c956f2f04b92fd28798c66aaddf53a7848d8e
+Author: Milan Cvetkovic <milan.cvetkovic@mpathix.com>
+Date: Mon Apr 25 16:11:14 2016 -0400
+
+ Fixes corbaloc:uiop:/randesvous|KEY to properly parse KEY instead of |KEY
+
+ Fix for:
+ CORBA_Object_var o = string_to_object("corbaloc:uiop:/tmp/sock|KEY");
+ MyObject_var mo = MyObject::_narrow();
+
+ _narrow() throws due to "|KEY" sent as object key.
+
+commit 287883987b9e14e78bed1a9074507f88ec6b19d2
+Author: Milan Cvetkovic <milan.cvetkovic@mpathix.com>
+Date: Thu Apr 7 14:36:56 2016 -0400
+
+ Wait for orb thread to terminate
+
+commit 2884c7b4884d6410c44f15fbeffd97b1ee20fcfb
+Merge: 9143adca7bb 6114e2b1df6
+Author: Milan Cvetkovic <milan.cvetkovic@mpathix.com>
+Date: Thu Apr 7 10:08:35 2016 -0400
+
+ Merge branch 'ssliop_corbaloc_test' into ssliop_corbaloc_parser_comma_fix
+
+commit 6114e2b1df60ec798efd27da8bf07ce742cf3b5d
+Author: Milan Cvetkovic <milan.cvetkovic@mpathix.com>
+Date: Wed Apr 6 18:28:37 2016 -0400
+
+ Fail ssliop_corbaloc test for multi-profile corbaloc
+
+commit 4e3888084fc9ebecc71856794c071836adfbc22b
+Author: Milan Cvetkovic <milan.cvetkovic@mpathix.com>
+Date: Wed Apr 6 18:17:07 2016 -0400
+
+ Fix timeout errors in orbsvcs/tests/Security/ssliop_corbaloc, enable the test
+
+ Apparently, SSLIOP cannot use collocated servants in this test.
+
+ We have to run the server orb, for all remote invocations to our server
+ to work, even though they are both in the same process (client).
+
+commit 9143adca7bbe21d476c2e4387c056158d7b83a00
+Author: Milan Cvetkovic <milan.cvetkovic@mpathix.com>
+Date: Tue Apr 5 20:17:51 2016 -0400
+
+ Fixed ssliop corbaloc parser, when there is a comma delimited list
+
+ ... use the same logic as in TAO/tao/Transport_Connector.cpp
+
+ Allows using corbaloc:iiop:host:2222,iiop:host:2223/ObjectKey with SSLIOP.
diff --git a/TAO/MPC/config/taobaseidldefaults.mpb b/TAO/MPC/config/taobaseidldefaults.mpb
index 073b8a32334..391e6e6644f 100644
--- a/TAO/MPC/config/taobaseidldefaults.mpb
+++ b/TAO/MPC/config/taobaseidldefaults.mpb
@@ -16,6 +16,7 @@ project: build_files {
libpath = $(ACE_ROOT)/lib
inputext = .idl
keyword idlflags = commandflags
+ output_follows_input = 0
optional(header_outputext) {
commandflags(!-Sch || !-Ssh || -GC) = .h, .hpp, .hxx, .hh
diff --git a/TAO/NEWS b/TAO/NEWS
index f342382da02..fd4b90ac9b2 100644
--- a/TAO/NEWS
+++ b/TAO/NEWS
@@ -1,6 +1,42 @@
+USER VISIBLE CHANGES BETWEEN TAO-2.5.3 and TAO-2.5.4
+====================================================
+
+. Enhanced the ImR to better handle a huge number
+ of servers which use the ImR heavily and each of
+ them does a frequent shutdown/start cycle
+
+. The TAO_IDL frontend library now parses all IDL4
+ annotation-related syntax: using and defining annotations.
+ Use the tao_idl command-line options --idl-version and
+ --unknown-annotations to control annotation parsing.
+ Documentation on this feature is located in
+ TAO/TAO_IDL/docs/annotations.md.
+
+. TAO_IDL now will return an error status code when
+ passing an invalid command line argument.
+ Backends will have to support this behavior
+ explicitly, see TAO/TAO_IDL/include/idl_defines.h
+ for details.
+ TAO_IDL also accepts new options such as -h,
+ --help, --version, and --syntax-only, the latter
+ of which won't generate any files, just check
+ syntax of the IDL file(s).
+ See tao_idl -h for details.
+
+. When using IDL_Files in MPC, generated files will
+ now be placed in the current directory by default,
+ instead of the directory of the IDL file.
+ Use
+ idlflags += -o <IDL_FILE_DIR>
+ gendir = <IDL_FILE_DIR>
+ to output generated files to where the IDL file
+ is.
+
USER VISIBLE CHANGES BETWEEN TAO-2.5.2 and TAO-2.5.3
====================================================
+. Enhance ssliop and uiop corbaloc parsers
+
USER VISIBLE CHANGES BETWEEN TAO-2.5.1 and TAO-2.5.2
====================================================
diff --git a/TAO/PROBLEM-REPORT-FORM b/TAO/PROBLEM-REPORT-FORM
index fac2b5b6d35..43453db7053 100644
--- a/TAO/PROBLEM-REPORT-FORM
+++ b/TAO/PROBLEM-REPORT-FORM
@@ -40,8 +40,8 @@
To: tao-bugs@list.isis.vanderbilt.edu
Subject: [area]: [synopsis]
- TAO VERSION: 2.5.2
- ACE VERSION: 6.5.2
+ TAO VERSION: 2.5.3
+ ACE VERSION: 6.5.3
HOST MACHINE and OPERATING SYSTEM:
If on Windows based OS's, which version of WINSOCK do you
diff --git a/TAO/TAO_IDL/.gitignore b/TAO/TAO_IDL/.gitignore
index 9ea5275509d..7259a262bc8 100644
--- a/TAO/TAO_IDL/.gitignore
+++ b/TAO/TAO_IDL/.gitignore
@@ -1 +1,2 @@
/tao_idl
+/fe/idl.output
diff --git a/TAO/TAO_IDL/INSTALL.sun b/TAO/TAO_IDL/INSTALL.sun
deleted file mode 100644
index 2b26b7fb597..00000000000
--- a/TAO/TAO_IDL/INSTALL.sun
+++ /dev/null
@@ -1,186 +0,0 @@
-========================================
-
-This file contains the original INSTALL file that came with the
-SunSoft IDL compiler release. This information in this file is
-historical in nature and the much of the specific information probably
-is inaccurate with respect to the current state of TAO IDL. Please
-see the ../TAO-INSTALL.html documentation that comes with TAO for
-up-to-date information on the installation process.
-
-Specifically, some of the files referred to below have been renamed in
-TAO IDL.
-
-INTERFACE DEFINITION LANGUAGE INSTALLATION GUIDE
--==============================================-
-
-INTRODUCTION
-
-This file describes the installation process for OMG_IDL_CFE version 1.3.
-This file explains how to:
-
-- install the source code
-- modify the sources to customize them for different configurations
-- modify the sources to implement your own back end
-
-TESTED CONFIGURATIONS
-
-This release has been tested and is believed to operate correctly on:
-- SunPro Sparcworks 2.x and 3.0 on SunOS 4.1.x
-- SunPro Sparcworks 2.x and 3.0 on Solaris 2.3
-- g++ 2.5.8 on SunOS 4.1.x
-- g++ 2.5.8 on Solaris 2.3
-
-This is the first release of OMG IDL CFE which is preconfigured to compile
-correctly for Solaris 2.x and with SunPro SparcWorks compilers.
-
-CUSTOMIZATION
-
-The release contains a file idl_make_vars in the current directory,
-which is included in each Makefile. This file defines all the
-customizable variables for the CFE.
-
-OSV should be set to a string denoting the operating system upon which
-you wish to build the CFE. The CFE as shipped is preconfigured to
-compile correctly on Solaris 2.x (OSV=SOLARIS2), and has also been
-tested on SunOS 4.1.x (OSV=SUNOS4). It contains code donated by HP
-which enables it to be compiled on Apollo Domain systems (OSV=apollo)
-and HPUX systems (OSV=hpux), but these two configurations have not
-been tested.
-
-C++ and CCC should be set to identify the C++ compiler you will use to
-compile this release. Their values should be identical. Both are set
-to address differences between various make programs - some predefine
-CCC, others use C++ to denote the C++ compiler. The possible values
-are CC (which uses the Sparcworks compilers on SunOS 4.1 and Solaris
-2.3) and g++, which uses the installed version of GNU C++.
-
-CCFLAGS should be set to a list of flags to pass to the C++
-compiler. As shipped, this list is -g. NOTE: We have not extensively
-tested the release with optimization turned on.
-
-CPP_FLAGS should be set to a list of flags to pass to the C++
-preprocessor. Use this variable to enable or disable specific
-customizations you make to the BE or CFE sources.
-
-YFLAGS should be set to a list of flags to pass to the Yacc
-program. As shipped, the list is -d -t, which causes Yacc to generate
-y.tab.h and y.tab.c files.
-
-LEXFLAGS should be set to a list of flags to pass to the Lex
-program. As shipped, the list -t.
-
-RANLIB should be set to the location of the ranlib program on your
-system. As shipped this is ranlib. If your system has no ranlib you
-can set this variable to ':' or /bin/true. As shipped the variable is
-preset to /bin/true since Solaris 2.x does not use ranlib.
-
-AR should be set to the location of the ar program on your system. As
-shipped this is ar. If your system has a different mechanism for
-creating libraries, you should modify the value of this variable
-accordingly.
-
-ARFLAGS should be set to the flags to be passed to the ar program. As
-shipped this is 'crv'.
-
-INSTALLATION
-
-a. Disk space requirements
-
-This distribution requires approximately 350 KBytes when
-compressed. When uncompressed, untarred and compiled, approximately 10
-MBytes of disk space are consumed on a Sun 4.
-
-b. Getting the software
-
-Use anonymous FTP to omg.org and supply your e-mail address as
-password. Change directories to pub/OMG_IDL_CFE_1.3, set bin and get
-the compressed tar file OMG_IDL_CFE_1.3.tar.Z.
-
-The distribution may, in the future, be made available from other
-archives on the Internet. However, omg.org will always have the most
-up-to-date version of this software.
-
-After transferring this file, uncompress it and untar it in a
-directory of your choice.
-
-c. Compiling it
-
-If you are using a Sparcstation running Solaris 2.x and have the
-SunPro Sparcworks compilers installed, you may directly install the
-software. If your hardware or operating system configurations are
-different, read and follow the instructions in the previous section
-first.
-
-At the root directory of the release, issue
-
- % make
-
-or
-
- % make all
-
-This will compile the provided sources and the sources found in the be
-directory. Executing this make target causes 'make all' to be invoked
-in each subdirectory, resulting in building the libraries for each
-component and finally a link step producing an executable IDL
-compiler.
-
-In order to make only the compiler front end components, without
-compiling the sources found in the be directory and without building
-an executable, issue
-
- % make libs
-
-This will build the libraries in the ast, fe, util, driver and narrow
-directories. To build only the be, issue
-
- % make be
-
-To build all libraries without creating an executable, issue
-
- % make all_libs
-
-To remove all files created by the build process, issue
-
- % make clean
-
-This will not remove any files created by Yacc and Lex, because you
-may be using the ones provided in the distribution (see below).
-
-d. Yacc and Lex
-
-Some installations may not have a C++ aware Yacc and Lex
-processor. For these installations, we have included the output of
-yacc and lex in the release. If you need to use these files to build
-the release because you don't have access to a C++ capable Yacc or
-Lex, go to the "fe" directory, issue the command:
-
- % touch lex.yy.cc y.tab.cc y.tab.hh
-
-This will ensure that the processed files appear to be newer than the
-source files they were produced from and will cause "make" to skip
-their production.
-
-NOTE: The files provided in the distribution have been produced on
-Solaris 2.3 and may contain OS-specific #include directives. If you
-intend to use these files, you may have to edit them to make them work
-in your environment. The provided files are known to compile cleanly
-without modification with both SunPro Sparcworks compilers and GNU C++
-on both SunOS 4.1 and Solaris 2.3. We have not tested the grammar and
-lexer input files with bison or flex.
-
-IMPLEMENTING A BACK END
-
-To implement your own back end, you can start with the provided
-sources in the be directory and modify them. The Makefile understands
-the 'make all' target and will generate libbe.a in the demo_be
-directory. As set up, the variable CPP_FLAGS allows you to place
-include files either in the current directory or in the include
-directory. Alternatively, you can place your include files in a new
-directory and modify CPP_FLAGS to cause the C++ preprocessor to search
-this new directory for referenced include files, by adding a new -I
-directive.
-
-Additional detail on the structure and function of back ends, and on
-the protocol which a back end must implement, are found in the
-document entitled WRITING_A_BE.
diff --git a/TAO/TAO_IDL/README.md b/TAO/TAO_IDL/README.md
new file mode 100644
index 00000000000..7d76776c803
--- /dev/null
+++ b/TAO/TAO_IDL/README.md
@@ -0,0 +1,17 @@
+# TAO\_IDL
+
+TAO\_IDL/`tao_idl` is TAO's Interface Description Language (IDL) compiler. It
+is based on Sun Microsystems' OMG IDL Compiler Front End (CFE) version 1.3,
+which was released in 1994. It implements most IDL v3 features and, starting
+with TAO 2.5.4, some features from IDL v4.
+
+## User Documentation
+
+User documentation on using TAO\_IDL can be found at
+[../docs/compiler.html](../docs/compiler.html).
+
+## Developer Documentation
+
+For developers either making use of TAO\_IDL in a downstream compiler or
+contributing to TAO\_IDL, documentation can be found at
+[docs/README.md](docs/README.md).
diff --git a/TAO/TAO_IDL/README.sun b/TAO/TAO_IDL/README.sun
deleted file mode 100644
index b2b6e20d3d5..00000000000
--- a/TAO/TAO_IDL/README.sun
+++ /dev/null
@@ -1,245 +0,0 @@
-========================================
-
-This file contains the original README file that came with the SunSoft
-IDL compiler release. This information in this file is historical in
-nature and the much of the specific information probably is inaccurate
-with respect to the current state of TAO IDL. Please see the
-../docs/index.html documentation that comes with TAO for up-to-date
-information on TAO IDL compiler design and implementation.
-
-Specifically, some of the files referred to below have been renamed in
-TAO IDL.
-
-INTERFACE DEFINITION LANGUAGE COMPILER FRONT END
--==============================================-
-
-INTRODUCTION
-
-Welcome to the publicly available source release of SunSoft's
-implementation of the compiler front end (CFE) for OMG Interface Definition
-Language! This is Release 1.3 of the CFE.
-
-The Interface Definition Language (IDL) implementation is divided into
-three parts:
-
-- A main program for driving the compilation process
-- A parser and attendant utilities
-- One or more back ends (BEs) for taking the processed input and producing
- output in a target language and target format
-
-WARNINGS
-
-This is a preliminary version. This software is made available AS IS and
-WITH NO GUARANTEES. Please read the copyright notice attached at the
-bottom of this file.
-
-IMPORTANT NOTICE FOR USERS OF OMG IDL CFE VERSION 1.2.
-
-Please carefully read the file CHANGES to obtain IMPORTANT INFORMATION on
-changes in that may affect the manner in which a BE is constructed. You
-must follow instructions contained in the file CHANGES to obtain a
-functional BE if you are migrating an existing BE from OMG IDL CFE v. 1.2.
-
-TARGET AUDIENCE
-
-Who should use this release?
-
-- You can use this source release to create a stand alone parser for OMG
- Interface Definition Language. This may be useful to verify the legality
- of IDL input.
-- Developers of OMG Interface Definition Language compilers should use this
- release as a basis for writing their back ends, to obtain a common
- framework for their compiler and to provide portable and uniform
- parsing of IDL input.
-
-HOW TO OBTAIN THIS SOFTWARE
-
-Please use anonymous FTP to omg.org and supply your e-mail address as the
-password. Then change directories to pub/OMG_IDL_CFE_1.3, set binary transfer
-and get the file OMG_IDL_CFE_1.3.TAR.Z. This file includes copies of all
-individual documentation files in the directory.
-
-Precompiled binaries constructed from the sources in this release will be
-made available shortly, in the directory pub/OMG_IDL_CFE_1.3/bin. These
-binaries are useful for parsing IDL source and for learning about the
-language. Precompiled binaries for Solaris 2.x and for SunOS 4.x will be
-provided.
-
-You can also use the mail server program to retrieve this software. Send
-email with the subject 'help' to omg_idl@omg.org, and the mail server will
-respond with instructions on how to retrieve the software.
-
-Copies of this software may be made available from archives other than
-omg.org. New versions made available by Sun will be placed on omg.org and a
-message will be sent to this newsgroup announcing its availability.
-
-Finally, the SunSoft OMG IDL CFE is also available on magnetic tape for a
-nominal media charge directly from SunSoft. Please refer to part number
-DIDL-100-STP when ordering.
-
-CONTACT POINT
-
-Please let us know who you are if you decide to use this software, and how
-you use it. Please send e-mail to:
-
- idl-cfe@sun.com
-
-This address can also be used to report problems, bugs, suggestions and
-send general comments.
-
-WHAT IS PROVIDED IN THE RELEASE
-
-Provided in this release are:
-
-- A main program for driving an Interface Definition Language compiler
-- A parser for the Interface Definition Language grammar which builds an
- internal representation of the input parsed. This internal
- representation, named an Abstract Syntax Tree (AST), is used as input to
- a back end
-- Some utility functions used by the parser
-- A demonstration back end (BE) which exercises the front end but produces
- no translated output
-- Documentation of the public interfaces and of the contract between
- the compiler front end and a back end
-
-OPERATION
-
-A complete compiler operates in two passes:
-
-- The first pass, provided in this release, parses the IDL input and
- produces an internal representation, called an Abstract Syntax Tree (AST).
- This pass also does a complete syntax and semantics check of the input
- provided to ensure that exactly legal IDL input is accepted. If a syntax
- or semantic error is discovered, the second pass is not invoked.
-- The second pass, provided by compiler developers, takes the AST and
- produces output in the language and format of choice. A demonstration
- back end is provided in the release.
-
-HOW TO USE THIS SOFTWARE
-
-To create a complete compiler from OMG Interface Definition Language to a
-target language, compiler developers will:
-
-- Write a back end (BE) to take the internal representation of the input
- parsed and translate it to the target language and format. You will
- probably want to replace the BE directory in this source tree with your
- own BE directory
-- Link the BE with the sources provided here to produce a complete
- compiler.
-
-DOCUMENTATION
-
-The OMG Interface Definition Language is fully described in the CORBA
-documentation, Chapter 4. This document may be obtained from OMG.
-
-This release also provides the following documents:
-
-- This README file, describing the release
-- INSTALL, describing installation of the software
-- WRITING_A_BE contains all the information needed to start writing a back
- end for this distribution
-- CHANGES_IN_AST describes changes that affect migration of BEs written
- against version 1.2 to version 1.3.
-- CLI, describing the command line interface to the CFE
-- ROADMAP, describing the directory structure for the source code. This
- file will assist a developer in understanding the structure of the code
- and navigating it
-- PROBLEMS, describing a list of issues that may be addressed in future
- releases
-- BUG_REPORT, containing a form for use in reporting bugs and problems
- with the IDL CFE
-
-ENVIRONMENT
-
-The INSTALL file explains how to customize the software for specific
-platforms. The source distribution expects the following environment:
-
-- Sparcstation 1, 2, or 10 hardware
-- SunPro SparcWorks 3.x or 4.0
-
-As preconfigured, it compiles on Solaris 2.x. It can be reconfigured to
-compile on SunOS 4.x, HPUX or Apollo Domain OS. As far as is known, no use
-is made of Sun Make-specific features, and the Makefiles should be usable
-with other make programs.
-
-This release has been tested and is believed to operate correctly with:
-- SunPro Sparcworks 2.x and 3.0 on SunOS 4.1.x
-- SunPro Sparcworks 2.x and 3.0 on Solaris 2.3
-- g++ 2.5.8 on SunOS 4.1.x
-- g++ 2.5.8 on Solaris 2.3
-
-INSTALLATION
-
-This release is targetted for Sun workstations running Solaris 2.x. The
-process of installing this software is described in detail in the file
-INSTALL in this directory. The INSTALL file also describes how to customize
-the release for your own environment if it is different.
-
-KNOWN PROBLEMS
-
-A list of known deficiencies is provided in the file PROBLEMS in this
-directory. If you find a problem which is not mentioned in it, please
-report it as described below. Please read this file now to be apprised of
-the problems found so far with this release.
-
-COPYRIGHT
-
-This copyright notice appears on all files. Please read it!
-
-Copyright 1992, 1993, 1994 Sun Microsystems, Inc. Printed in the United
-States of America. All Rights Reserved.
-
-This product is protected by copyright and distributed under the following
-license restricting its use.
-
-The Interface Definition Language Compiler Front End (CFE) is made
-available for your use provided that you include this license and copyright
-notice on all media and documentation and the software program in which
-this product is incorporated in whole or part. You may copy and extend
-functionality (but may not remove functionality) of the Interface
-Definition Language CFE without charge, but you are not authorized to
-license or distribute it to anyone else except as part of a product or
-program developed by you or with the express written consent of Sun
-Microsystems, Inc. ("Sun").
-
-The names of Sun Microsystems, Inc. and any of its subsidiaries or
-affiliates may not be used in advertising or publicity pertaining to
-distribution of Interface Definition Language CFE as permitted herein.
-
-This license is effective until terminated by Sun for failure to comply
-with this license. Upon termination, you shall destroy or return all code
-and documentation for the Interface Definition Language CFE.
-
-INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED AS IS WITH NO WARRANTIES OF
-ANY KIND INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS
-FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR ARISING FROM A COURSE OF
-DEALING, USAGE OR TRADE PRACTICE.
-
-INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED WITH NO SUPPORT AND WITHOUT
-ANY OBLIGATION ON THE PART OF Sun OR ANY OF ITS SUBSIDIARIES OR AFFILIATES
-TO ASSIST IN ITS USE, CORRECTION, MODIFICATION OR ENHANCEMENT.
-
-SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES SHALL HAVE NO LIABILITY WITH
-RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY
-INTERFACE DEFINITION LANGUAGE CFE OR ANY PART THEREOF.
-
-IN NO EVENT WILL SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES BE LIABLE FOR
-ANY LOST REVENUE OR PROFITS OR OTHER SPECIAL, INDIRECT AND CONSEQUENTIAL
-DAMAGES, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-Use, duplication, or disclosure by the government is subject to
-restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in
-Technical Data and Computer Software clause at DFARS 252.227-7013 and FAR
-52.227-19.
-
-Sun, Sun Microsystems and the Sun logo are trademarks or registered
-trademarks of Sun Microsystems, Inc.
-
-SunSoft, Inc.
-2550 Garcia Avenue
-Mountain View, California 94043
-
-NOTE:
-
-SunOS, SunSoft, Sun, Solaris, Sun Microsystems or the Sun logo are
-trademarks or registered trademarks of Sun Microsystems, Inc.
diff --git a/TAO/TAO_IDL/ast/ast_annotation_appl.cpp b/TAO/TAO_IDL/ast/ast_annotation_appl.cpp
new file mode 100644
index 00000000000..d5987c7d6a0
--- /dev/null
+++ b/TAO/TAO_IDL/ast/ast_annotation_appl.cpp
@@ -0,0 +1,181 @@
+#include "ast_annotation_appl.h"
+#include "ast_annotation_member.h"
+
+AST_Annotation_Appl::Param::Param ()
+ : id (0),
+ expr (0),
+ used (false)
+{
+}
+
+AST_Decl::NodeType const AST_Annotation_Appl::NT = AST_Decl::NT_annotation_appl;
+
+AST_Annotation_Appl::AST_Annotation_Appl (
+ UTL_ScopedName *name, AST_Annotation_Appl::Params *params)
+ : AST_Decl (NT, name),
+ AST_Type (NT, name),
+ AST_ConcreteType (NT, name),
+ UTL_Scope (NT),
+ AST_Structure (name, false, false),
+ AST_Annotation_Decl (name),
+ original_name_ (name->get_string_copy ()),
+ params_ (params),
+ annotation_decl_ (0)
+{
+}
+
+AST_Annotation_Appl::~AST_Annotation_Appl ()
+{
+ delete [] original_name_;
+}
+
+void AST_Annotation_Appl::dump (ACE_OSTREAM_TYPE &o)
+{
+ dump_i (o, original_name_);
+ if (params_)
+ {
+ dump_i (o, "(");
+ Params::ITERATOR iter (*params_);
+ while (!iter.done ())
+ {
+ Param **i = 0;
+ iter.next (i);
+ if ((*i)->id)
+ {
+ (*i)->id->dump (o);
+ dump_i (o, " = ");
+ }
+ (*i)->expr->dump (o);
+ iter.advance ();
+ if (!iter.done ())
+ {
+ dump_i (o, ", ");
+ }
+ }
+ dump_i (o, ")");
+ }
+}
+
+int AST_Annotation_Appl::ast_accept (ast_visitor *)
+{
+ return 0;
+}
+
+void AST_Annotation_Appl::destroy ()
+{
+}
+
+const char *AST_Annotation_Appl::original_name () const
+{
+ return original_name_;
+}
+
+IMPL_NARROW_FROM_DECL (AST_Annotation_Appl)
+IMPL_NARROW_FROM_SCOPE (AST_Annotation_Appl)
+
+bool
+AST_Annotation_Appl::apply_from (AST_Annotation_Decl *decl)
+{
+ // Apply Each Member From the Annotation Declaration
+ for (UTL_ScopeActiveIterator si (
+ decl,
+ UTL_Scope::IK_decls);
+ !si.is_done ();
+ si.next ())
+ {
+ AST_Annotation_Member *member =
+ AST_Annotation_Member::narrow_from_decl (si.item ());
+ if (member)
+ {
+ AST_Annotation_Member *new_member = fe_add_annotation_member (
+ new AST_Annotation_Member (member->name (), member));
+
+ /*
+ * Check to see if we have a parameter that matches this. If not,
+ * make sure that the member has a default value.
+ */
+ Param *param = find_param (member->local_name ()->get_string ());
+ if (param)
+ {
+ new_member->value (new AST_Expression (param->expr, member->expr_type()));
+ if (new_member->invalid_value ())
+ {
+ idl_global->err ()->invalid_annotation_param_type (
+ this, member, param->expr);
+ return false;
+ }
+ param->used = true;
+ }
+ else if (!new_member->value ())
+ {
+ idl_global->err ()->annotation_param_missing_error (
+ this, member);
+ return false;
+ }
+ }
+ }
+
+ // Make sure all the parameters were used
+ if (params_)
+ {
+ for (Param::Iterator it (*params_);
+ !it.done (); it.advance ())
+ {
+ Param **param = 0;
+ it.next (param);
+ if ((*param) && !(*param)->used)
+ {
+ idl_global->err ()->invalid_annotation_param_error (
+ this, decl, (*param)->id);
+ return false;
+ }
+ }
+ }
+
+ annotation_decl_ = decl;
+
+ return true;
+}
+
+AST_Annotation_Appl::Params *
+AST_Annotation_Appl::params ()
+{
+ return params_;
+}
+
+AST_Annotation_Decl *
+AST_Annotation_Appl::annotation_decl ()
+{
+ return annotation_decl_;
+}
+
+AST_Annotation_Appl::Param *
+AST_Annotation_Appl::find_param (const char *name)
+{
+ if (params_)
+ {
+ // Check for single nameless parameter
+ if (params_->size () == 1)
+ {
+ Param *top = 0;
+ params_->top (top);
+ if (top && !top->id && top->expr)
+ {
+ // Don't reuse it if used
+ return top->used ? 0 : top;
+ }
+ }
+ for (Param::Iterator it (*params_);
+ !it.done (); it.advance ())
+ {
+ Param **param = 0;
+ it.next (param);
+ if ((*param) && (*param)->id && !ACE_OS::strcmp ((*param)->id->get_string (), name))
+ {
+ return (*param);
+ }
+ }
+ }
+
+ return 0;
+}
diff --git a/TAO/TAO_IDL/ast/ast_annotation_decl.cpp b/TAO/TAO_IDL/ast/ast_annotation_decl.cpp
new file mode 100644
index 00000000000..5ccaba059f2
--- /dev/null
+++ b/TAO/TAO_IDL/ast/ast_annotation_decl.cpp
@@ -0,0 +1,114 @@
+#include "ast_annotation_decl.h"
+#include "ast_annotation_member.h"
+#include "utl_indenter.h"
+#include "utl_identifier.h"
+#include "ast_constant.h"
+
+AST_Decl::NodeType const AST_Annotation_Decl::NT =
+ AST_Decl::NT_annotation_decl;
+
+AST_Annotation_Decl::AST_Annotation_Decl (UTL_ScopedName *name)
+ : AST_Decl (NT, name),
+ AST_Type (NT, name),
+ AST_ConcreteType (NT, name),
+ UTL_Scope (NT),
+ AST_Structure (name, false, false)
+{
+ if (!ACE_OS::strcmp(name->last_component ()->get_string (), "@annotation"))
+ {
+ idl_global->err ()-> misc_error(
+ "An Annotation can not be named \"annotation\"");
+ }
+}
+
+AST_Annotation_Decl::~AST_Annotation_Decl ()
+{
+}
+
+void AST_Annotation_Decl::dump (ACE_OSTREAM_TYPE &o)
+{
+ this->dump_i (o, "@annotation ");
+ AST_Decl::dump (o);
+ this->dump_i (o, " {\n");
+ UTL_Scope::dump (o);
+ idl_global->indent ()->skip_to (o);
+ this->dump_i (o, "}");
+}
+
+void AST_Annotation_Decl::destroy ()
+{
+ AST_Decl::destroy ();
+}
+
+IMPL_NARROW_FROM_DECL (AST_Annotation_Decl)
+IMPL_NARROW_FROM_SCOPE (AST_Annotation_Decl)
+
+void
+AST_Annotation_Decl::escape_name (Identifier *name)
+{
+ char *old_name = name->get_string ();
+ char *new_name = new char [ACE_OS::strlen (old_name) + 2]; // '@' and '\0'
+ if (new_name)
+ {
+ new_name[0] = '@';
+ new_name[1] = '\0';
+ ACE_OS::strcat (new_name, old_name);
+ name->replace_string (new_name);
+ delete [] new_name;
+ }
+}
+
+void
+AST_Annotation_Decl::escape_name (UTL_ScopedName *name)
+{
+ escape_name (name->last_component ());
+}
+
+bool
+AST_Annotation_Decl::annotatable () const
+{
+ return false;
+}
+
+AST_Annotation_Member *
+AST_Annotation_Decl::fe_add_annotation_member (
+ AST_Annotation_Member *annotation_member)
+{
+ AST_Decl *d = fe_add_decl (annotation_member);
+ if (d)
+ {
+ AST_Type *ft = annotation_member->field_type ();
+ UTL_ScopedName *mru = ft->last_referenced_as ();
+ if (mru)
+ {
+ add_to_referenced (ft, false, mru->first_component ());
+ }
+ }
+
+ AST_Annotation_Decl *s = AST_Annotation_Decl::narrow_from_scope (this);
+ if (s)
+ {
+ s->fields ().enqueue_tail (annotation_member);
+ }
+
+ return AST_Annotation_Member::narrow_from_decl (d);
+}
+
+AST_Constant *
+AST_Annotation_Decl::fe_add_constant (AST_Constant *t)
+{
+ return AST_Constant::narrow_from_decl (fe_add_decl (t));
+}
+
+int
+AST_Annotation_Decl::ast_accept (ast_visitor *visitor)
+{
+ ACE_UNUSED_ARG (visitor);
+ return 0;
+}
+
+bool
+AST_Annotation_Decl::ami_visit ()
+{
+ return false;
+}
diff --git a/TAO/TAO_IDL/ast/ast_annotation_member.cpp b/TAO/TAO_IDL/ast/ast_annotation_member.cpp
new file mode 100644
index 00000000000..40884ef5aae
--- /dev/null
+++ b/TAO/TAO_IDL/ast/ast_annotation_member.cpp
@@ -0,0 +1,109 @@
+/**
+ * Abstract Syntax Tree Node for a Member Value of an Annotation
+ */
+
+#include "ast_annotation_member.h"
+#include "ast_type.h"
+#include "utl_scope.h"
+
+#include "ast_enum.h"
+#include "ast_enum_val.h"
+
+AST_Decl::NodeType const AST_Annotation_Member::NT =
+ AST_Decl::NT_annotation_member;
+
+AST_Annotation_Member::AST_Annotation_Member (
+ AST_Expression::ExprType expr_type, AST_Type *type, UTL_ScopedName *name)
+ : AST_Decl (NT, name),
+ AST_Field (type, name, vis_NA),
+ expr_type_ (expr_type),
+ value_ (0)
+{
+}
+
+AST_Annotation_Member::AST_Annotation_Member (
+ AST_Decl::NodeType nt,
+ AST_Expression::ExprType expr_type, AST_Type *type, UTL_ScopedName *name)
+ : AST_Decl (nt, name),
+ AST_Field (nt, type, name, vis_NA),
+ expr_type_ (expr_type),
+ value_ (0)
+{
+}
+
+AST_Annotation_Member::AST_Annotation_Member (
+ UTL_ScopedName *name,
+ AST_Annotation_Member *other)
+ : AST_Decl (name, dynamic_cast<AST_Decl*>(other)),
+ AST_Field (name, dynamic_cast<AST_Field*>(other)),
+ expr_type_ (other->expr_type ()),
+ value_ (other->value () ?
+ new AST_Expression (other->value (), other->expr_type ()) : 0)
+{
+}
+
+AST_Annotation_Member::~AST_Annotation_Member ()
+{
+ delete value_;
+}
+
+void
+AST_Annotation_Member::destroy ()
+{
+ if (value_)
+ {
+ value_->destroy ();
+ }
+}
+
+IMPL_NARROW_FROM_DECL (AST_Annotation_Member);
+IMPL_NARROW_FROM_SCOPE (AST_Annotation_Member);
+
+void
+AST_Annotation_Member::dump (ACE_OSTREAM_TYPE &o)
+{
+ AST_Field::dump (o);
+ if (field_type () && value_)
+ {
+ dump_i (o, " default ");
+ if (field_type ()->node_type () == AST_Decl::NT_enum)
+ {
+ dynamic_cast<AST_Enum*> (field_type ())->
+ lookup_by_value (value_)->name ()->dump (o);
+ }
+ else
+ {
+ value_->dump (o);
+ }
+ }
+}
+
+AST_Expression *
+AST_Annotation_Member::value ()
+{
+ return value_;
+}
+
+void
+AST_Annotation_Member::value (AST_Expression *value)
+{
+ if (value_)
+ {
+ value_->destroy ();
+ delete value_;
+ }
+
+ value_ = value;
+}
+
+AST_Expression::ExprType
+AST_Annotation_Member::expr_type ()
+{
+ return expr_type_;
+}
+
+bool
+AST_Annotation_Member::invalid_value ()
+{
+ return !value () || !value ()->ev ();
+}
diff --git a/TAO/TAO_IDL/ast/ast_array.cpp b/TAO/TAO_IDL/ast/ast_array.cpp
index 6f4ed33f32a..a70329e4758 100644
--- a/TAO/TAO_IDL/ast/ast_array.cpp
+++ b/TAO/TAO_IDL/ast/ast_array.cpp
@@ -97,7 +97,8 @@ AST_Array::AST_Array (UTL_ScopedName *n,
n),
pd_n_dims (nd),
pd_base_type (0),
- owns_base_type_ (false)
+ owns_base_type_ (false),
+ base_type_annotations_ (0)
{
this->pd_dims = this->compute_dims (ds,
nd);
@@ -271,3 +272,15 @@ AST_Array::set_dims (AST_Expression **ds,
}
IMPL_NARROW_FROM_DECL(AST_Array)
+
+AST_Annotation_Appls *
+AST_Array::base_type_annotations()
+{
+ return base_type_annotations_;
+}
+
+void
+AST_Array::base_type_annotations(AST_Annotation_Appls *annotations)
+{
+ base_type_annotations_ = annotations;
+}
diff --git a/TAO/TAO_IDL/ast/ast_decl.cpp b/TAO/TAO_IDL/ast/ast_decl.cpp
index 394b6bfbdc2..34648949f09 100644
--- a/TAO/TAO_IDL/ast/ast_decl.cpp
+++ b/TAO/TAO_IDL/ast/ast_decl.cpp
@@ -62,16 +62,6 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
*/
-/*
- * AST_Decl is the base class for all AST nodes except AST_Expression.
- * AST_Decls have a node type (a value from the enum AST_Decl::NodeType)
- * and a name (a UTL_ScopedName).
- * Additionally AST_Decl nodes record the scope of definition, the
- * file name in which they were defined, the line on which they were
- * defined in that file, and a boolean denoting whether this is the
- * main file or an #include'd file.
- */
-
#include "ast_interface.h"
#include "ast_module.h"
#include "ast_array.h"
@@ -88,6 +78,8 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
#include "utl_scope.h"
#include "utl_err.h"
#include "ace/OS_NS_stdio.h"
+#include "ast_annotation_appl.h"
+#include "utl_indenter.h"
// FUZZ: disable check_for_streams_include
#include "ace/streams.h"
@@ -139,6 +131,8 @@ AST_Decl::AST_Decl (NodeType nt,
repoID_ (0),
flat_name_ (0),
contains_wstring_ (-1),
+ annotation_appls_ (0),
+ builtin_ (idl_global->in_eval_),
pd_imported (idl_global->imported ()),
pd_in_main_file (idl_global->in_main_file ()),
pd_defined_in (idl_global->scopes ().depth () > 0
@@ -177,6 +171,53 @@ AST_Decl::AST_Decl (NodeType nt,
this->compute_repoID ();
}
+AST_Decl::AST_Decl (
+ UTL_ScopedName *name,
+ AST_Decl *other)
+ : COMMON_Base (),
+ repoID_ (0),
+ flat_name_ (0),
+ contains_wstring_ (-1),
+ annotation_appls_ (0),
+ builtin_ (idl_global->in_eval_),
+ pd_imported (idl_global->imported ()),
+ pd_in_main_file (idl_global->in_main_file ()),
+ pd_defined_in (idl_global->scopes ().depth () > 0
+ ? idl_global->scopes ().top ()
+ : 0),
+ pd_node_type (other->node_type ()),
+ pd_line (idl_global->lineno ()),
+ pd_name (0),
+ pd_local_name (name ? name->last_component ()->copy () : 0),
+ pd_original_local_name (0),
+ full_name_ (0),
+ prefix_ (0),
+ version_ (0),
+ anonymous_ (other->anonymous ()),
+ typeid_set_ (false),
+ last_referenced_as_ (0),
+ prefix_scope_ (0),
+ in_tmpl_mod_not_aliased_ (idl_global->in_tmpl_mod_no_alias ())
+{
+ // If this is the root node, the filename won't have been set yet.
+ UTL_String *fn = idl_global->filename ();
+ this->pd_file_name = (fn ? fn->get_string () : "");
+
+ this->compute_full_name (name);
+
+ char *prefix = 0;
+ idl_global->pragma_prefixes ().top (prefix);
+ this->prefix_ = ACE::strnew (prefix ? prefix : "");
+
+ if (name)
+ {
+ // The function body creates its own copy.
+ this->original_local_name (name->last_component ());
+ }
+
+ this->compute_repoID ();
+}
+
AST_Decl::~AST_Decl (void)
{
}
@@ -805,12 +846,6 @@ AST_Decl::node_type_to_string (NodeType nt)
return "consumes";
// No useful output for these.
- case NT_enum_val:
- case NT_field:
- case NT_union_branch:
- case NT_op:
- case NT_argument:
- case NT_root:
default:
return "";
}
@@ -1533,3 +1568,113 @@ AST_Decl::in_tmpl_mod_not_aliased (bool val)
//Narrowing methods for AST_Decl.
IMPL_NARROW_FROM_DECL(AST_Decl)
+
+
+void AST_Decl::annotation_appls (AST_Annotation_Appls *annotations)
+{
+ if (annotatable ())
+ {
+ annotation_appls_ = annotations;
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("WARNING: %C is annotated but its type can't be annotated!\n"),
+ full_name ()
+ ));
+ }
+}
+
+AST_Annotation_Appls *AST_Decl::annotation_appls ()
+{
+ return annotation_appls_;
+}
+
+void
+AST_Decl::dump_annotations (ACE_OSTREAM_TYPE &o, bool print_inline)
+{
+ if (annotation_appls_)
+ {
+ for (size_t i = 0; i < annotation_appls_->size (); i++)
+ {
+ AST_Annotation_Appl *a = (*annotation_appls_)[i];
+ a->dump (o);
+ if (print_inline)
+ {
+ dump_i (o, " ");
+ }
+ else
+ {
+ dump_i (o, "\n");
+ // We need to indent the next line (or not if we are not indented)
+ idl_global->indent ()->skip_to (o);
+ }
+ }
+ }
+}
+
+void
+AST_Decl::dump_with_annotations (ACE_OSTREAM_TYPE &o, bool inline_annotations)
+{
+ if (annotatable () && auto_dump_annotations())
+ {
+ dump_annotations (o, inline_annotations);
+ }
+
+ dump (o);
+}
+
+ACE_OSTREAM_TYPE &
+operator<< (ACE_OSTREAM_TYPE &o, AST_Decl &d)
+{
+ d.dump_with_annotations (o, d.dump_annotations_inline ());
+
+ return o;
+}
+
+bool
+AST_Decl::annotatable () const
+{
+ return false;
+}
+
+bool
+AST_Decl::dump_annotations_inline () const
+{
+ return false;
+}
+
+bool
+AST_Decl::auto_dump_annotations () const
+{
+ return true;
+}
+
+bool
+AST_Decl::builtin () const
+{
+ return builtin_;
+}
+
+bool
+AST_Decl::should_be_dumped () const
+{
+ return !builtin () || idl_global->dump_builtins_;
+}
+
+AST_Annotation_Appls &
+AST_Decl::annotations ()
+{
+ if (!annotation_appls_)
+ {
+ annotation_appls_ = new AST_Annotation_Appls;
+ }
+
+ return *annotation_appls_;
+}
+
+bool
+AST_Decl::ami_visit ()
+{
+ return true;
+}
diff --git a/TAO/TAO_IDL/ast/ast_enum.cpp b/TAO/TAO_IDL/ast/ast_enum.cpp
index bd1e1c12443..6ad9afb3fc9 100644
--- a/TAO/TAO_IDL/ast/ast_enum.cpp
+++ b/TAO/TAO_IDL/ast/ast_enum.cpp
@@ -331,20 +331,29 @@ AST_Enum::dump (ACE_OSTREAM_TYPE &o)
this->local_name ()->dump (o);
this->dump_i (o, " {\n");
+ idl_global->indent ()->increase ();
+ idl_global->indent ()->skip_to (o);
// Must increment the iterator explicitly inside the loop.
for (UTL_ScopeActiveIterator i (this, IK_decls);!i.is_done ();)
{
d = i.item ();
+ d->dump_annotations (o, true /* print inline */);
d->local_name ()->dump (o);
i.next ();
- if (!i.is_done ())
+ if (i.is_done ())
+ {
+ this->dump_i (o, "\n");
+ }
+ else
{
- this->dump_i (o, ", ");
+ this->dump_i (o, ",\n");
+ idl_global->indent ()->skip_to (o);
}
}
+ idl_global->indent ()->decrease ();
idl_global->indent ()->skip_to (o);
this->dump_i (o, "}");
diff --git a/TAO/TAO_IDL/ast/ast_enum_val.cpp b/TAO/TAO_IDL/ast/ast_enum_val.cpp
index 0bfc81b2da9..eef74bb560a 100644
--- a/TAO/TAO_IDL/ast/ast_enum_val.cpp
+++ b/TAO/TAO_IDL/ast/ast_enum_val.cpp
@@ -79,7 +79,8 @@ AST_EnumVal::AST_EnumVal (ACE_CDR::ULong v,
AST_Constant (AST_Expression::EV_ulong,
AST_Decl::NT_enum_val,
new AST_Expression (v),
- n)
+ n),
+ enum_parent_ (0)
{
}
@@ -102,6 +103,16 @@ AST_EnumVal::ast_accept (ast_visitor *visitor)
return visitor->visit_enum_val (this);
}
+IMPL_NARROW_FROM_DECL(AST_EnumVal)
+AST_Enum *
+AST_EnumVal::enum_parent ()
+{
+ return enum_parent_;
+}
-IMPL_NARROW_FROM_DECL(AST_EnumVal)
+void
+AST_EnumVal::enum_parent (AST_Enum *node)
+{
+ enum_parent_ = node;
+}
diff --git a/TAO/TAO_IDL/ast/ast_expression.cpp b/TAO/TAO_IDL/ast/ast_expression.cpp
index aac7235ff2c..7a6bc510527 100644
--- a/TAO/TAO_IDL/ast/ast_expression.cpp
+++ b/TAO/TAO_IDL/ast/ast_expression.cpp
@@ -70,6 +70,7 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
#include "ast_param_holder.h"
#include "ast_visitor.h"
#include "ast_generator.h"
+#include "ast_enum_val.h"
#include "utl_err.h"
#include "utl_scope.h"
@@ -93,6 +94,7 @@ AST_Expression::fill_definition_details (void)
: 0 ;
this->pd_line = idl_global->lineno ();
this->pd_file_name = idl_global->filename ();
+ enum_parent (0);
}
// An AST_Expression denoting a symbolic name.
@@ -131,6 +133,7 @@ AST_Expression::AST_Expression (AST_Expression *v,
{
AST_Param_Holder *ph = v->param_holder_;
this->fill_definition_details ();
+ enum_parent (v->enum_parent ());
// If we are here because one string constant has
// another one as its rhs, we must copy the UTL_String
@@ -2511,6 +2514,12 @@ AST_Expression::eval_symbol (AST_Expression::EvalKind ek)
return 0;
}
+ if (d->node_type () == AST_Decl::NT_enum_val)
+ {
+ AST_EnumVal *enumval = AST_EnumVal::narrow_from_decl (d);
+ enum_parent (enumval->enum_parent ());
+ }
+
// OK, now evaluate the constant we just got, to produce its value.
c = AST_Constant::narrow_from_decl (d);
@@ -2850,28 +2859,19 @@ AST_Expression::operator== (AST_Expression *vc)
case EV_bool:
return this->pd_ev->u.lval == vc->ev ()->u.lval;
case EV_string:
- if (this->pd_ev->u.strval == 0)
- {
- return vc->ev ()->u.strval == 0;
- }
- else if (vc->ev ()->u.strval == 0)
- {
- return false;
- }
- else
- {
- return this->pd_ev->u.strval == vc->ev ()->u.strval;
- }
-
+ return !ACE_OS::strcmp (pd_ev->u.strval->get_string (),
+ vc->ev ()->u.strval->get_string ());
+ case EV_wstring:
+ return !ACE_OS::strcmp (pd_ev->u.wstrval, vc->ev ()->u.wstrval);
case EV_longlong:
return pd_ev->u.llval == vc->ev ()->u.llval;
case EV_ulonglong:
return pd_ev->u.ullval == vc->ev ()->u.ullval;
case EV_fixed:
return pd_ev->u.fixedval == vc->ev ()->u.fixedval;
- case EV_longdouble:
- case EV_wstring:
case EV_enum:
+ return pd_ev->u.eval == vc->ev ()->u.eval;
+ case EV_longdouble:
case EV_void:
case EV_none:
case EV_any:
@@ -3004,8 +3004,7 @@ dump_unary_expr (ACE_OSTREAM_TYPE &o,
// Dump the supplied AST_ExprValue to the ostream o.
static void
-dump_expr_val (ACE_OSTREAM_TYPE &o,
- AST_Expression::AST_ExprValue *ev)
+dump_expr_val (ACE_OSTREAM_TYPE &o, AST_Expression::AST_ExprValue *ev)
{
switch (ev->et)
{
@@ -3041,24 +3040,26 @@ dump_expr_val (ACE_OSTREAM_TYPE &o,
break;
case AST_Expression::EV_string:
if (ev->u.strval != 0)
- ev->u.strval->dump(o);
+ {
+ ev->u.strval->dump (o);
+ }
+ else
+ {
+ o << "(null string)";
+ }
+ break;
case AST_Expression::EV_longlong:
-// o << ev->u.llval;
- break;
+ o << ev->u.llval;
+ break;
case AST_Expression::EV_ulonglong:
-// o << ev->u.ullval;
+ o << ev->u.ullval;
break;
case AST_Expression::EV_fixed:
o << ev->u.fixedval;
break;
- case AST_Expression::EV_longdouble:
- case AST_Expression::EV_wstring:
case AST_Expression::EV_enum:
- case AST_Expression::EV_none:
- case AST_Expression::EV_void:
- case AST_Expression::EV_any:
- case AST_Expression::EV_object:
- break;
+ default:
+ o << "(Can not dump this type)";
}
}
@@ -3069,8 +3070,7 @@ AST_Expression::dump (ACE_OSTREAM_TYPE &o)
// See if it was a constant or was evaluated already.
if (this->pd_ev != 0)
{
- dump_expr_val (o,
- this->pd_ev);
+ dump_expr_val (o, this->pd_ev);
return;
}
@@ -3321,3 +3321,66 @@ AST_Expression::set_n (UTL_ScopedName *new_n)
{
this->pd_n = new_n;
}
+
+const char *
+AST_Expression::exprtype_to_string (ExprType t)
+{
+ switch (t) {
+ case AST_Expression::EV_short:
+ return "short";
+ case AST_Expression::EV_ushort:
+ return "unsigned short";
+ case AST_Expression::EV_long:
+ return "long";
+ case AST_Expression::EV_ulong:
+ return "unsigned long";
+ case AST_Expression::EV_float:
+ return "float";
+ case AST_Expression::EV_double:
+ return "double";
+ case AST_Expression::EV_char:
+ return "char";
+ case AST_Expression::EV_octet:
+ return "octet";
+ case AST_Expression::EV_bool:
+ return "boolean";
+ case AST_Expression::EV_string:
+ return "string";
+ case AST_Expression::EV_enum:
+ return "enum";
+ case AST_Expression::EV_void:
+ return "void";
+ case AST_Expression::EV_none:
+ return "none";
+ case AST_Expression::EV_wchar:
+ return "wchar";
+ case AST_Expression::EV_longlong:
+ return "longlong";
+ case AST_Expression::EV_ulonglong:
+ return "ulonglong";
+ case AST_Expression::EV_longdouble:
+ return "longdouble";
+ case AST_Expression::EV_wstring:
+ return "wstring";
+ case AST_Expression::EV_any:
+ return "any";
+ case AST_Expression::EV_object:
+ return "object";
+ case AST_Expression::EV_fixed:
+ return "fixed";
+ default:
+ return "<UNKNOWN TYPE>";
+ }
+}
+
+AST_Enum *
+AST_Expression::enum_parent ()
+{
+ return enum_parent_;
+}
+
+void
+AST_Expression::enum_parent (AST_Enum *node)
+{
+ enum_parent_ = node;
+}
diff --git a/TAO/TAO_IDL/ast/ast_field.cpp b/TAO/TAO_IDL/ast/ast_field.cpp
index 528297592c2..15f5d97b957 100644
--- a/TAO/TAO_IDL/ast/ast_field.cpp
+++ b/TAO/TAO_IDL/ast/ast_field.cpp
@@ -150,11 +150,23 @@ AST_Field::AST_Field (AST_Decl::NodeType nt,
}
}
+AST_Field::AST_Field (
+ UTL_ScopedName *name,
+ AST_Field *other)
+ : COMMON_Base (),
+ AST_Decl (name, dynamic_cast<AST_Decl*>(other)),
+ ref_type_ (other->field_type ()),
+ visibility_ (other->visibility ()),
+ owns_base_type_ (false)
+{
+ // We definitely don't own the base type and the param holder check shouldn't
+ // be an issue here.
+}
+
AST_Field::~AST_Field (void)
{
}
-// Dump this AST_Field node to the ostream o.
void
AST_Field::dump (ACE_OSTREAM_TYPE &o)
{
@@ -210,6 +222,12 @@ AST_Field::visibility (void) const
return this->visibility_;
}
+void
+AST_Field::visibility (AST_Field::Visibility val)
+{
+ visibility_ = val;
+}
+
int
AST_Field::contains_wstring (void)
{
@@ -217,3 +235,8 @@ AST_Field::contains_wstring (void)
}
IMPL_NARROW_FROM_DECL(AST_Field)
+
+bool AST_Field::annotatable () const
+{
+ return true;
+}
diff --git a/TAO/TAO_IDL/ast/ast_generator.cpp b/TAO/TAO_IDL/ast/ast_generator.cpp
index 195fe037dd7..0c1c673aca6 100644
--- a/TAO/TAO_IDL/ast/ast_generator.cpp
+++ b/TAO/TAO_IDL/ast/ast_generator.cpp
@@ -104,6 +104,8 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
#include "ast_factory.h"
#include "ast_finder.h"
#include "ast_fixed.h"
+#include "ast_annotation_appl.h"
+#include "ast_annotation_member.h"
#include "utl_identifier.h"
@@ -1158,3 +1160,32 @@ AST_Generator::create_param_holder (
return retval;
}
+AST_Annotation_Decl *
+AST_Generator::create_annotation_decl (
+ UTL_ScopedName *name)
+{
+ AST_Annotation_Decl *retval = 0;
+ ACE_NEW_RETURN (retval, AST_Annotation_Decl (name), 0);
+ return retval;
+}
+
+AST_Annotation_Appl *
+AST_Generator::create_annotation_appl (
+ UTL_ScopedName *name,
+ AST_Annotation_Appl::Params *params)
+{
+ AST_Annotation_Appl *retval = 0;
+ ACE_NEW_RETURN (retval, AST_Annotation_Appl (name, params), 0);
+ return retval;
+}
+
+AST_Annotation_Member *
+AST_Generator::create_annotation_member (
+ AST_Expression::ExprType expr_type,
+ AST_Type *type,
+ UTL_ScopedName *name)
+{
+ AST_Annotation_Member *retval = 0;
+ ACE_NEW_RETURN (retval, AST_Annotation_Member (expr_type, type, name), 0);
+ return retval;
+}
diff --git a/TAO/TAO_IDL/ast/ast_module.cpp b/TAO/TAO_IDL/ast/ast_module.cpp
index 7c6ecc1e7a0..b428d3c5dd6 100644
--- a/TAO/TAO_IDL/ast/ast_module.cpp
+++ b/TAO/TAO_IDL/ast/ast_module.cpp
@@ -642,3 +642,10 @@ AST_Module::reset_last_in_same_parent_scope (void)
this->last_in_same_parent_scope_ = this;
}
+AST_Annotation_Decl *
+AST_Module::fe_add_annotation_decl (
+ AST_Annotation_Decl *annotation_decl)
+{
+ return AST_Annotation_Decl::narrow_from_decl (
+ fe_add_decl (annotation_decl));
+}
diff --git a/TAO/TAO_IDL/ast/ast_sequence.cpp b/TAO/TAO_IDL/ast/ast_sequence.cpp
index 13466274df4..842129085ac 100644
--- a/TAO/TAO_IDL/ast/ast_sequence.cpp
+++ b/TAO/TAO_IDL/ast/ast_sequence.cpp
@@ -73,6 +73,7 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
#include "ast_expression.h"
#include "ast_param_holder.h"
#include "ast_visitor.h"
+#include "ast_annotation_appl.h"
#include "utl_identifier.h"
#include "utl_err.h"
@@ -104,7 +105,8 @@ AST_Sequence::AST_Sequence (AST_Expression *ms,
pd_max_size (ms),
pd_base_type (bt),
unbounded_ (true),
- owns_base_type_ (false)
+ owns_base_type_ (false),
+ base_type_annotations_ (0)
{
FE_Utils::tmpl_mod_ref_check (this, bt);
@@ -211,6 +213,16 @@ void
AST_Sequence::dump (ACE_OSTREAM_TYPE &o)
{
this->dump_i (o, "sequence <");
+ if (base_type_annotations ())
+ {
+ size_t count = base_type_annotations ()->size ();
+ for (size_t i = 0; i < count; i++)
+ {
+ AST_Annotation_Appl *a = (*base_type_annotations ())[i];
+ a->dump (o);
+ dump_i (o, " ");
+ }
+ }
this->pd_base_type->dump (o);
this->dump_i (o, ", ");
this->pd_max_size->dump (o);
@@ -273,3 +285,15 @@ AST_Sequence::destroy (void)
}
IMPL_NARROW_FROM_DECL(AST_Sequence)
+
+AST_Annotation_Appls *
+AST_Sequence::base_type_annotations()
+{
+ return base_type_annotations_;
+}
+
+void
+AST_Sequence::base_type_annotations(AST_Annotation_Appls *annotations)
+{
+ base_type_annotations_ = annotations;
+}
diff --git a/TAO/TAO_IDL/ast/ast_structure.cpp b/TAO/TAO_IDL/ast/ast_structure.cpp
index 3e7fc1f83a5..2a360d28c17 100644
--- a/TAO/TAO_IDL/ast/ast_structure.cpp
+++ b/TAO/TAO_IDL/ast/ast_structure.cpp
@@ -77,6 +77,7 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
#include "utl_string.h"
#include "utl_err.h"
#include "utl_indenter.h"
+#include "utl_identifier.h"
#include "ace/Truncate.h"
@@ -587,3 +588,45 @@ AST_Structure::destroy (void)
IMPL_NARROW_FROM_DECL(AST_Structure)
IMPL_NARROW_FROM_SCOPE(AST_Structure)
+bool AST_Structure::annotatable () const
+{
+ return true;
+}
+
+AST_Decl *
+AST_Structure::operator[] (const size_t index)
+{
+ size_t count = member_count_ <= 0 ? 0 : member_count_;
+ if (index >= count)
+ {
+ return 0;
+ }
+ size_t i = 0;
+ for (UTL_ScopeActiveIterator si (this, UTL_Scope::IK_decls);
+ !si.is_done ();
+ si.next ())
+ {
+ if (i == index)
+ {
+ return si.item ();
+ }
+ i++;
+ }
+ return 0;
+}
+
+AST_Decl *
+AST_Structure::operator[] (const char* name)
+{
+ for (UTL_ScopeActiveIterator si (this, UTL_Scope::IK_decls);
+ !si.is_done ();
+ si.next ())
+ {
+ AST_Decl *field = si.item ();
+ const char *field_name = field->local_name ()->get_string ();
+ if (!ACE_OS::strcmp (name, field_name)) {
+ return field;
+ }
+ }
+ return 0;
+}
diff --git a/TAO/TAO_IDL/ast/ast_typedef.cpp b/TAO/TAO_IDL/ast/ast_typedef.cpp
index db07a34bbe8..38fc2080164 100644
--- a/TAO/TAO_IDL/ast/ast_typedef.cpp
+++ b/TAO/TAO_IDL/ast/ast_typedef.cpp
@@ -74,6 +74,9 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
#include "ace/Log_Msg.h"
+// FUZZ: disable check_for_streams_include
+#include "ace/streams.h"
+
AST_Decl::NodeType const
AST_Typedef::NT = AST_Decl::NT_typedef;
@@ -89,12 +92,17 @@ AST_Typedef::AST_Typedef (AST_Type *bt,
n),
AST_Field (AST_Decl::NT_typedef,
bt,
- n)
+ n),
+ cached_annotations_ (0)
{
}
AST_Typedef::~AST_Typedef (void)
{
+ if (!cached_annotations_)
+ {
+ delete cached_annotations_;
+ }
}
// Given a typedef node, traverse the chain of base types until they are no
@@ -148,10 +156,10 @@ AST_Typedef::owns_base_type (bool val)
// Dump this AST_Typedef node to the ostream o.
void
-AST_Typedef::dump (ACE_OSTREAM_TYPE&o)
+AST_Typedef::dump (ACE_OSTREAM_TYPE &o)
{
this->dump_i (o, "typedef ");
- this->ref_type_->dump (o);
+ o << *ref_type_;
this->dump_i (o, " ");
this->local_name ()->dump (o);
}
@@ -193,3 +201,35 @@ AST_Typedef::destroy (void)
}
IMPL_NARROW_FROM_DECL(AST_Typedef)
+
+AST_Annotation_Appls &
+AST_Typedef::annotations ()
+{
+ if (!cached_annotations_)
+ {
+ cached_annotations_ = new AST_Annotation_Appls;
+
+ if (base_type ())
+ {
+ AST_Annotation_Appls &next = base_type ()->annotations ();
+ for (size_t i = 0; i < next.size (); i++)
+ {
+ cached_annotations_->push_back (next[i]);
+ }
+ }
+
+ /*
+ * Done after so it's easier for later annotations to override
+ * older ones.
+ */
+ if (annotation_appls ()) {
+ AST_Annotation_Appls &appls = *annotation_appls ();
+ for (size_t i = 0; i < appls.size (); i++)
+ {
+ cached_annotations_->push_back (appls[i]);
+ }
+ }
+ }
+
+ return *cached_annotations_;
+}
diff --git a/TAO/TAO_IDL/ast/ast_union.cpp b/TAO/TAO_IDL/ast/ast_union.cpp
index eec05414e03..1d3c906c483 100644
--- a/TAO/TAO_IDL/ast/ast_union.cpp
+++ b/TAO/TAO_IDL/ast/ast_union.cpp
@@ -84,6 +84,7 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
#include "utl_identifier.h"
#include "utl_indenter.h"
#include "global_extern.h"
+#include "ast_annotation_appl.h"
// FUZZ: disable check_for_streams_include
#include "ace/streams.h"
@@ -104,7 +105,8 @@ AST_Union::AST_Union (AST_ConcreteType *dt,
AST_Structure (n,
local,
abstract),
- default_index_ (-2)
+ default_index_ (-2),
+ disc_annotations_ (0)
{
this->default_value_.computed_ = -2;
@@ -969,6 +971,16 @@ AST_Union::dump (ACE_OSTREAM_TYPE &o)
o << "union ";
this->local_name ()->dump (o);
o << " switch (";
+ if (disc_annotations ())
+ {
+ size_t count = disc_annotations ()->size ();
+ for (size_t i = 0; i < count; i++)
+ {
+ AST_Annotation_Appl *a = (*disc_annotations ())[i];
+ a->dump (o);
+ dump_i (o, " ");
+ }
+ }
this->pd_disc_type->local_name ()->dump (o);
o << ") {\n";
UTL_Scope::dump (o);
@@ -1036,3 +1048,15 @@ AST_Union::udisc_type (void)
IMPL_NARROW_FROM_DECL(AST_Union)
IMPL_NARROW_FROM_SCOPE(AST_Union)
+
+AST_Annotation_Appls *
+AST_Union::disc_annotations()
+{
+ return disc_annotations_;
+}
+
+void
+AST_Union::disc_annotations(AST_Annotation_Appls *annotations)
+{
+ disc_annotations_ = annotations;
+}
diff --git a/TAO/TAO_IDL/ast/ast_union_branch.cpp b/TAO/TAO_IDL/ast/ast_union_branch.cpp
index e2f72a2ada5..e0a205b9a87 100644
--- a/TAO/TAO_IDL/ast/ast_union_branch.cpp
+++ b/TAO/TAO_IDL/ast/ast_union_branch.cpp
@@ -73,6 +73,7 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
#include "ast_enum.h"
#include "ast_enum_val.h"
#include "ast_visitor.h"
+#include "utl_indenter.h"
#include "utl_labellist.h"
#include "fe_extern.h"
@@ -103,7 +104,8 @@ AST_UnionBranch::~AST_UnionBranch (void)
void
AST_UnionBranch::dump (ACE_OSTREAM_TYPE &o)
{
- for (unsigned long i = 0; i < this->label_list_length (); ++i)
+ unsigned long l = this->label_list_length ();
+ for (unsigned long i = 0; i < l; ++i)
{
this->dump_i (o, "case ");
@@ -111,9 +113,14 @@ AST_UnionBranch::dump (ACE_OSTREAM_TYPE &o)
ul->dump (o);
this->dump_i (o, ":\n");
+ if (i != l - 1) idl_global->indent ()->skip_to (o);
}
+ idl_global->indent ()->increase ();
+ idl_global->indent ()->skip_to (o);
+ AST_Field::dump_annotations (o, true /* print inline */);
AST_Field::dump (o);
+ idl_global->indent ()->decrease ();
}
int
diff --git a/TAO/TAO_IDL/ast/ast_visitor.cpp b/TAO/TAO_IDL/ast/ast_visitor.cpp
index 7c6f66859e5..662179b4154 100644
--- a/TAO/TAO_IDL/ast/ast_visitor.cpp
+++ b/TAO/TAO_IDL/ast/ast_visitor.cpp
@@ -13,3 +13,8 @@ int ast_visitor::visit_fixed (AST_Fixed *)
{
return 0;
}
+
+int ast_visitor::visit_annotation_decl (AST_Annotation_Decl *)
+{
+ return 0;
+}
diff --git a/TAO/TAO_IDL/be/be_global.cpp b/TAO/TAO_IDL/be/be_global.cpp
index 32d6caf4ecc..ac181d2a2cc 100644
--- a/TAO/TAO_IDL/be/be_global.cpp
+++ b/TAO/TAO_IDL/be/be_global.cpp
@@ -2809,6 +2809,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT ("IDL: I don't understand the '%C' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
break;
case 'b':
@@ -2824,6 +2825,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT (" the '%C' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
break;
// = Various 'c'lient side stub file_name_endings.
@@ -2853,6 +2855,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT ("IDL: I don't understand the '%C' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
break;
// = Various 's'erver side skeleton file name endings.
@@ -2890,6 +2893,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT ("IDL: I don't understand the '%C' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
break;
// Operation lookup strategy.
@@ -2902,6 +2906,7 @@ BE_GlobalData::parse_args (long &i, char **av)
{
ACE_ERROR ((LM_ERROR,
ACE_TEXT ("no selection for -H option\n")));
+ idl_global->parse_args_exit (1);
}
else if (ACE_OS::strcmp (av[i+1], "dynamic_hash") == 0)
{
@@ -2925,6 +2930,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT ("%C: unknown operation lookup <%C>\n"),
av[0],
av[i + 1]));
+ idl_global->parse_args_exit (1);
}
++i;
@@ -2955,6 +2961,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT (" the '%C' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
}
else
@@ -2964,6 +2971,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT ("IDL: I don't understand the '%C' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
break;
@@ -2992,6 +3000,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT (" the '%C' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
break;
@@ -3018,8 +3027,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT (" specified by -o option\n"),
av[i + 1]
));
-
- break;
+ idl_global->parse_args_exit (1);
}
be_global->output_dir (av[i + 1]);
@@ -3047,7 +3055,7 @@ BE_GlobalData::parse_args (long &i, char **av)
av[i + 1]
));
- break;
+ idl_global->parse_args_exit (1);
}
be_global->anyop_output_dir (av[i + 1]);
@@ -3061,6 +3069,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT (" the '%C' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
}
else if (av[i][2] == 'E')
@@ -3085,7 +3094,7 @@ BE_GlobalData::parse_args (long &i, char **av)
av[i + 1]
));
- break;
+ idl_global->parse_args_exit (1);
}
be_global->exec_output_dir (av[i + 1]);
@@ -3099,25 +3108,27 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT (" the '%C' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
}
else if (av[i][2] == 'N')
- {
- if (av[i][3] == '\0')
- {
- // Don't overwrite exec files.
- be_global->overwrite_not_exec (true);
- }
- else
- {
- ACE_ERROR ((
- LM_ERROR,
- ACE_TEXT ("IDL: I don't understand")
- ACE_TEXT (" the '%C' option\n"),
- av[i]
- ));
- }
- }
+ {
+ if (av[i][3] == '\0')
+ {
+ // Don't overwrite exec files.
+ be_global->overwrite_not_exec (true);
+ }
+ else
+ {
+ ACE_ERROR ((
+ LM_ERROR,
+ ACE_TEXT ("IDL: I don't understand")
+ ACE_TEXT (" the '%C' option\n"),
+ av[i]
+ ));
+ idl_global->parse_args_exit (1);
+ }
+ }
else if (av[i][2] == 'S')
{
if (av[i][3] == '\0')
@@ -3140,7 +3151,7 @@ BE_GlobalData::parse_args (long &i, char **av)
av[i + 1]
));
- break;
+ idl_global->parse_args_exit (1);
}
be_global->skel_output_dir (av[i + 1]);
@@ -3154,6 +3165,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT (" the '%C' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
}
else
@@ -3164,6 +3176,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT (" the '%C' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
break;
@@ -3266,6 +3279,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT ("the '%C' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
break;
@@ -3296,6 +3310,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT ("the '%s' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
break;
@@ -3316,6 +3331,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT ("the '%s' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
break;
@@ -3328,6 +3344,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT ("the '%s' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
break;
@@ -3347,6 +3364,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT ("the '%C' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
break;
@@ -3376,6 +3394,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT ("the '%C' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
break;
}
@@ -3394,6 +3413,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT ("the '%C' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
break;
}
@@ -3421,6 +3441,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT ("the '%s' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
break;
@@ -3440,6 +3461,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT ("the '%C' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
}
else if (av[i][2] == 'o')
@@ -3457,6 +3479,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT ("the '%C' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
}
else if (av[i][2] == 'I')
@@ -3513,11 +3536,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT (" the '%C' option\n"),
av[i]
));
-
- idl_global->set_compile_flags (
- idl_global->compile_flags ()
- | IDL_CF_ONLY_USAGE
- );
+ idl_global->parse_args_exit (1);
}
}
}
@@ -3534,6 +3553,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT ("IDL: I don't understand the '%C' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
break;
@@ -3620,6 +3640,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT ("IDL: I don't understand the '%C' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
}
else if (av[i][2] == 'm')
@@ -3642,6 +3663,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT ("IDL: I don't understand the '%C' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
}
else if (av[i][2] == 's')
@@ -3663,6 +3685,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT ("IDL: I don't understand the '%C' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
}
else if (av[i][2] == 'e')
@@ -3683,6 +3706,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT ("IDL: I don't understand the '%C' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
break;
@@ -3700,6 +3724,7 @@ BE_GlobalData::parse_args (long &i, char **av)
ACE_TEXT ("IDL: I don't understand the '%C' option\n"),
av[i]
));
+ idl_global->parse_args_exit (1);
}
break;
@@ -3710,9 +3735,7 @@ BE_GlobalData::parse_args (long &i, char **av)
av[i]
));
- idl_global->set_compile_flags (idl_global->compile_flags ()
- | IDL_CF_ONLY_USAGE);
- break;
+ idl_global->parse_args_exit (1);
}
}
diff --git a/TAO/TAO_IDL/be/be_init.cpp b/TAO/TAO_IDL/be/be_init.cpp
index 0bc55c7d168..691eb0056cd 100644
--- a/TAO/TAO_IDL/be/be_init.cpp
+++ b/TAO/TAO_IDL/be/be_init.cpp
@@ -18,6 +18,8 @@ BE_init (int &, ACE_TCHAR *[])
BE_GlobalData,
-1);
+ idl_global->default_idl_version_ = IDL_VERSION_3;
+
return 0;
}
diff --git a/TAO/TAO_IDL/be/be_visitor_ami_pre_proc.cpp b/TAO/TAO_IDL/be/be_visitor_ami_pre_proc.cpp
index f4c58efd32a..d9b13eba963 100644
--- a/TAO/TAO_IDL/be/be_visitor_ami_pre_proc.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_ami_pre_proc.cpp
@@ -837,7 +837,7 @@ be_visitor_ami_pre_proc::visit_scope (be_scope *node)
// Continue until each element is visited.
while (elem_number < number_of_elements)
{
- AST_Decl *d = elements[elem_number];
+ AST_Decl *d = elements[elem_number++];
if (!d)
{
@@ -850,6 +850,11 @@ be_visitor_ami_pre_proc::visit_scope (be_scope *node)
}
+ if (!d->ami_visit())
+ {
+ continue;
+ }
+
be_decl *bd = be_decl::narrow_from_decl (d);
// Set the scope node as "node" in which the code is being
@@ -859,8 +864,6 @@ be_visitor_ami_pre_proc::visit_scope (be_scope *node)
// Set the node to be visited.
this->ctx_->node (bd);
- ++elem_number;
-
// Send the visitor.
if (bd == 0 || bd->accept (this) == -1)
diff --git a/TAO/TAO_IDL/be/be_visitor_field/cdr_op_cs.cpp b/TAO/TAO_IDL/be/be_visitor_field/cdr_op_cs.cpp
index 8e4bf84e19a..9c336055a34 100644
--- a/TAO/TAO_IDL/be/be_visitor_field/cdr_op_cs.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_field/cdr_op_cs.cpp
@@ -977,17 +977,10 @@ be_visitor_cdr_op_field_decl::visit_array (be_array *node)
case TAO_CodeGen::TAO_CDR_INPUT:
case TAO_CodeGen::TAO_CDR_OUTPUT:
*os << fname << "_forany "
- << "_tao_aggregate_" << f->local_name () << be_idt << be_idt_nl
- << "#if defined __IBMCPP__ && __IBMCPP__ <= 800" << be_nl
- << "((" << fname << "_slice*) (" << be_nl
- << "#else" << be_nl
- << "(const_cast<" << be_idt << be_idt_nl
- << fname << "_slice*> (" << be_uidt << be_uidt_nl
- << "#endif" << be_idt << be_idt_nl
- << "_tao_aggregate." << f->local_name () << be_uidt_nl
- << ")" << be_uidt << be_uidt_nl
- << ");" << be_uidt_nl;
-
+ << "_tao_aggregate_" << f->local_name () << be_idt_nl
+ << "(const_cast<" << fname << "_slice*> (" << be_idt_nl
+ << "_tao_aggregate." << f->local_name () << "));" << be_uidt
+ << be_uidt_nl;
break;
case TAO_CodeGen::TAO_CDR_SCOPE:
default:
diff --git a/TAO/TAO_IDL/be/be_visitor_scope.cpp b/TAO/TAO_IDL/be/be_visitor_scope.cpp
index 6605b8ebcce..c2902c45dc5 100644
--- a/TAO/TAO_IDL/be/be_visitor_scope.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_scope.cpp
@@ -62,6 +62,11 @@ be_visitor_scope::visit_scope (be_scope *node)
-1);
}
+ if (d->node_type () == AST_Decl::NT_annotation_decl)
+ {
+ continue;
+ }
+
be_decl *bd = be_decl::narrow_from_decl (d);
// Set the scope node as "node" in which the code is being
diff --git a/TAO/TAO_IDL/be/be_visitor_union/union.cpp b/TAO/TAO_IDL/be/be_visitor_union/union.cpp
index 89107416742..9ed497927ac 100644
--- a/TAO/TAO_IDL/be/be_visitor_union/union.cpp
+++ b/TAO/TAO_IDL/be/be_visitor_union/union.cpp
@@ -171,19 +171,15 @@ be_visitor_union_cdr_op_cs::pre_process (be_decl *bd)
}
this->latest_branch_ = boolean_branch (b);
- switch (this->latest_branch_)
- {
- case BUB_TRUE:
- case BUB_FALSE:
+ if (this->latest_branch_ != BUB_NONE) {
+ if (this->latest_branch_ != BUB_UNCONDITIONAL) {
*os << "if (" << (this->latest_branch_ == BUB_TRUE ? "" : "!")
<< (this->ctx_->sub_state () == TAO_CodeGen::TAO_CDR_OUTPUT ?
"_tao_union._d ()" : "_tao_discriminant") << ")" << be_idt_nl
<< "{" << be_idt_nl;
- case BUB_UNCONDITIONAL:
- return 0;
- default:
- break;
}
+ return 0;
+ }
*os << be_nl;
diff --git a/TAO/TAO_IDL/be_include/be_global.h b/TAO/TAO_IDL/be_include/be_global.h
index a84c642cf7d..c989a617de9 100644
--- a/TAO/TAO_IDL/be_include/be_global.h
+++ b/TAO/TAO_IDL/be_include/be_global.h
@@ -929,7 +929,9 @@ public:
/// implementations in IDL and IFR backends.
ACE_CString spawn_options (void);
- /// Parse args that affect the backend.
+ /**
+ * Parse an argument that the frontend did not recognize.
+ */
void parse_args (long &i, char **av);
private:
diff --git a/TAO/TAO_IDL/docs/ANNOUNCEMENT b/TAO/TAO_IDL/docs/ANNOUNCEMENT
deleted file mode 100644
index 870db6f6006..00000000000
--- a/TAO/TAO_IDL/docs/ANNOUNCEMENT
+++ /dev/null
@@ -1,131 +0,0 @@
-WHAT:
-
-SunSoft, Inc., Mountain View, California, has placed the source code to
-Project DOE's Interface Definition Language (IDL) compiler front end
-(CFE) on OMG's file server, making the implementation publicly
-available. This release is identified by the version number 1.3.
-
-Project DOE is SunSoft's corporate-wide development effort to integrate
-distributed object technology into the Solaris O/S. OMG (Object Management
-Group) is the industry wide body formed to create specifications for
-distributed object technology. It currently has more than 370 members. OMG
-IDL is part of OMG's CORBA 1.1 specification and provides a standardized
-way for defining object interfaces. OMG IDL forms the basis for distributed
-object interactionin Project DOE.
-
-The SunSoft OMG IDL CFE provides a complete framework for building
-CORBA 1.1-compliant preprocessors for OMG IDL. By using this standard
-implementation, developers of OMG IDL compilers will save many months
-of work and enhance the portability and interoperability of OMG
-IDL-interfaced objects.
-
-The SunSoft OMG IDL CFE allows convenient and fast integration of new back
-ends to the compiler. The release consists of a front end which converts
-OMG IDL to an intermediate format, a compiler framework driver, an example
-implementation of a compiler back end, and a set of protocols for
-interaction between the front and back ends. The SunSoft OMG IDL CFE
-parser uses components generated by yacc and lex.
-
-The SunSoft OMG IDL CFE is designed to allow easy extension of OMG IDL
-without impacting existing back-end implementations. As the CORBA
-specification evolves, any new updates to the IDE CFE will be placed
-by SunSoft on the OMG server.
-
-This release provides a directory with many examples of OMG IDL
-specifications to allow users to become familiar with the process of
-writing OMG IDL code.
-
-For more information send email to idl-cfe@sun.com.
-
-HOW:
-
-The SunSoft OMG IDL CFE is available at no charge through anonymous FTP
-in source form on the OMG file server, omg.org. Please retrieve the
-file OMG_IDL_CFE_1.3.tar.Z from the directory pub/OMG_IDL_CFE_1.3. Please
-let us know who you are if you retrieve the compiler front end using this
-method, by sending email to idl-cfe@sun.com.
-
-You can also retrieve the software by using the OMG mail server program.
-Send email with the subject 'help' to omg_idl@omg.org, and the mail server
-will respond with instructions on how to retrieve the software.
-
-WHEN:
-
-The SunSoft OMG IDL CFE is available now.
-
-CONTACT:
-
-Please let us know who you are if you decide to use this software, and how
-you use it. Please send email to:
-
- idl-cfe@sun.com
-
-This address can also be used to report problems, bugs, suggestions and
-send general comments.
-
-We ask that if you make extensions or modifications to this source release,
-please make these extensions available to others using the OMG IDL compiler
-front end, by sending the modified sources to the above email address. This
-will help us evaluate your extensions for inclusion in a future version. It
-also ensures your investment in these extensions when new versions of the
-CFE are released.
-
-NOTE:
-
-SunOS, SunSoft, Sun, Solaris, Sun Microsystems or the Sun logo are
-trademarks or registered trademarks of Sun Microsystems, Inc.
-
-COPYRIGHT NOTICE:
-
-Copyright 1992, 1993, 1994 Sun Microsystems, Inc. Printed in the United
-States of America. All Rights Reserved.
-
-This product is protected by copyright and distributed under the following
-license restricting its use.
-
-The Interface Definition Language Compiler Front End (CFE) is made
-available for your use provided that you include this license and copyright
-notice on all media and documentation and the software program in which
-this product is incorporated in whole or part. You may copy and extend
-functionality (but may not remove functionality) of the Interface
-Definition Language CFE without charge, but you are not authorized to
-license or distribute it to anyone else except as part of a product or
-program developed by you or with the express written consent of Sun
-Microsystems, Inc. ("Sun").
-
-The names of Sun Microsystems, Inc. and any of its subsidiaries or
-affiliates may not be used in advertising or publicity pertaining to
-distribution of Interface Definition Language CFE as permitted herein.
-
-This license is effective until terminated by Sun for failure to comply
-with this license. Upon termination, you shall destroy or return all code
-and documentation for the Interface Definition Language CFE.
-
-INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED AS IS WITH NO WARRANTIES OF
-ANY KIND INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS
-FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR ARISING FROM A COURSE OF
-DEALING, USAGE OR TRADE PRACTICE.
-
-INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED WITH NO SUPPORT AND WITHOUT
-ANY OBLIGATION ON THE PART OF Sun OR ANY OF ITS SUBSIDIARIES OR AFFILIATES
-TO ASSIST IN ITS USE, CORRECTION, MODIFICATION OR ENHANCEMENT.
-
-SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES SHALL HAVE NO LIABILITY WITH
-RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY
-INTERFACE DEFINITION LANGUAGE CFE OR ANY PART THEREOF.
-
-IN NO EVENT WILL SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES BE LIABLE FOR
-ANY LOST REVENUE OR PROFITS OR OTHER SPECIAL, INDIRECT AND CONSEQUENTIAL
-DAMAGES, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-Use, duplication, or disclosure by the government is subject to
-restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in
-Technical Data and Computer Software clause at DFARS 252.227-7013 and FAR
-52.227-19.
-
-Sun, Sun Microsystems and the Sun logo are trademarks or registered
-trademarks of Sun Microsystems, Inc.
-
-SunSoft, Inc.
-2550 Garcia Avenue
-Mountain View, California 94043
diff --git a/TAO/TAO_IDL/docs/CHANGES b/TAO/TAO_IDL/docs/CHANGES
deleted file mode 100644
index ae6fca7bcea..00000000000
--- a/TAO/TAO_IDL/docs/CHANGES
+++ /dev/null
@@ -1,122 +0,0 @@
-CHANGES WHICH AFFECT BE WRITERS
--=============================-
-
-INTRODUCTION
-
-This file describes changes that affect BE writers. It contains IMPORTANT
-INFORMATION for BE writers who wish to migrate a BE written to operate with
-release 1.2 to operate with release 1.3. It is likely that not following
-these instructions will result in a compilable but malfunctioning compiler.
-
-AST INHERITANCE CHANGES
-
-The AST has been reorganized so that AST_Union and AST_Exception now
-inherit from AST_Structure. This means that constructors of BE classes
-which inherit from AST_Union or AST_Exception now need to explicitly call
-an initializer for AST_Structure in their init section.
-
-We repeat below the information given in the file WRITING_A_BE, in the
-section entitled "WRITING A BE".
-
-AST_EXCEPTION
-
-The signature for constructors of classes inheriting from AST_Exception
-should now be:
-
- BE_Exception::BE_Exception(UTL_ScopedName *n,
- UTL_StrList *p)
- : AST_Decl(AST_Decl::NT_except, n, p),
- AST_Structure(AST_Decl::NT_except, n, p),
- UTL_Scope(AST_Decl::NT_except)
-
-AST_UNION
-
-The signature for constructors of classes inheriting from AST_Union should
-now be:
-
- BE_Union::BE_Union(AST_ConcreteType *dt,
- UTL_ScopedName *n,
- UTL_StrList *p)
- : AST_Union(dt, n, p),
- AST_Structure(AST_Decl::NT_union, n, p),
- AST_Decl(AST_Decl::NT_union, n, p),
- UTL_Scope(AST_Decl::NT_union)
-
-IDL_BOOL TYPE
-
-To increase portability and reduce dependency of the sources on POSIX
-compliance in targets of ports, IDL now provides its own boolean type which
-is named idl_bool. It provides two truth values, I_TRUE and I_FALSE.
-
-UTL_SCOPEDNAME TYPE
-
-The UTL_ScopedName type is now a list of Identifier nodes; in previous
-releases it used to be a list of String nodes. If your BE constructs scoped
-names this change will prevent recompilation until you modify your
-constructor calls to invoke constructors for Identifier instead of for
-String. The signature of the constructor is:
-
- Identifier::Identifier(char *, long x=1, long y=0, long z=I_FALSE)
-
-The additional arguments which can be defaulted to the values indicated are
-included for future use.
-
-COPYRIGHT
-
-Copyright 1992, 1993, 1994 Sun Microsystems, Inc. Printed in the United
-States of America. All Rights Reserved.
-
-This product is protected by copyright and distributed under the following
-license restricting its use.
-
-The Interface Definition Language Compiler Front End (CFE) is made
-available for your use provided that you include this license and copyright
-notice on all media and documentation and the software program in which
-this product is incorporated in whole or part. You may copy and extend
-functionality (but may not remove functionality) of the Interface
-Definition Language CFE without charge, but you are not authorized to
-license or distribute it to anyone else except as part of a product or
-program developed by you or with the express written consent of Sun
-Microsystems, Inc. ("Sun").
-
-The names of Sun Microsystems, Inc. and any of its subsidiaries or
-affiliates may not be used in advertising or publicity pertaining to
-distribution of Interface Definition Language CFE as permitted herein.
-
-This license is effective until terminated by Sun for failure to comply
-with this license. Upon termination, you shall destroy or return all code
-and documentation for the Interface Definition Language CFE.
-
-INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED AS IS WITH NO WARRANTIES OF
-ANY KIND INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS
-FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR ARISING FROM A COURSE OF
-DEALING, USAGE OR TRADE PRACTICE.
-
-INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED WITH NO SUPPORT AND WITHOUT
-ANY OBLIGATION ON THE PART OF Sun OR ANY OF ITS SUBSIDIARIES OR AFFILIATES
-TO ASSIST IN ITS USE, CORRECTION, MODIFICATION OR ENHANCEMENT.
-
-SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES SHALL HAVE NO LIABILITY WITH
-RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY
-INTERFACE DEFINITION LANGUAGE CFE OR ANY PART THEREOF.
-
-IN NO EVENT WILL SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES BE LIABLE FOR
-ANY LOST REVENUE OR PROFITS OR OTHER SPECIAL, INDIRECT AND CONSEQUENTIAL
-DAMAGES, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-Use, duplication, or disclosure by the government is subject to
-restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in
-Technical Data and Computer Software clause at DFARS 252.227-7013 and FAR
-52.227-19.
-
-Sun, Sun Microsystems and the Sun logo are trademarks or registered
-trademarks of Sun Microsystems, Inc.
-
-SunSoft, Inc.
-2550 Garcia Avenue
-Mountain View, California 94043
-
-NOTE:
-
-SunOS, SunSoft, Sun, Solaris, Sun Microsystems or the Sun logo are
-trademarks or registered trademarks of Sun Microsystems, Inc.
diff --git a/TAO/TAO_IDL/docs/README.md b/TAO/TAO_IDL/docs/README.md
new file mode 100644
index 00000000000..f9a0bacbda0
--- /dev/null
+++ b/TAO/TAO_IDL/docs/README.md
@@ -0,0 +1,54 @@
+# TAO\_IDL Developer Documentation
+
+## Topics
+
+- [Historical Document Describing How to Write a Backend](WRITING_A_BE).
+- [Creating Annotations for IDLv4](annotations.md)
+- [Less Relevant Historical Documents from Sun](historical)
+
+## TAO\_IDL Layout
+
+TAO\_IDL is broken up into a few different modules, these can be generalized
+as:
+
+- `AST`
+ - "Abstract Syntax Tree"
+ - Nodes representing the Abstract Syntax Tree
+- `FE`
+ - "Front End"
+ - Parsing functionality that generates the Abstract Syntax Tree.
+ - Among other things, contains the Bison grammar `fe/idl.ypp` and Flex
+ token `fe/idl.ll` files.
+- `BE`
+ - "Back End"
+ - Transformed Abstract Syntax Tree
+- `UTL`
+ - "Util"
+ - Utility Classes and Functions.
+ - Contains class for the `idl_global` singleton which is made up of
+ `include/idl_global.h` and `utl/utl_global.cpp`.
+- `DRV`
+ - "Driver"
+ - The `tao_idl` program it self which drives the other modules.
+
+Lacking namespaces for the most part, in TAO\_IDL function and class names
+generally start with these modules, using the "C" way of emulating namespaces.
+
+The modules are broken into these places on the file system:
+
+- `include`
+ - Contains the header files for AST, FE, and UTL modules.
+- `ast`
+ - Contains the source files for AST modules classes.
+- `fe`
+ - Contains the source files and some header files for the FE module
+- `be_include`
+ - Contains the header files for the BE module.
+- `be`
+ - Contains the source files for the BE module.
+- `driver`
+ - Contains some parts of DRV.
+- `util`
+ - Contains the souce files for the UTL module.
+- `narrow`
+ - Leftover from a custom casting system.
diff --git a/TAO/TAO_IDL/docs/WRITING_A_BE b/TAO/TAO_IDL/docs/WRITING_A_BE
index 5c3c069f7a1..e0141e8987b 100644
--- a/TAO/TAO_IDL/docs/WRITING_A_BE
+++ b/TAO/TAO_IDL/docs/WRITING_A_BE
@@ -1,3 +1,8 @@
+WARNING! This document is historical but left out of the historical directory
+because it describes the basic architecture of the compiler that mostly still
+apply as of writing. Refer to the code itself for up to date information such
+as what AST Nodes are in use.
+
OMG INTERFACE DEFINITION LANGUAGE COMPILER FRONT END PROTOCOLS
==============================================================
diff --git a/TAO/TAO_IDL/docs/annotations.md b/TAO/TAO_IDL/docs/annotations.md
new file mode 100644
index 00000000000..29975088b96
--- /dev/null
+++ b/TAO/TAO_IDL/docs/annotations.md
@@ -0,0 +1,502 @@
+# Implementing Annotations
+
+**How to use the internal API to implement built-in annotations in `tao_idl` or a
+compiler that uses `tao_idl`.**
+
+**Table of Contents:**
+
+<!-- vim-markdown-toc GFM -->
+
+* [IDL Annotations](#idl-annotations)
+ * [Special Cases of Annotations](#special-cases-of-annotations)
+ * [Unions Discriminators](#unions-discriminators)
+ * [Base Types in Sequences](#base-types-in-sequences)
+ * [Base Types in Arrays](#base-types-in-arrays)
+* [Defining Annotations](#defining-annotations)
+ * [`@document` Example](#document-example)
+ * [What Can Go in Annotations](#what-can-go-in-annotations)
+* [Reading Annotations in the AST](#reading-annotations-in-the-ast)
+ * [Reading `@document` Annotations](#reading-document-annotations)
+ * [Reading Annotations Manually](#reading-annotations-manually)
+ * [Reading Special Cases of Annotations](#reading-special-cases-of-annotations)
+ * [Unions Discriminators](#unions-discriminators-1)
+ * [Base Types in Sequences](#base-types-in-sequences-1)
+ * [Base Types in Arrays](#base-types-in-arrays-1)
+* [Limitations](#limitations)
+
+<!-- vim-markdown-toc -->
+
+## IDL Annotations
+
+Annotations are a feature of IDLv4 that allows IDL authors to pass hints to the
+IDL compiler that can change compiler behavior and code generation. They are
+similar to some uses of `#pragma`, but are more powerful because they are
+integrated with IDL and are more expressive. In the latest IDL specification as
+of writing, version 4.2, they are described in section 7.4.15.1.
+
+Annotations exist in other languages like Java, Python (as decorators), and C#
+(as attributes). Like Java and Python, annotations can appear in front of
+declarations, have `@` at the beginning, and can look like function call.
+
+Here is what an example of IDL using some OMG standard annotations might look
+like:
+
+```
+enum Urgency_t {
+ SUPPLEMENTARY,
+ @default_literal INFORMATIVE,
+ CRITICAL
+};
+
+@unit("Hour(s)")
+@range(min=0,max=23)
+typedef short Hours_t;
+
+@unit("Day(s)")
+typedef unsigned long Days_t;
+
+struct Time_t {
+ Hours_t hours;
+ Days_t days;
+};
+
+@mutable
+struct Report {
+ @key
+ unsigned long index;
+
+ @optional
+ Expiration_t expiration;
+
+ @optional
+ Urgency_t urgency;
+
+ string message;
+};
+```
+
+### Special Cases of Annotations
+
+Annotations "may be applied to any IDL constructs or sub-constructs", as
+defined by the OMG. This is very vague and the OMG has not clarified this as of
+IDL 4.2. [(Also see Limitation #1)](#limitation1). What can be said about it
+though is that other than before normal declarations, like before structs,
+typedefs, and constants, in TAO\_IDL as of writing, annotations can also be
+applied in the following cases. See ["Reading Special Cases of
+Annotations"](#reading-special-cases-of-annotations) for how to have the
+compiler use these kinds of annotations.
+
+#### Unions Discriminators
+
+```
+enum GradeType {
+ PASS_FAIL,
+ PASS_70,
+ PASS_80
+};
+union Grade (@key GradeType) {
+case PASS_FAIL:
+ boolean pass;
+case PASS_70:
+case PASS_80:
+default:
+ short grade;
+};
+```
+
+#### Base Types in Sequences
+
+```
+struct Event {
+ short data;
+};
+typedef sequence<@external Report, 12> Dozen_Events;
+```
+
+#### Base Types in Arrays
+
+```
+struct Event {
+ short data;
+};
+typedef Dozen_Events Event @external [12];
+```
+
+## Defining Annotations
+
+Annotations should be defined after the AST is initialized and ready to be
+used, but before any user defined IDL is processed. The recommended place for
+this is `BE_post_init ()` which is located in `be/be_init.cpp` in `tao_idl`.
+Annotations are nodes in the AST and could be defined by hand, simulating what
+happens in `fe/idl.yy`. However a string parsing utility has been added just
+for this purpose, `idl_global->eval (const char* idl)`. `eval ()` processes IDL
+as if it were in an IDL file so annotations can be defined using the IDL
+annotation notation.
+
+### `@document` Example
+
+As a simple example, If we wanted to make a annotation that inserted comments
+into the product files for documentation purposes, we could design an
+annotation like this this:
+
+```
+@annotation document {
+ enum API_Type {
+ INTERNAL_API,
+ USER_API,
+ LEGACY_API
+ };
+ string comment;
+ API_Type api_type default INTERNAL_API;
+ boolean deprecated default FALSE;
+};
+```
+
+To use it without defining it in every IDL file, we need to embed it into
+`BE_post_init()`.
+
+```C++
+void BE_post_init (char *[], long)
+{
+ // ...
+ if (idl_global->idl_version_ > IDL_VERSION_3)
+ {
+ idl_global->eval (
+ "@annotation document {\n"
+ " enum API_Type {\n"
+ " INTERNAL_API,\n"
+ " USER_API,\n"
+ " LEGACY_API\n"
+ " };\n"
+ " string comment;\n"
+ " API_Type api_type default INTERNAL_API;\n"
+ " boolean deprecated default FALSE;\n"
+ "};\n"
+ );
+ }
+ // ...
+}
+```
+
+The new lines aren't strictly necessary but might help if a syntax error occurs
+because it will refer to the line number of this string as though it was a file
+called "builtin". This might not be helpful as it could be, because it won't
+distinguish between multiple calls to `eval` when reporting an error.
+
+By default TAO\_IDL uses IDL3 and this will cause an error when parsing the
+annotations. Version is controlled using `--idl-version` command line argument
+and ultimately `idl_global->idl_version_`. In the example above we would have
+to pass `--idl-version 4`.
+
+We can set it to use IDL4 by default in `BE_init ()`:
+
+```C++
+int BE_init (int &, ACE_TCHAR *[])
+{
+ // ...
+ idl_global->default_idl_version_ = IDL_VERSION_4;
+ // ...
+}
+
+void BE_post_init (char *[], long)
+{
+ // Same as above ...
+}
+```
+
+In TAO\_IDL, `idl_global->default_idl_version_` sets `idl_global->idl_version_`
+after `BE_init` is called but before arguments are parsed. This gives the user
+a chance to override it if they really want to and allows them to query the
+version we're setting using `--default-idl-version`.
+
+Alternatively if it is desired to retain compatibility with older versions of
+TAO, use the `TAO_IDL_HAS_ANNOTATIONS` macro.
+
+```C++
+int BE_init (int &, ACE_TCHAR *[])
+{
+ // ...
+#ifdef TAO_IDL_HAS_ANNOTATIONS
+ idl_global->default_idl_version_ = IDL_VERSION_4;
+#endif
+ // ...
+}
+
+void BE_post_init (char *[], long)
+{
+ // ...
+#ifdef TAO_IDL_HAS_ANNOTATIONS
+ if (idl_global->idl_version_ > IDL_VERSION_3)
+ {
+ idl_global->eval (
+ // ...
+ );
+ }
+#endif
+ // ...
+}
+```
+
+This would also be used when reading the annotations later.
+
+<a name="document-usage"></a>
+Once the annotation is declared, it can be used in IDL:
+
+```
+@document("Struct with 1 member")
+struct struct1 {
+ short x;
+};
+
+@document(
+ comment="Struct with 2 members",
+ api_type=USER_API
+)
+struct struct2 {
+ short x, y;
+};
+
+@document(
+ comment="Struct with 3 members",
+ api_type=LEGACY_API,
+ deprecated=TRUE
+)
+struct struct3 {
+ short x, y, z;
+};
+```
+
+However it won't do anything because nothing using the AST is looking for it,
+so it will be ignored. To make the program aware of the annotations, see
+["Reading Annotations in the AST"](#reading-annotations-in-the-ast) below.
+
+### What Can Go in Annotations
+
+- Annotations members can be of any type that constants can be. This includes
+booleans, integers, floats, enumerations, characters, and strings.
+- Enumerations, constants, and typedefs can be declared inside the annotation
+declaration, however they can not used outside the annotation expect for when
+passing them as parameters to the same annotation. Otherwise normal scope rules
+apply: Valid constant types and values from outside the annotation can be used
+inside it.
+
+## Reading Annotations in the AST
+
+To get the annotations for most nodes types, get a reference or pointer to the
+`ACE_Vector` of Annotations using `node->annotations()` and pass it to
+`UTL_find_annotation` to get the annotation. From there use index operators
+`[]` on the annotation to get the individual members and `value()` to get the
+value. The last part is not straightforward, as we have to deal with the
+`AST_Expression` class which is the internal class of TAO\_IDL that holds
+constant values.
+
+Internally, annotation local names are prefixed with `@` to prevent clashes
+with other elements in IDL with the same name. For example when trying to use
+`UTL_find_annotation` with annotation named `bar` in a module named `foo`, the
+proper internal scoped name to pass as the second argument is either
+`foo::@bar` or `::foo::@bar` if we want to be explicit that `foo` is in the
+root module.
+
+### Reading `@document` Annotations
+
+In this example we will use the [`@document` annotation defined
+above](#document-example) to generate Doxygen comments in the C++ code
+generated. For simplicity's sake, we will limit this example to structs defined
+in TAO client headers. This can be accomplished by modifying the struct
+visitor in `be/be_visitor_structure/structure_ch.cpp`.
+
+At the top of the file, these includes should be added:
+
+```C++
+#include "ast_annotation_member.h"
+#include "utl_annotations.h"
+#include "utl_string.h"
+#include "ast_enum_val.h"
+```
+
+About midway though the file, in
+`int be_visitor_structure_ch::visit_structure (be_structure *node)`
+right before
+```C++
+*os << be_nl_2
+ << "struct " // ...
+```
+these lines would also need to be added:
+
+```C++
+ AST_Annotation_Appl *document =
+ UTL_find_annotation (node->annotations (), "::@document");
+ if (document)
+ {
+ const char *comment =
+ AST_Annotation_Member::narrow_from_decl ((*document)["comment"])->
+ value ()->ev ()->u.strval->get_string ();
+
+ bool deprecated =
+ AST_Annotation_Member::narrow_from_decl ((*document)["deprecated"])->
+ value ()->ev ()->u.bval;
+
+ /*
+ * This is more complicated because we are trying to get the name of
+ * the enumerator. If we just wanted the number value, we could treat the
+ * AST_Expresssion from the annotation member as a unsigned long by using
+ * ev()->u.ulval.
+ */
+ const char *api_type = 0;
+ AST_Expression *api_type_val =
+ AST_Annotation_Member::narrow_from_decl ((*document)["api_type"])->
+ value ();
+ AST_Enum *api_type_enum = api_type_val->enum_parent();
+ if (api_type_enum)
+ {
+ AST_EnumVal *enum_val =
+ api_type_enum->lookup_by_value (api_type_val);
+ if (enum_val)
+ {
+ api_type = enum_val->local_name ()->get_string ();
+ }
+ }
+
+ *os
+ << "/**" << be_nl
+ << " * " << comment << be_nl
+ ;
+
+ if (api_type)
+ {
+ *os
+ << " *" << be_nl
+ << " * API_TYPE: " << api_type << be_nl
+ ;
+ }
+
+ if (deprecated)
+ {
+ *os
+ << " *" << be_nl
+ << " * \\deprecated This is deprecated" << be_nl
+ ;
+ }
+ *os << " */";
+ }
+```
+
+Using the [`@document` use example from above](#document-usage), these are
+inserted into the client header file:
+
+```C++
+// ...
+/**
+ * Struct with 1 member
+ *
+ * API_TYPE: INTERNAL_API
+ */
+struct struct1
+{
+ // ...
+};
+
+// ...
+
+/**
+ * Struct with 2 members
+ *
+ * API_TYPE: USER_API
+ */
+struct struct2
+{
+ // ...
+};
+
+/**
+ * Struct with 3 members
+ *
+ * API_TYPE: LEGACY_API
+ *
+ * \deprecated This is deprecated
+ */
+struct struct3
+{
+ // ...
+};
+// ...
+```
+
+#### Reading Annotations Manually
+
+`UTL_find_annotation` is convenient but only returns the last annotation of the
+passed annotation type. If we want the first one, handle multiple annotations
+of the same type, or read all the annotations, we will have to do what
+`UTL_find_annotation` is doing for us, which is just iterating over the
+`ACE_Vector` of `AST_Annotation_Appl`.
+
+```C++
+ AST_Annotation_Appls &annotations;
+ AST_Annotation_Decl *annotation;
+ for (AST_Annotation_Appls::iterator i = annotations.begin ();
+ i != annotations.end (); ++i)
+ {
+ AST_Annotation_Appl *appl = *i;
+ if (appl && appl->annotation_decl () == annotation)
+ {
+ // Do work with annotation application
+ }
+ }
+```
+
+### Reading Special Cases of Annotations
+
+Annotations placed before a definition in a scope are interpreted as annotating
+the node that is being defined. Annotations in other places require special
+grammar and special handling in the API.
+
+The following cases shows how to get the last annotation called `anno` from
+these special cases.
+
+If a type is `typedef`-ed, resolve it completely using `AST_Type
+*primitive_base_type ()` and `dynamic_cast` to the correct type before trying
+to read these special cases.
+
+#### Unions Discriminators
+
+**[See IDL Example](#unions-discriminators)**
+
+```C++
+ AST_Union *node;
+ AST_Annotation_Appl *document =
+ UTL_find_annotation (node->disc_annotations (), "::@anno");
+```
+
+#### Base Types in Sequences
+
+**[See IDL Example](#base-types-in-sequences)**
+
+```C++
+ AST_Sequence *node;
+ AST_Annotation_Appl *document =
+ UTL_find_annotation (node->base_type_annotations (), "::@anno");
+```
+
+#### Base Types in Arrays
+
+**[See IDL Example](#base-types-in-arrays)**
+
+```C++
+ AST_Array *node;
+ AST_Annotation_Appl *document =
+ UTL_find_annotation (node->base_type_annotations (), "::@anno");
+```
+
+## Limitations
+
+The current limitations exist in TAO\_IDL annotation implementation as of writing:
+
+<a name="limitation1"></a>
+1. Because of lack of a proper grammar specification in IDL for where
+ annotations can go, annotations in places other than before declarations in
+ scopes and other places listed above will result in syntax errors, even if
+ they work with other IDL tools.
+
+2. Even though this is implicitly allowed by the IDL specification, Annotations
+ whose local names clash with IDL keywords are not supported. This includes
+ the OMG standard annotations `default` and `oneway`.
diff --git a/TAO/TAO_IDL/ANNOUNCEMENT b/TAO/TAO_IDL/docs/historical/ANNOUNCEMENT
index 870db6f6006..870db6f6006 100644
--- a/TAO/TAO_IDL/ANNOUNCEMENT
+++ b/TAO/TAO_IDL/docs/historical/ANNOUNCEMENT
diff --git a/TAO/TAO_IDL/docs/BUG_REPORT b/TAO/TAO_IDL/docs/historical/BUG_REPORT
index 28c34ae141d..28c34ae141d 100644
--- a/TAO/TAO_IDL/docs/BUG_REPORT
+++ b/TAO/TAO_IDL/docs/historical/BUG_REPORT
diff --git a/TAO/TAO_IDL/CHANGES b/TAO/TAO_IDL/docs/historical/CHANGES
index ae6fca7bcea..ae6fca7bcea 100644
--- a/TAO/TAO_IDL/CHANGES
+++ b/TAO/TAO_IDL/docs/historical/CHANGES
diff --git a/TAO/TAO_IDL/docs/CLI b/TAO/TAO_IDL/docs/historical/CLI
index a61c2bae365..a61c2bae365 100644
--- a/TAO/TAO_IDL/docs/CLI
+++ b/TAO/TAO_IDL/docs/historical/CLI
diff --git a/TAO/TAO_IDL/docs/INSTALL b/TAO/TAO_IDL/docs/historical/INSTALL
index 6fcaa710042..6fcaa710042 100644
--- a/TAO/TAO_IDL/docs/INSTALL
+++ b/TAO/TAO_IDL/docs/historical/INSTALL
diff --git a/TAO/TAO_IDL/docs/PROBLEMS b/TAO/TAO_IDL/docs/historical/PROBLEMS
index 65cfb6a1893..65cfb6a1893 100644
--- a/TAO/TAO_IDL/docs/PROBLEMS
+++ b/TAO/TAO_IDL/docs/historical/PROBLEMS
diff --git a/TAO/TAO_IDL/docs/README b/TAO/TAO_IDL/docs/historical/README
index 700c1c1a707..700c1c1a707 100644
--- a/TAO/TAO_IDL/docs/README
+++ b/TAO/TAO_IDL/docs/historical/README
diff --git a/TAO/TAO_IDL/docs/ROADMAP b/TAO/TAO_IDL/docs/historical/ROADMAP
index 5da0d83823c..5da0d83823c 100644
--- a/TAO/TAO_IDL/docs/ROADMAP
+++ b/TAO/TAO_IDL/docs/historical/ROADMAP
diff --git a/TAO/TAO_IDL/driver/drv_args.cpp b/TAO/TAO_IDL/driver/drv_args.cpp
index 31e4984c9b2..f2ef45176fa 100644
--- a/TAO/TAO_IDL/driver/drv_args.cpp
+++ b/TAO/TAO_IDL/driver/drv_args.cpp
@@ -76,6 +76,7 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
#include "be_util.h"
#include "ace/OS_NS_stdio.h"
+#include "ace/OS_NS_stdlib.h"
#include "ace/OS_NS_unistd.h"
#include "ace/os_include/os_ctype.h"
#include "ace/Lib_Find.h"
@@ -83,6 +84,8 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
extern long DRV_nfiles;
extern char *DRV_files[];
+void process_long_option(long ac, char **av, long &i);
+
// Push a file into the list of files to be processed
void
DRV_push_file (const char *s)
@@ -118,94 +121,64 @@ void
DRV_usage (void)
{
ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("%C: usage: %C [flag | file]*\n"),
+ ACE_TEXT ("%C: usage: %C [[flag|file] ...] [-- file ...]\n"),
idl_global->prog_name (),
idl_global->prog_name ()));
ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("Legal flags:\n")));
- ACE_DEBUG ((
- LM_DEBUG,
- ACE_TEXT (" -A...\t\t\tlocal implementation-specific escape\n")
- ));
- ACE_DEBUG ((
- LM_DEBUG,
- ACE_TEXT (" -Cw\t\t\tWarning if identifier spellings differ ")
- ACE_TEXT ("only in case (default is error)\n")
- ));
- ACE_DEBUG ((
- LM_DEBUG,
- ACE_TEXT (" -Ce\t\t\tError if identifier spellings differ ")
- ACE_TEXT ("only in case (default)\n")
- ));
- ACE_DEBUG ((
- LM_DEBUG,
- ACE_TEXT (" -ae\t\t\tError if anonymous type is seen ")
- ACE_TEXT ("(default)\n")
- ));
- ACE_DEBUG ((
- LM_DEBUG,
- ACE_TEXT (" -aw\t\t\tWarning if anonymous type is seen ")
- ACE_TEXT ("(default is error)\n")
- ));
- ACE_DEBUG ((
- LM_DEBUG,
- ACE_TEXT (" -as\t\t\tSilences the anonymous type diagnostic ")
- ACE_TEXT ("(default is error)\n")
- ));
- ACE_DEBUG ((
- LM_DEBUG,
- ACE_TEXT (" -d\t\t\tOutputs (to stdout) a dump of the AST\n")
- ));
- ACE_DEBUG ((
- LM_DEBUG,
- ACE_TEXT (" -Dname[=value]\t\tdefines name for preprocessor\n")
- ));
- ACE_DEBUG ((
- LM_DEBUG,
- ACE_TEXT (" -E\t\t\truns preprocessor only, prints on stdout\n")
- ));
- ACE_DEBUG ((
- LM_DEBUG,
- ACE_TEXT (" -Idir\t\t\tincludes dir in search path for preprocessor\n")
- ));
- ACE_DEBUG ((
- LM_DEBUG,
- ACE_TEXT (" -t\t\t\tTemporary directory to be used")
- ACE_TEXT (" by the IDL compiler.\n")
- ));
- ACE_DEBUG ((
- LM_DEBUG,
- ACE_TEXT (" -u\t\t\tprints usage message and exits\n")
- ));
- ACE_DEBUG ((
- LM_DEBUG,
- ACE_TEXT (" -Uname\t\t\tundefines name for preprocessor\n")
- ));
- ACE_DEBUG ((
- LM_DEBUG,
- ACE_TEXT (" -v\t\t\ttraces compilation stages\n")
- ));
- ACE_DEBUG ((
- LM_DEBUG,
- ACE_TEXT (" -V\t\t\tprints version info then exits\n")
- ));
- ACE_DEBUG ((
- LM_DEBUG,
- ACE_TEXT (" -w\t\t\tsuppresses IDL compiler warning messages\n")
- ));
- ACE_DEBUG ((
- LM_DEBUG,
- ACE_TEXT (" -Wp,<arg1,...,argn>\tpasses args to preprocessor\n")
- ));
- ACE_DEBUG ((
- LM_DEBUG,
- ACE_TEXT (" -Yp,path\t\tdefines location of preprocessor\n")
- ));
+ ACE_TEXT ("Legal flags:\n")
+ ACE_TEXT (" -h | --help | -u\tPrint this list and exit successfully\n")
+ ACE_TEXT (" -A...\t\t\tlocal implementation-specific escape\n")
+ ACE_TEXT (" -Cw\t\t\tWarning if identifier spellings differ ")
+ ACE_TEXT ("only in case (default is error)\n")
+ ACE_TEXT (" -Ce\t\t\tError if identifier spellings differ ")
+ ACE_TEXT ("only in case (default)\n")
+ ACE_TEXT (" -ae\t\t\tError if anonymous type is seen ")
+ ACE_TEXT ("(default)\n")
+ ACE_TEXT (" -aw\t\t\tWarning if anonymous type is seen ")
+ ACE_TEXT ("(default is error)\n")
+ ACE_TEXT (" -as\t\t\tSilences the anonymous type diagnostic ")
+ ACE_TEXT ("(default is error)\n")
+ ACE_TEXT (" -d | --dump\t\tPrints a dump of the AST and exits\n")
+ ACE_TEXT (" -Dname[=value]\t\tdefines name for preprocessor\n")
+ ACE_TEXT (" -E\t\t\truns preprocessor only, prints on stdout\n")
+ ACE_TEXT (" -Idir\t\t\tincludes dir in search path for preprocessor\n")
+ ACE_TEXT (" -t\t\t\tTemporary directory to be used")
+ ACE_TEXT (" by the IDL compiler.\n")
+ ACE_TEXT (" -Uname\t\t\tundefines name for preprocessor\n")
+ ACE_TEXT (" -v\t\t\ttraces compilation stages\n")
+ ACE_TEXT (" -V | --version\t\tprints version info then exits\n")
+ ACE_TEXT (" -w\t\t\tsuppresses IDL compiler warning messages\n")
+ ACE_TEXT (" -Wp,<arg1,...,argn>\tpasses args to preprocessor\n")
+ ACE_TEXT (" -Yp,path\t\tdefines location of preprocessor\n")
+ ACE_TEXT (" --idl-version VERSION\tSet the version of IDL to use\n")
+ ACE_TEXT (" --default-idl-version\tPrint the default IDL version and exit\n")
+ ACE_TEXT (" --list-idl-versions\tPrint IDL versions supported and exit\n")
+ ACE_TEXT (" --syntax-only\t\tJust check the syntax, do not create files\n")
+ ACE_TEXT (" --bison-trace\t\tEnable Bison Tracing (sets yydebug to 1)\n")
+ ACE_TEXT (" --dump-builtins\tDump the compiler and user defined IDL.\n")
+ ACE_TEXT (" --just-dump-builtins\tJust dump the compiler defined IDL and exit.\n")
+ ACE_TEXT (" --unknown-annotations ARG\t")
+ ACE_TEXT ("Set reaction to unknown annotations. ARG must be one of the following:\n")
+ ACE_TEXT ("\t\t\t\twarn-once\tThe default, warn once per unique local name\n")
+ ACE_TEXT ("\t\t\t\twarn-all\tWarn for all unknown annotations\n")
+ ACE_TEXT ("\t\t\t\terror\t\tCauses the process to exit with a failed return status\n")
+ ACE_TEXT ("\t\t\t\tignore\t\tDon't report unknown annotations\n")
+ ));
be_util::usage ();
}
+#define UNKNOWN_OPTION \
+ ACE_ERROR (( \
+ LM_ERROR, \
+ ACE_TEXT ("IDL: I don't understand") \
+ ACE_TEXT (" the '%s' option\n"), \
+ ACE_TEXT_CHAR_TO_TCHAR (av[i]) \
+ )); \
+ idl_global->parse_args_exit (1); \
+ return;
+
// Parse arguments on command line
void
DRV_parse_args (long ac, char **av)
@@ -215,13 +188,16 @@ DRV_parse_args (long ac, char **av)
long i;
bool has_space = false;
+ // After -- process all arguments as files
+ bool just_files = false;
+
FE_store_env_include_paths ();
DRV_cpp_init ();
idl_global->set_prog_name (av[0]);
for (i = 1; i < ac; i++)
{
- if (av[i][0] == '-')
+ if (!just_files && av[i][0] == '-')
{
idl_global->append_idl_flag (av[i]);
@@ -234,10 +210,9 @@ DRV_parse_args (long ac, char **av)
ACE_TEXT ("IDL: Space between dash and option ")
ACE_TEXT ("letters not allowed\n")
));
+ idl_global->parse_args_exit (1);
+ return;
- ++i;
- idl_global->set_err_count (idl_global->err_count () + 1);
- break;
case 'A':
if (av[i][2] == '\0')
{
@@ -253,12 +228,9 @@ DRV_parse_args (long ac, char **av)
ACE_TEXT ("IDL: incorrect use of ")
ACE_TEXT ("the -A option\n")
));
+ idl_global->parse_args_exit (1);
+ return;
- idl_global->set_compile_flags (
- idl_global->compile_flags ()
- | IDL_CF_ONLY_USAGE
- );
- break;
}
}
else
@@ -287,13 +259,8 @@ DRV_parse_args (long ac, char **av)
}
else
{
- ACE_ERROR ((
- LM_ERROR,
- ACE_TEXT ("IDL: I don't understand")
- ACE_TEXT (" the '%s' option\n"),
- ACE_TEXT_CHAR_TO_TCHAR (av[i])
- ));
- }
+ UNKNOWN_OPTION;
+ }
break;
// Temp directory for the IDL compiler to keep its files.
@@ -306,17 +273,7 @@ DRV_parse_args (long ac, char **av)
}
else
{
- ACE_ERROR ((
- LM_ERROR,
- ACE_TEXT ("IDL: I don't understand")
- ACE_TEXT (" the '%s' option\n"),
- ACE_TEXT_CHAR_TO_TCHAR (av[i])
- ));
-
- idl_global->set_compile_flags (
- idl_global->compile_flags ()
- | IDL_CF_ONLY_USAGE
- );
+ UNKNOWN_OPTION;
}
break;
@@ -343,18 +300,7 @@ DRV_parse_args (long ac, char **av)
}
else
{
- ACE_ERROR ((
- LM_ERROR,
- ACE_TEXT ("IDL: I don't understand")
- ACE_TEXT (" the '%s' option\n"),
- ACE_TEXT_CHAR_TO_TCHAR (av[i])
- ));
-
- idl_global->set_compile_flags (
- idl_global->compile_flags ()
- | IDL_CF_ONLY_USAGE
- );
- break;
+ UNKNOWN_OPTION;
}
}
else
@@ -374,12 +320,19 @@ DRV_parse_args (long ac, char **av)
break;
case 'E':
+ if (av[i][2] != '\0')
+ {
+ UNKNOWN_OPTION;
+ }
idl_global->set_compile_flags (idl_global->compile_flags () |
IDL_CF_ONLY_PREPROC);
break;
case 'V':
- idl_global->set_compile_flags (idl_global->compile_flags () |
- IDL_CF_VERSION);
+ if (av[i][2] != '\0')
+ {
+ UNKNOWN_OPTION;
+ }
+ idl_global->print_version ();
break;
case 'W':
if (av[i][2] == '\0')
@@ -391,18 +344,7 @@ DRV_parse_args (long ac, char **av)
}
else
{
- ACE_ERROR ((
- LM_ERROR,
- ACE_TEXT ("IDL: I don't understand")
- ACE_TEXT (" the '%s' option\n"),
- ACE_TEXT_CHAR_TO_TCHAR (av[i])
- ));
-
- idl_global->set_compile_flags (
- idl_global->compile_flags ()
- | IDL_CF_ONLY_USAGE
- );
- break;
+ UNKNOWN_OPTION;
}
}
else
@@ -417,12 +359,9 @@ DRV_parse_args (long ac, char **av)
LM_ERROR,
ACE_TEXT ("IDL: Incorrect use of -W option\n")
));
+ idl_global->parse_args_exit (1);
+ return;
- idl_global->set_compile_flags (
- idl_global->compile_flags ()
- | IDL_CF_ONLY_USAGE
- );
- break;
case 'p':
if (*(s + 1) == ',')
{
@@ -450,18 +389,7 @@ DRV_parse_args (long ac, char **av)
}
else
{
- ACE_ERROR ((
- LM_ERROR,
- ACE_TEXT ("IDL: I don't understand")
- ACE_TEXT (" the '%s' option\n"),
- ACE_TEXT_CHAR_TO_TCHAR (av[i])
- ));
-
- idl_global->set_compile_flags (
- idl_global->compile_flags ()
- | IDL_CF_ONLY_USAGE
- );
- break;
+ UNKNOWN_OPTION;
}
}
else
@@ -484,11 +412,8 @@ DRV_parse_args (long ac, char **av)
ACE_TEXT ("IDL: I don't understand")
ACE_TEXT (" the '-Y' option\n")
));
-
- idl_global->set_compile_flags (
- idl_global->compile_flags ()
- | IDL_CF_ONLY_USAGE
- );
+ idl_global->parse_args_exit (1);
+ return;
}
break;
@@ -499,27 +424,30 @@ DRV_parse_args (long ac, char **av)
ACE_TEXT (" %s with the '-Y' option\n"),
ACE_TEXT_CHAR_TO_TCHAR (s)
));
-
- idl_global->set_compile_flags (
- idl_global->compile_flags ()
- | IDL_CF_ONLY_USAGE
- );
- break;
+ idl_global->parse_args_exit (1);
+ return;
}
break;
case 'd':
- idl_global->set_compile_flags (idl_global->compile_flags ()
- | IDL_CF_DUMP_AST);
- break;
- case 'u':
- idl_global->set_compile_flags (idl_global->compile_flags ()
- | IDL_CF_ONLY_USAGE);
+ if (av[i][2] != '\0')
+ {
+ UNKNOWN_OPTION;
+ }
+ idl_global->dump_ast ();
break;
case 'v':
+ if (av[i][2] != '\0')
+ {
+ UNKNOWN_OPTION;
+ }
idl_global->set_compile_flags (idl_global->compile_flags ()
| IDL_CF_INFORMATIVE);
break;
case 'w':
+ if (av[i][2] != '\0')
+ {
+ UNKNOWN_OPTION;
+ }
idl_global->set_compile_flags (idl_global->compile_flags ()
| IDL_CF_NOWARNINGS);
break;
@@ -537,28 +465,48 @@ DRV_parse_args (long ac, char **av)
}
else
{
- ACE_ERROR ((
- LM_ERROR,
- ACE_TEXT ("IDL: I don't understand the '%s' option\n"),
- ACE_TEXT_CHAR_TO_TCHAR (av[i])
- ));
+ UNKNOWN_OPTION;
+ }
+
+ break;
- idl_global->set_compile_flags (
- idl_global->compile_flags ()
- | IDL_CF_ONLY_USAGE
- );
+ case 'u': // Old Help Option
+ if (av[i][2] != '\0')
+ {
+ UNKNOWN_OPTION;
}
+ idl_global->print_help ();
+ break;
+
+ case 'h': // Short Help Option, else let be_global process it
+ if (av[i][2] == '\0') {
+ idl_global->print_help ();
+ } else {
+ be_global->parse_args (i, av);
+ }
+ break;
+ case '-': // -- or Long Options
+ if (av[i][2] == '\0')
+ {
+ just_files = true; // Treat the following arguments as files
+ }
+ else
+ {
+ process_long_option(ac, av, i);
+ }
break;
+
default:
be_global->parse_args (i, av);
- break;
} // End of switch (av[i][1])
} // End of IF (av[i][0] == '-')
else
{
DRV_push_file (av[i]);
}
+
+ if (idl_global->parse_args_exit_) return; // Catch Exits
} // End of FOR (i = 1; i < ac; i++)
be_util::arg_post_proc ();
@@ -614,3 +562,149 @@ DRV_parse_args (long ac, char **av)
DRV_cpp_post_init ();
}
+
+void
+print_idl_versions()
+{
+ ACE_DEBUG ((LM_INFO,
+ ACE_TEXT ("These are the valid IDL versions this compiler will accept:\n")
+ ));
+ for (int v = 1; v < IDL_VERSION_COUNT; v++)
+ {
+ ACE_DEBUG ((LM_INFO, ACE_TEXT ("%C\n"),
+ IdlVersion (static_cast<SpecificIdlVersion>(v)).to_string ()
+ ));
+ }
+}
+
+void
+process_long_option(long ac, char **av, long &i)
+{
+ const char *long_option = av[i] + 2;
+ bool no_more_args = i + 1 >= ac;
+ if (!ACE_OS::strcmp (long_option, "idl-version"))
+ {
+ bool invalid_version = no_more_args;
+ if (no_more_args)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("--idl-version is missing a required argument, ")
+ ACE_TEXT ("the IDL version to use.\n")
+ ));
+ }
+ else
+ {
+ idl_global->idl_version_.from_string (av[++i]);
+ invalid_version = !idl_global->idl_version_.is_valid ();
+ if (invalid_version)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("\"%C\" is not a valid IDL version supported\n"),
+ av[i]
+ ));
+ }
+ }
+ if (invalid_version)
+ {
+ print_idl_versions ();
+ idl_global->parse_args_exit (1);
+ }
+ }
+ else if (!ACE_OS::strcmp (long_option, "syntax-only"))
+ {
+ idl_global->syntax_only_ = true;
+ }
+ else if (!ACE_OS::strcmp (long_option, "default-idl-version"))
+ {
+ ACE_DEBUG ((LM_INFO, ACE_TEXT ("%C\n"),
+ idl_global->default_idl_version_.to_string ()));
+ idl_global->parse_args_exit (0);
+ }
+ else if (!ACE_OS::strcmp (long_option, "list-idl-versions"))
+ {
+ print_idl_versions ();
+ idl_global->parse_args_exit (0);
+ }
+ else if (!ACE_OS::strcmp (long_option, "help"))
+ {
+ idl_global->print_help ();
+ }
+ else if (!ACE_OS::strcmp (long_option, "bison-trace"))
+ {
+ FE_yydebug (true);
+ }
+ else if (!ACE_OS::strcmp (long_option, "version"))
+ {
+ idl_global->print_version ();
+ }
+ else if (!ACE_OS::strcmp (long_option, "dump-builtins"))
+ {
+ idl_global->dump_builtins_ = true;
+ idl_global->dump_ast ();
+ }
+ else if (!ACE_OS::strcmp (long_option, "just-dump-builtins"))
+ {
+ // Don't use dump_ast because we need to dump before parsing any files.
+ idl_global->dump_builtins_ = true;
+ idl_global->just_dump_builtins_ = true;
+ }
+ else if (!ACE_OS::strcmp (long_option, "dump"))
+ {
+ idl_global->dump_ast ();
+ }
+ else if (!ACE_OS::strcmp (long_option, "unknown-annotations"))
+ {
+ bool invalid_argument = no_more_args;
+ if (no_more_args)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("--unknown-annotations is missing its required argument.")
+ ));
+ }
+ else
+ {
+ i++;
+ if (!ACE_OS::strcmp (av[i], "warn-once"))
+ {
+ idl_global->unknown_annotations_ =
+ IDL_GlobalData::UNKNOWN_ANNOTATIONS_WARN_ONCE;
+ }
+ else if (!ACE_OS::strcmp (av[i], "warn-all"))
+ {
+ idl_global->unknown_annotations_ =
+ IDL_GlobalData::UNKNOWN_ANNOTATIONS_WARN_ALL;
+ }
+ else if (!ACE_OS::strcmp (av[i], "error"))
+ {
+ idl_global->unknown_annotations_ =
+ IDL_GlobalData::UNKNOWN_ANNOTATIONS_ERROR;
+ }
+ else if (!ACE_OS::strcmp (av[i], "ignore"))
+ {
+ idl_global->unknown_annotations_ =
+ IDL_GlobalData::UNKNOWN_ANNOTATIONS_IGNORE;
+ }
+ else
+ {
+ invalid_argument = true;
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("\"%C\" is not a valid argument.\n"),
+ av[i]
+ ));
+ }
+ }
+ if (invalid_argument)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Use either \"warn-once\", \"warn-all\", ")
+ ACE_TEXT ("\"error\" or \"ignore\".\n"),
+ av[i]
+ ));
+ idl_global->parse_args_exit (1);
+ }
+ }
+ else
+ {
+ be_global->parse_args (i, av);
+ }
+}
diff --git a/TAO/TAO_IDL/fe/fe_extern.cpp b/TAO/TAO_IDL/fe/fe_extern.cpp
index 605e4639f44..440d81cdc3c 100644
--- a/TAO/TAO_IDL/fe/fe_extern.cpp
+++ b/TAO/TAO_IDL/fe/fe_extern.cpp
@@ -97,12 +97,21 @@ FE_yyparse (void)
tao_preproc_buffer_length = 0;
tao_preproc_buffer_pos = 0;
#else
- ACE_OS::fclose (tao_yyin);
+ if (tao_yyin)
+ {
+ ACE_OS::fclose (tao_yyin);
+ }
#endif /* USE_MCPP_BUFFER_LEXING */
return result;
}
+extern int tao_yydebug;
+void FE_yydebug (bool value)
+{
+ tao_yydebug = value;
+}
+
#ifdef USE_MCPP_BUFFER_LEXING
void
FE_set_yyin (char * f)
diff --git a/TAO/TAO_IDL/fe/fe_lookup.cpp b/TAO/TAO_IDL/fe/fe_lookup.cpp
index 2deefd7aba6..406f071938b 100644
--- a/TAO/TAO_IDL/fe/fe_lookup.cpp
+++ b/TAO/TAO_IDL/fe/fe_lookup.cpp
@@ -2,7 +2,7 @@
#include "ace/OS_NS_string.h"
/* C++ code produced by gperf version 2.8 (ACE version) */
-/* Command-line: /tao_builds/mitza/DOC_fixed/ACE/bin/ace_gperf -M -J -c -C -D -E -T -f 0 -a -o -t -p -K keyword_ -L C++ -Z TAO_IDL_CPP_Keyword_Table -N lookup -k1,2,$ fe/keywords.dat */
+/* Command-line: /mnt/arch/data/work/oci/ace_tao/xtypes/ACE_TAO/ACE/bin/ace_gperf -M -J -c -C -D -E -T -f 0 -a -o -t -p -K keyword_ -L C++ -Z TAO_IDL_CPP_Keyword_Table -N lookup -k1,2,$ fe/keywords.dat */
unsigned int
TAO_IDL_CPP_Keyword_Table::hash (const char *str, unsigned int len)
{
diff --git a/TAO/TAO_IDL/fe/idl.ll b/TAO/TAO_IDL/fe/idl.ll
index 817051334be..3d384441756 100644
--- a/TAO/TAO_IDL/fe/idl.ll
+++ b/TAO/TAO_IDL/fe/idl.ll
@@ -64,7 +64,7 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
*/
/*
- * idl.ll - Lexical scanner for IDL 3.1
+ * idl.ll - Lexical scanner for IDL
*/
#include "global_extern.h"
@@ -87,6 +87,7 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
#include "fe_home_header.h"
#include "fe_private.h"
#include "fe_extern.h"
+#include "ast_annotation_appl.h"
#include "idl.tab.hpp"
static char * idl_wstring_escape_reader (char *);
@@ -204,6 +205,9 @@ oneway return IDL_ONEWAY;
return IDL_SCOPE_DELIMITOR;
}
+@annotation[^A-Za-z0-9_] return IDL_ANNOTATION_DECL; // Allow annotation names that start with "annotation"
+@ return IDL_ANNOTATION_SYMBOL;
+
[a-ij-rs-zA-IJ-RS-Z_][a-ij-rs-zA-IJ-RS-Z0-9_]* {
// Make sure that this identifier is not a C++ keyword. If it is,
// prepend it with a _cxx_. Lookup in the perfect hash table for C++
diff --git a/TAO/TAO_IDL/fe/idl.tab.cpp b/TAO/TAO_IDL/fe/idl.tab.cpp
index ce29e2c5206..5493bded1a1 100644
--- a/TAO/TAO_IDL/fe/idl.tab.cpp
+++ b/TAO/TAO_IDL/fe/idl.tab.cpp
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.0.2. */
+/* A Bison parser, made by GNU Bison 3.1. */
/* Bison implementation for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -44,7 +44,7 @@
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "3.0.2"
+#define YYBISON_VERSION "3.1"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -70,7 +70,7 @@
#define yychar tao_yychar
/* Copy the first part of user declarations. */
-#line 71 "fe/idl.ypp" /* yacc.c:339 */
+#line 72 "fe/idl.ypp" /* yacc.c:339 */
#include "utl_identifier.h"
#include "utl_err.h"
@@ -123,6 +123,10 @@
#include "ast_visitor_tmpl_module_inst.h"
#include "ast_visitor_tmpl_module_ref.h"
#include "ast_visitor_context.h"
+#include "ast_annotation_appl.h"
+#include "ast_union_branch.h"
+#include "ast_enum_val.h"
+#include "ast_annotation_member.h"
#include "fe_declarator.h"
#include "fe_interface_header.h"
@@ -142,12 +146,13 @@ extern "C" int tao_yywrap (void);
extern char tao_yytext[];
extern int tao_yyleng;
AST_Enum *tao_enum_constant_decl = 0;
+AST_String *tao_string_decl = 0;
AST_Expression::ExprType t_param_const_type = AST_Expression::EV_none;
#define TAO_YYDEBUG_LEXER_TEXT (tao_yytext[tao_yyleng] = '\0', tao_yytext)
-// Force the pretty debugging code to compile.
+// Compile Optional Tracing Output for Parser, can be enabled with --bison-trace
#define YYDEBUG 1
-#line 151 "fe/idl.tab.cpp" /* yacc.c:339 */
+#line 156 "fe/idl.tab.cpp" /* yacc.c:339 */
# ifndef YY_NULLPTR
# if defined __cplusplus && 201103L <= __cplusplus
@@ -264,16 +269,18 @@ extern int tao_yydebug;
IDL_LEFT_SHIFT = 337,
IDL_RIGHT_SHIFT = 338,
IDL_WCHAR_LITERAL = 339,
- IDL_WSTRING_LITERAL = 340
+ IDL_WSTRING_LITERAL = 340,
+ IDL_ANNOTATION_DECL = 341,
+ IDL_ANNOTATION_SYMBOL = 342
};
#endif
/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE YYSTYPE;
+
union YYSTYPE
{
-#line 152 "fe/idl.ypp" /* yacc.c:355 */
+#line 158 "fe/idl.ypp" /* yacc.c:355 */
AST_Decl *dcval; /* Decl value */
UTL_StrList *slval; /* String list */
@@ -310,9 +317,18 @@ union YYSTYPE
FE_Utils::T_Param_Info *pival; /* Template interface param */
FE_Utils::T_PARAMLIST_INFO *plval; /* List of template params */
FE_Utils::T_ARGLIST *alval; /* List of template args */
-
-#line 315 "fe/idl.tab.cpp" /* yacc.c:355 */
+ AST_Annotation_Appl *annotation_val;
+ AST_Annotation_Appls *annotations_val;
+ AST_Annotation_Appl::Param *annotation_param_val;
+ AST_Annotation_Appl::Params *annotation_params_val;
+ AST_Annotation_Decl *annotation_decl_val;
+ AST_Decls *decls_val;
+ Decl_Annotations_Pair *decl_annotations_pair_val;
+
+#line 329 "fe/idl.tab.cpp" /* yacc.c:355 */
};
+
+typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1
#endif
@@ -326,7 +342,7 @@ int tao_yyparse (void);
/* Copy the second part of user declarations. */
-#line 330 "fe/idl.tab.cpp" /* yacc.c:358 */
+#line 346 "fe/idl.tab.cpp" /* yacc.c:358 */
#ifdef short
# undef short
@@ -347,13 +363,13 @@ typedef signed char yytype_int8;
#ifdef YYTYPE_UINT16
typedef YYTYPE_UINT16 yytype_uint16;
#else
-typedef unsigned short int yytype_uint16;
+typedef unsigned short yytype_uint16;
#endif
#ifdef YYTYPE_INT16
typedef YYTYPE_INT16 yytype_int16;
#else
-typedef short int yytype_int16;
+typedef short yytype_int16;
#endif
#ifndef YYSIZE_T
@@ -365,7 +381,7 @@ typedef short int yytype_int16;
# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
# define YYSIZE_T size_t
# else
-# define YYSIZE_T unsigned int
+# define YYSIZE_T unsigned
# endif
#endif
@@ -417,7 +433,7 @@ typedef short int yytype_int16;
# define YYUSE(E) /* empty */
#endif
-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
/* Suppress an incorrect diagnostic about yylval being uninitialized. */
# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
_Pragma ("GCC diagnostic push") \
@@ -566,26 +582,26 @@ union yyalloc
#endif /* !YYCOPY_NEEDED */
/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 3
+#define YYFINAL 4
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 1285
+#define YYLAST 1537
/* YYNTOKENS -- Number of terminals. */
-#define YYNTOKENS 108
+#define YYNTOKENS 109
/* YYNNTS -- Number of nonterminals. */
-#define YYNNTS 389
+#define YYNNTS 398
/* YYNRULES -- Number of rules. */
-#define YYNRULES 578
+#define YYNRULES 595
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 848
+#define YYNSTATES 876
/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
by yylex, with out-of-bounds checking. */
#define YYUNDEFTOK 2
-#define YYMAXUTOK 340
+#define YYMAXUTOK 342
#define YYTRANSLATE(YYX) \
- ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+ ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
as returned by yylex, without out-of-bounds checking. */
@@ -594,16 +610,16 @@ static const yytype_uint8 yytranslate[] =
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 101, 96, 2,
- 103, 104, 99, 97, 92, 98, 2, 100, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 91, 86,
- 89, 93, 90, 2, 105, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 103, 98, 2,
+ 105, 106, 101, 99, 94, 100, 2, 102, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 93, 88,
+ 91, 95, 92, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 106, 2, 107, 95, 2, 2, 2, 2, 2,
+ 2, 107, 2, 108, 97, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 87, 94, 88, 102, 2, 2, 2,
+ 2, 2, 2, 89, 96, 90, 104, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -625,71 +641,73 @@ static const yytype_uint8 yytranslate[] =
55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
- 85
+ 85, 86, 87
};
#if YYDEBUG
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_uint16 yyrline[] =
{
- 0, 360, 360, 363, 364, 368, 371, 374, 380, 392,
- 391, 402, 401, 412, 411, 422, 421, 432, 431, 442,
- 441, 452, 451, 462, 461, 472, 471, 482, 481, 492,
- 491, 502, 501, 512, 511, 522, 521, 536, 535, 548,
- 587, 592, 547, 609, 617, 632, 642, 673, 677, 616,
- 701, 705, 706, 710, 711, 716, 722, 715, 810, 816,
- 809, 887, 888, 893, 932, 937, 892, 955, 954, 968,
- 1006, 1037, 1071, 1070, 1082, 1089, 1090, 1091, 1092, 1096,
- 1107, 1112, 1156, 1161, 1111, 1190, 1234, 1239, 1188, 1258,
- 1256, 1298, 1297, 1311, 1317, 1324, 1331, 1338, 1364, 1391,
- 1456, 1457, 1461, 1462, 1463, 1469, 1468, 1479, 1478, 1491,
- 1492, 1497, 1496, 1507, 1506, 1517, 1516, 1527, 1526, 1537,
- 1536, 1547, 1546, 1557, 1556, 1567, 1566, 1580, 1593, 1591,
- 1619, 1626, 1637, 1636, 1664, 1662, 1689, 1700, 1713, 1759,
- 1787, 1818, 1823, 1828, 1833, 1817, 1904, 1905, 1906, 1907,
- 1908, 1909, 1910, 1922, 1927, 1996, 1998, 2000, 2001, 2015,
- 2016, 2030, 2031, 2044, 2045, 2055, 2068, 2069, 2079, 2092,
- 2093, 2103, 2113, 2126, 2127, 2137, 2147, 2160, 2211, 2212,
- 2221, 2226, 2232, 2240, 2245, 2250, 2256, 2260, 2265, 2270,
- 2278, 2352, 2353, 2357, 2358, 2362, 2363, 2367, 2371, 2372,
- 2376, 2381, 2380, 2391, 2396, 2401, 2406, 2433, 2442, 2441,
- 2513, 2514, 2518, 2526, 2527, 2555, 2556, 2557, 2558, 2559,
- 2560, 2561, 2562, 2566, 2567, 2568, 2569, 2573, 2574, 2575,
- 2579, 2580, 2584, 2597, 2595, 2623, 2630, 2631, 2635, 2648,
- 2646, 2674, 2681, 2698, 2717, 2718, 2722, 2727, 2732, 2740,
- 2745, 2750, 2758, 2763, 2768, 2776, 2784, 2789, 2797, 2805,
- 2813, 2821, 2830, 2829, 2845, 2879, 2884, 2844, 2903, 2906,
- 2907, 2911, 2911, 2922, 2927, 2920, 2990, 2989, 3004, 3003,
- 3018, 3023, 3059, 3064, 3121, 3126, 3017, 3150, 3158, 3172,
- 3182, 3190, 3191, 3299, 3302, 3303, 3308, 3313, 3307, 3349,
- 3348, 3362, 3373, 3393, 3401, 3400, 3416, 3421, 3415, 3438,
- 3437, 3490, 3514, 3539, 3544, 3577, 3582, 3538, 3608, 3613,
- 3611, 3618, 3622, 3659, 3664, 3657, 3745, 3806, 3816, 3805,
- 3829, 3839, 3844, 3837, 3891, 3917, 3927, 3932, 3925, 3968,
- 3993, 4002, 4001, 4043, 4054, 4074, 4082, 4087, 4081, 4149,
- 4150, 4155, 4160, 4165, 4170, 4154, 4239, 4244, 4249, 4254,
- 4238, 4332, 4337, 4367, 4372, 4331, 4390, 4395, 4460, 4465,
- 4388, 4502, 4508, 4515, 4522, 4523, 4535, 4541, 4583, 4534,
- 4605, 4604, 4615, 4614, 4627, 4632, 4630, 4637, 4642, 4647,
- 4641, 4688, 4687, 4698, 4697, 4710, 4715, 4713, 4720, 4725,
- 4730, 4724, 4777, 4785, 4786, 4787, 4897, 4902, 4907, 4916,
- 4921, 4915, 4933, 4941, 4946, 4940, 4958, 4966, 4971, 4965,
- 4983, 4991, 4996, 4990, 5008, 5015, 5028, 5026, 5052, 5059,
- 5088, 5126, 5127, 5131, 5161, 5201, 5206, 5160, 5225, 5230,
- 5223, 5273, 5272, 5283, 5290, 5291, 5296, 5295, 5306, 5305,
- 5316, 5315, 5326, 5325, 5336, 5335, 5346, 5345, 5356, 5355,
- 5367, 5458, 5465, 5491, 5598, 5608, 5614, 5620, 5693, 5766,
- 5841, 5840, 5890, 5895, 5900, 5905, 5910, 5915, 5889, 5970,
- 5969, 5980, 5987, 5994, 6002, 6007, 6001, 6019, 6020, 6024,
- 6026, 6025, 6036, 6035, 6050, 6074, 6048, 6102, 6130, 6100,
- 6156, 6157, 6158, 6162, 6163, 6167, 6195, 6226, 6271, 6276,
- 6224, 6293, 6303, 6322, 6334, 6333, 6373, 6423, 6428, 6371,
- 6445, 6450, 6458, 6463, 6468, 6473, 6478, 6483, 6488, 6493,
- 6498, 6503, 6512, 6547, 6546, 6568, 6575, 6601, 6619, 6630,
- 6650, 6657, 6668, 6673, 6692, 6697, 6667, 6712, 6719, 6724,
- 6731, 6730, 6739, 6738, 6747, 6746, 6758, 6828, 6879, 6895,
- 6909, 6916, 6976, 6981, 6986, 6980, 7047, 7052, 7046, 7067,
- 7068, 7073, 7072, 7083, 7082, 7093, 7092, 7103, 7102
+ 0, 387, 387, 390, 391, 399, 412, 418, 422, 426,
+ 434, 433, 443, 442, 452, 451, 461, 460, 470, 469,
+ 479, 478, 488, 487, 497, 496, 506, 505, 515, 514,
+ 524, 523, 533, 532, 542, 541, 551, 550, 560, 559,
+ 573, 572, 584, 623, 627, 583, 643, 651, 665, 675,
+ 705, 709, 650, 732, 736, 737, 741, 742, 747, 752,
+ 746, 838, 843, 837, 912, 913, 918, 956, 960, 917,
+ 976, 975, 987, 1024, 1054, 1087, 1086, 1095, 1102, 1103,
+ 1104, 1105, 1109, 1113, 1118, 1161, 1165, 1117, 1192, 1235,
+ 1239, 1190, 1256, 1254, 1294, 1293, 1305, 1309, 1316, 1321,
+ 1329, 1354, 1380, 1444, 1445, 1449, 1450, 1451, 1456, 1460,
+ 1467, 1485, 1486, 1491, 1490, 1499, 1498, 1507, 1506, 1515,
+ 1514, 1523, 1522, 1531, 1530, 1539, 1538, 1547, 1546, 1558,
+ 1570, 1568, 1593, 1600, 1610, 1609, 1635, 1633, 1658, 1668,
+ 1679, 1723, 1750, 1780, 1784, 1788, 1792, 1779, 1854, 1855,
+ 1856, 1857, 1858, 1859, 1860, 1864, 1868, 1936, 1938, 1940,
+ 1941, 1953, 1954, 1966, 1967, 1979, 1980, 1989, 2001, 2002,
+ 2011, 2023, 2024, 2033, 2042, 2054, 2055, 2064, 2073, 2085,
+ 2143, 2144, 2151, 2155, 2160, 2167, 2171, 2175, 2180, 2184,
+ 2188, 2192, 2199, 2268, 2267, 2294, 2295, 2299, 2300, 2301,
+ 2303, 2302, 2311, 2312, 2316, 2367, 2371, 2378, 2391, 2401,
+ 2409, 2408, 2481, 2485, 2492, 2501, 2508, 2516, 2522, 2529,
+ 2540, 2539, 2548, 2552, 2556, 2560, 2586, 2594, 2593, 2665,
+ 2666, 2670, 2677, 2678, 2704, 2705, 2706, 2707, 2708, 2709,
+ 2710, 2711, 2715, 2716, 2717, 2718, 2722, 2723, 2724, 2728,
+ 2729, 2733, 2745, 2743, 2768, 2775, 2776, 2780, 2792, 2790,
+ 2815, 2822, 2838, 2856, 2857, 2861, 2865, 2869, 2876, 2880,
+ 2884, 2891, 2895, 2899, 2906, 2913, 2917, 2924, 2931, 2938,
+ 2945, 2953, 2952, 2966, 2997, 3001, 2965, 3018, 3021, 3022,
+ 3026, 3041, 3045, 3040, 3103, 3102, 3115, 3114, 3127, 3131,
+ 3164, 3168, 3224, 3228, 3126, 3250, 3257, 3270, 3279, 3286,
+ 3287, 3396, 3399, 3400, 3405, 3409, 3404, 3442, 3441, 3453,
+ 3463, 3481, 3489, 3488, 3502, 3506, 3501, 3522, 3521, 3572,
+ 3597, 3621, 3625, 3656, 3660, 3620, 3684, 3689, 3687, 3693,
+ 3697, 3734, 3738, 3732, 3825, 3895, 3904, 3894, 3918, 3928,
+ 3932, 3926, 3977, 4003, 4012, 4016, 4010, 4052, 4078, 4086,
+ 4085, 4130, 4140, 4158, 4166, 4170, 4165, 4230, 4231, 4236,
+ 4240, 4244, 4248, 4235, 4315, 4319, 4323, 4327, 4314, 4403,
+ 4407, 4436, 4440, 4402, 4456, 4460, 4524, 4528, 4454, 4563,
+ 4568, 4573, 4580, 4581, 4592, 4597, 4638, 4591, 4658, 4657,
+ 4666, 4665, 4676, 4681, 4679, 4685, 4690, 4694, 4689, 4733,
+ 4732, 4741, 4740, 4751, 4756, 4754, 4760, 4765, 4769, 4764,
+ 4814, 4821, 4822, 4823, 4930, 4934, 4938, 4946, 4950, 4945,
+ 4959, 4967, 4971, 4966, 4980, 4988, 4992, 4987, 5001, 5009,
+ 5013, 5008, 5022, 5029, 5041, 5039, 5062, 5069, 5097, 5134,
+ 5135, 5139, 5168, 5207, 5211, 5167, 5228, 5232, 5226, 5273,
+ 5272, 5280, 5287, 5288, 5293, 5292, 5301, 5300, 5309, 5308,
+ 5317, 5316, 5325, 5324, 5333, 5332, 5341, 5340, 5350, 5440,
+ 5446, 5471, 5577, 5586, 5590, 5596, 5668, 5740, 5814, 5813,
+ 5861, 5865, 5869, 5873, 5877, 5881, 5860, 5934, 5933, 5941,
+ 5948, 5953, 5961, 5965, 5960, 5975, 5976, 5980, 5982, 5981,
+ 5990, 5989, 6002, 6025, 6000, 6051, 6078, 6049, 6102, 6103,
+ 6104, 6108, 6109, 6113, 6140, 6170, 6214, 6218, 6168, 6233,
+ 6242, 6260, 6271, 6270, 6308, 6357, 6361, 6306, 6376, 6380,
+ 6387, 6391, 6395, 6399, 6403, 6407, 6411, 6415, 6419, 6423,
+ 6431, 6462, 6475, 6482, 6507, 6525, 6532, 6547, 6554, 6564,
+ 6568, 6586, 6590, 6563, 6603, 6609, 6612, 6619, 6618, 6625,
+ 6624, 6631, 6630, 6640, 6709, 6759, 6774, 6786, 6793, 6852,
+ 6857, 6861, 6856, 6920, 6924, 6919, 6937, 6938, 6943, 6942,
+ 6951, 6950, 6959, 6958, 6967, 6966
};
#endif
@@ -717,81 +735,86 @@ static const char *const yytname[] =
"IDL_UINTEGER_LITERAL", "IDL_STRING_LITERAL", "IDL_CHARACTER_LITERAL",
"IDL_FLOATING_PT_LITERAL", "IDL_FIXED_PT_LITERAL", "IDL_TRUETOK",
"IDL_FALSETOK", "IDL_SCOPE_DELIMITOR", "IDL_LEFT_SHIFT",
- "IDL_RIGHT_SHIFT", "IDL_WCHAR_LITERAL", "IDL_WSTRING_LITERAL", "';'",
- "'{'", "'}'", "'<'", "'>'", "':'", "','", "'='", "'|'", "'^'", "'&'",
- "'+'", "'-'", "'*'", "'/'", "'%'", "'~'", "'('", "')'", "'@'", "'['",
- "']'", "$accept", "start", "definitions", "definition",
- "at_least_one_definition", "fixed_definition", "$@1", "$@2", "$@3",
- "$@4", "$@5", "$@6", "$@7", "$@8", "$@9", "$@10", "$@11", "$@12", "$@13",
- "$@14", "module_header", "$@15", "module", "$@16", "$@17", "$@18",
- "template_module_header", "template_module", "$@19", "$@20", "$@21",
- "$@22", "$@23", "at_least_one_tpl_definition", "tpl_definitions",
- "tpl_definition", "template_module_ref", "$@24", "$@25",
- "template_module_inst", "$@26", "$@27", "interface_def", "interface",
- "$@28", "$@29", "$@30", "interface_decl", "$@31", "interface_header",
- "inheritance_spec", "$@32", "value_def", "valuetype",
- "value_concrete_decl", "$@33", "$@34", "$@35", "value_abs_decl", "$@36",
- "$@37", "$@38", "value_header", "$@39", "value_decl", "$@40",
+ "IDL_RIGHT_SHIFT", "IDL_WCHAR_LITERAL", "IDL_WSTRING_LITERAL",
+ "IDL_ANNOTATION_DECL", "IDL_ANNOTATION_SYMBOL", "';'", "'{'", "'}'",
+ "'<'", "'>'", "':'", "','", "'='", "'|'", "'^'", "'&'", "'+'", "'-'",
+ "'*'", "'/'", "'%'", "'~'", "'('", "')'", "'['", "']'", "$accept",
+ "start", "definitions", "at_least_one_definition", "definition",
+ "fixed_definition", "$@1", "$@2", "$@3", "$@4", "$@5", "$@6", "$@7",
+ "$@8", "$@9", "$@10", "$@11", "$@12", "$@13", "$@14", "$@15",
+ "module_header", "$@16", "module", "@17", "$@18", "$@19",
+ "template_module_header", "template_module", "$@20", "$@21", "$@22",
+ "$@23", "$@24", "at_least_one_tpl_definition", "tpl_definitions",
+ "tpl_definition", "template_module_ref", "$@25", "$@26",
+ "template_module_inst", "$@27", "$@28", "interface_def", "interface",
+ "$@29", "$@30", "$@31", "interface_decl", "$@32", "interface_header",
+ "inheritance_spec", "$@33", "value_def", "valuetype",
+ "value_concrete_decl", "$@34", "$@35", "$@36", "value_abs_decl", "$@37",
+ "$@38", "$@39", "value_header", "$@40", "value_decl", "$@41",
"opt_truncatable", "supports_spec", "value_forward_decl",
- "value_box_decl", "value_elements", "value_element", "state_member",
- "@41", "@42", "exports", "export", "$@43", "$@44", "$@45", "$@46",
- "$@47", "$@48", "$@49", "$@50", "at_least_one_scoped_name",
- "scoped_names", "$@51", "scoped_name", "$@52", "$@53", "id",
- "defining_id", "interface_forward", "const_dcl", "$@54", "$@55", "$@56",
- "$@57", "const_type", "expression", "const_expr", "or_expr", "xor_expr",
+ "value_box_decl", "value_elements", "value_element", "visibility",
+ "state_member", "exports", "export", "$@42", "$@43", "$@44", "$@45",
+ "$@46", "$@47", "$@48", "$@49", "at_least_one_scoped_name",
+ "scoped_names", "$@50", "scoped_name", "$@51", "$@52", "id",
+ "defining_id", "interface_forward", "const_dcl", "$@53", "$@54", "$@55",
+ "$@56", "const_type", "expression", "const_expr", "or_expr", "xor_expr",
"and_expr", "shift_expr", "add_expr", "mult_expr", "unary_expr",
- "primary_expr", "literal", "positive_int_expr", "annotations",
- "annotation_appl", "annotation_appl_params",
- "at_least_one_annotation_appl_param", "annotation_appl_named_params",
- "annotation_appl_param", "type_dcl", "$@58", "type_declarator", "$@59",
- "type_spec", "simple_type_spec", "base_type_spec", "template_type_spec",
- "constructed_type_spec", "constructed_forward_type_spec",
- "at_least_one_declarator", "declarators", "$@60", "declarator",
- "at_least_one_simple_declarator", "simple_declarators", "$@61",
- "simple_declarator", "complex_declarator", "integer_type", "signed_int",
- "unsigned_int", "floating_pt_type", "fixed_type", "char_type",
- "octet_type", "boolean_type", "any_type", "object_type", "struct_decl",
- "$@62", "struct_type", "$@63", "$@64", "$@65", "at_least_one_member",
- "members", "member", "@66", "member_i", "$@67", "$@68", "$@69",
- "union_decl", "$@70", "union_type", "$@71", "$@72", "$@73", "$@74",
- "$@75", "$@76", "switch_type_spec", "at_least_one_case_branch",
- "case_branches", "case_branch", "$@77", "$@78", "$@79",
- "at_least_one_case_label", "case_labels", "case_label", "$@80", "$@81",
- "$@82", "element_spec", "$@83", "struct_forward_type",
- "union_forward_type", "enum_type", "$@84", "$@85", "$@86", "$@87",
- "at_least_one_enumerator", "enumerators", "$@88", "enumerator",
- "sequence_type_spec", "$@89", "$@90", "seq_head", "$@91", "$@92",
- "fixed_type_spec", "string_type_spec", "$@93", "$@94", "string_head",
- "wstring_type_spec", "$@95", "$@96", "wstring_head", "array_declarator",
- "$@97", "at_least_one_array_dim", "array_dims", "array_dim", "$@98",
- "$@99", "attribute", "attribute_readonly", "$@100", "$@101", "$@102",
- "$@103", "attribute_readwrite", "$@104", "$@105", "$@106", "$@107",
- "exception", "$@108", "$@109", "$@110", "$@111", "operation", "$@112",
- "$@113", "$@114", "$@115", "opt_op_attribute", "op_type_spec",
- "init_decl", "$@116", "$@117", "$@118", "init_parameter_list", "$@119",
- "$@120", "at_least_one_in_parameter", "in_parameters", "$@121",
- "in_parameter", "$@122", "$@123", "parameter_list", "$@124", "$@125",
- "at_least_one_parameter", "parameters", "$@126", "parameter", "$@127",
- "$@128", "param_type_spec", "direction", "opt_raises", "$@129", "$@130",
- "opt_getraises", "$@131", "$@132", "opt_setraises", "$@133", "$@134",
- "opt_context", "$@135", "$@136", "at_least_one_string_literal",
- "string_literals", "$@137", "typeid_dcl", "typeprefix_dcl", "component",
- "component_forward_decl", "component_decl", "$@138", "$@139", "$@140",
- "component_header", "$@141", "$@142", "component_inheritance_spec",
- "$@143", "component_exports", "component_export", "$@144", "$@145",
- "$@146", "$@147", "$@148", "$@149", "$@150", "provides_decl",
+ "primary_expr", "literal", "positive_int_expr", "annotation_dcl", "$@57",
+ "annotation_body", "annotation_statement", "$@58",
+ "annotation_member_type", "annotation_member",
+ "annotation_member_default", "at_least_one_annotation",
+ "annotations_maybe", "annotation_appl", "@59",
+ "annotation_appl_params_maybe", "annotation_appl_params",
+ "named_annotation_appl_params", "more_named_annotation_appl_params",
+ "named_annotation_appl_param", "type_dcl", "$@60", "type_declarator",
+ "$@61", "type_spec", "simple_type_spec", "base_type_spec",
+ "template_type_spec", "constructed_type_spec",
+ "constructed_forward_type_spec", "at_least_one_declarator",
+ "declarators", "$@62", "declarator", "at_least_one_simple_declarator",
+ "simple_declarators", "$@63", "simple_declarator", "complex_declarator",
+ "integer_type", "signed_int", "unsigned_int", "floating_pt_type",
+ "fixed_type", "char_type", "octet_type", "boolean_type", "any_type",
+ "object_type", "struct_decl", "$@64", "struct_type", "$@65", "$@66",
+ "$@67", "at_least_one_member", "members", "member", "member_i", "$@68",
+ "$@69", "$@70", "union_decl", "$@71", "union_type", "$@72", "$@73",
+ "$@74", "$@75", "$@76", "$@77", "switch_type_spec",
+ "at_least_one_case_branch", "case_branches", "case_branch", "$@78",
+ "$@79", "$@80", "at_least_one_case_label", "case_labels", "case_label",
+ "$@81", "$@82", "$@83", "element_spec", "$@84", "struct_forward_type",
+ "union_forward_type", "enum_type", "$@85", "$@86", "$@87", "$@88",
+ "at_least_one_enumerator", "enumerators", "$@89", "enumerator",
+ "sequence_type_spec", "$@90", "$@91", "seq_head", "$@92", "$@93",
+ "fixed_type_spec", "string_type_spec", "$@94", "$@95", "string_head",
+ "wstring_type_spec", "$@96", "$@97", "wstring_head", "array_declarator",
+ "$@98", "at_least_one_array_dim", "array_dims", "array_dim", "$@99",
+ "$@100", "attribute", "attribute_readonly", "$@101", "$@102", "$@103",
+ "$@104", "attribute_readwrite", "$@105", "$@106", "$@107", "$@108",
+ "exception", "$@109", "$@110", "$@111", "$@112", "operation", "$@113",
+ "$@114", "$@115", "$@116", "opt_op_attribute", "op_type_spec",
+ "init_decl", "$@117", "$@118", "$@119", "init_parameter_list", "$@120",
+ "$@121", "at_least_one_in_parameter", "in_parameters", "$@122",
+ "in_parameter", "$@123", "$@124", "parameter_list", "$@125", "$@126",
+ "at_least_one_parameter", "parameters", "$@127", "parameter", "$@128",
+ "$@129", "param_type_spec", "direction", "opt_raises", "$@130", "$@131",
+ "opt_getraises", "$@132", "$@133", "opt_setraises", "$@134", "$@135",
+ "opt_context", "$@136", "$@137", "at_least_one_string_literal",
+ "string_literals", "$@138", "typeid_dcl", "typeprefix_dcl", "component",
+ "component_forward_decl", "component_decl", "$@139", "$@140", "$@141",
+ "component_header", "$@142", "$@143", "component_inheritance_spec",
+ "$@144", "component_exports", "component_export", "$@145", "$@146",
+ "$@147", "$@148", "$@149", "$@150", "$@151", "provides_decl",
"interface_type", "uses_decl", "uses_opt_multiple", "opt_multiple",
- "emits_decl", "publishes_decl", "consumes_decl", "home_decl", "$@151",
- "home_header", "$@152", "$@153", "$@154", "$@155", "$@156", "$@157",
- "home_inheritance_spec", "$@158", "primary_key_spec", "home_body",
- "$@159", "$@160", "home_exports", "home_export", "$@161", "$@162",
- "factory_decl", "$@163", "$@164", "finder_decl", "$@165", "$@166",
+ "emits_decl", "publishes_decl", "consumes_decl", "home_decl", "$@152",
+ "home_header", "$@153", "$@154", "$@155", "$@156", "$@157", "$@158",
+ "home_inheritance_spec", "$@159", "primary_key_spec", "home_body",
+ "$@160", "$@161", "home_exports", "home_export", "$@162", "$@163",
+ "factory_decl", "$@164", "$@165", "finder_decl", "$@166", "$@167",
"event", "event_forward_decl", "event_concrete_forward_decl",
- "event_abs_forward_decl", "event_abs_decl", "$@167", "$@168", "$@169",
+ "event_abs_forward_decl", "event_abs_decl", "$@168", "$@169", "$@170",
"event_abs_header", "event_custom_header", "event_plain_header",
- "event_rest_of_header", "$@170", "event_decl", "$@171", "$@172", "$@173",
+ "event_rest_of_header", "$@171", "event_decl", "$@172", "$@173", "$@174",
"event_header", "formal_parameter_type", "at_least_one_formal_parameter",
- "formal_parameters", "$@174", "formal_parameter",
+ "formal_parameters", "formal_parameter",
"at_least_one_formal_parameter_name", "formal_parameter_names",
"formal_parameter_name", "porttype_decl", "$@175", "$@176", "$@177",
"$@178", "at_least_one_port_export", "port_exports", "port_export",
@@ -816,18 +839,18 @@ static const yytype_uint16 yytoknum[] =
305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
- 335, 336, 337, 338, 339, 340, 59, 123, 125, 60,
- 62, 58, 44, 61, 124, 94, 38, 43, 45, 42,
- 47, 37, 126, 40, 41, 64, 91, 93
+ 335, 336, 337, 338, 339, 340, 341, 342, 59, 123,
+ 125, 60, 62, 58, 44, 61, 124, 94, 38, 43,
+ 45, 42, 47, 37, 126, 40, 41, 91, 93
};
# endif
-#define YYPACT_NINF -597
+#define YYPACT_NINF -611
#define yypact_value_is_default(Yystate) \
- (!!((Yystate) == (-597)))
+ (!!((Yystate) == (-611)))
-#define YYTABLE_NINF -519
+#define YYTABLE_NINF -537
#define yytable_value_is_error(Yytable_value) \
0
@@ -836,91 +859,94 @@ static const yytype_uint16 yytoknum[] =
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- -597, 49, 56, -597, 187, -597, -597, -597, -597, -597,
- -597, -597, -597, -597, -597, 77, 193, 62, -597, -597,
- -597, -597, 42, 42, -597, -597, 42, -597, -597, 29,
- -597, 308, 17, 44, -597, -597, 2, -597, -597, -597,
- -597, -597, -597, 564, -597, -597, -597, -597, -597, -597,
- -597, 78, -597, 181, -597, -597, -597, -597, -597, -597,
- -597, -597, -597, -597, -597, -597, -597, -597, -597, -597,
- -597, -597, 98, -597, -597, -597, 98, -597, -597, 100,
- 132, 923, 42, -597, 598, -597, -597, -597, -597, -597,
- 47, -597, 104, -597, 114, -597, 115, -597, -597, 98,
- -597, 145, 225, -597, -597, -597, -2, -597, 99, -597,
- -597, 9, -597, 232, 235, 776, -597, -597, -597, 238,
- 278, -597, 240, 247, 250, 171, -597, 236, -597, -597,
- -597, -597, -597, -597, 245, -597, -597, -597, -597, -597,
- -597, 258, -597, -597, -597, -597, -597, -597, -597, -597,
- -597, -597, -597, -597, -597, -597, -597, -597, -597, 181,
- -597, -597, -597, 149, -597, -597, 251, -597, 253, 262,
- 263, 257, -597, 270, 273, 274, 276, 271, 277, 283,
- 285, -597, -597, -597, 287, 288, -597, -597, -597, -597,
- 258, -597, -597, -597, -597, -597, -597, -597, -597, -597,
- 258, -597, -597, -597, -597, -597, -597, -597, -597, -597,
- 290, -597, 291, -597, -597, 292, -597, 376, -597, -597,
- -597, 52, 58, 342, -597, -597, 923, -597, -597, -597,
- -597, 295, -597, -597, -597, -597, 378, -597, -597, 220,
- 296, -597, -597, -597, -597, -597, -597, -597, -597, 377,
- -597, 402, 299, 344, -597, -597, -597, -597, -597, -597,
- -597, 289, -597, -597, -597, -597, -597, -597, -597, -597,
- -597, 344, 310, 313, -597, -597, -597, -597, -597, 315,
- 317, -597, -597, -597, 316, -597, 376, -597, -597, 318,
- -597, -597, -597, -597, -597, -597, -597, -597, -597, -597,
- 451, 451, 451, 402, 258, -597, 312, 314, 328, 165,
- 167, 116, -597, -597, -597, 306, -597, -597, -597, -597,
- 409, -597, 324, 336, -597, -597, -597, -597, 42, -597,
- -597, -597, -597, 337, -597, 42, -597, 402, 402, 402,
- -597, -597, -597, -597, -597, -597, -597, 222, -597, 325,
- -597, -597, -597, -597, -597, -597, -597, -597, 42, 344,
- -597, -597, -597, 343, 292, 402, -597, -597, -597, 329,
- 402, 402, 402, 402, 402, 402, 402, 402, 402, 402,
- -597, 340, -597, -597, 345, -597, -597, 346, -597, -597,
- 258, 1047, 801, 402, 650, -597, -597, -597, -597, -597,
- -597, 130, 548, 890, 965, -597, -597, -597, -597, 38,
- 379, 42, 42, -597, -597, -597, -597, -597, 38, -597,
- 348, -597, 341, 335, 350, -597, -597, 1082, 258, -597,
- 42, 344, -597, -597, -597, -597, 314, 328, 165, 167,
- 167, 116, 116, -597, -597, -597, 452, 187, 368, 454,
- 371, 776, -597, -597, 367, -597, -597, -597, 380, -597,
- -597, -597, -597, -597, -597, 702, -597, -597, -597, -597,
- -597, 381, -597, -597, -597, 384, 374, -597, 398, 399,
- 400, 383, 403, -597, 260, -597, 459, 258, -597, -597,
- -597, -597, -597, -597, 42, 42, 42, -597, 404, -597,
- -597, -597, -597, -597, -597, -597, -597, -597, -597, 405,
- -597, -597, -597, 1164, 883, 466, 841, -597, 258, 376,
- -597, -597, 51, 92, 412, 415, 416, 376, 417, -597,
- -597, -597, -597, -597, -597, 60, -597, -597, 418, 419,
- 258, -597, 202, 318, -597, 420, -597, -597, -597, -597,
- 220, -597, 423, -597, 424, 425, 426, 428, 429, -597,
- 258, -597, -597, -597, -597, -597, 430, 431, -597, 130,
- 130, -597, -597, -597, -597, -597, -597, -597, -597, 432,
- -597, 433, 96, 96, 96, 434, -597, 435, 436, 437,
- 447, 448, 453, -597, -597, -597, 455, 456, 450, 457,
- -597, -597, -597, -597, -597, -597, -597, -597, -597, -597,
- 402, 402, 335, -597, -597, 458, 427, 460, -597, 474,
- -597, -597, -597, -597, -597, 1213, -597, 42, -597, -597,
- -597, -597, -597, -597, -597, -597, -597, 61, -597, -597,
- -597, -597, -597, -597, -597, -597, -597, -597, -597, -597,
- -597, -597, -597, 440, 440, -597, -597, -597, -597, 841,
- -597, -597, -597, -597, -597, -597, -597, -597, -597, 461,
- 463, 464, 465, 202, 42, -597, -597, -597, -597, 469,
- 258, 63, -597, -597, 473, 509, -597, -597, -597, -597,
- -597, 445, -597, 42, -597, -597, -597, -597, -597, 258,
- 477, 478, -597, -597, 440, 500, -597, 487, 559, 557,
- 557, -597, 541, 505, -597, -597, 258, 510, -597, 64,
- 495, -597, -597, 184, -597, -597, 496, -597, -597, -597,
- -597, -597, -597, -597, -597, 543, 600, -597, 516, -597,
- 557, -597, -597, -597, -597, -597, -597, -597, 841, -597,
- 512, 522, 557, 523, 565, -597, 42, -597, -597, 538,
- -597, 526, 189, 557, -597, 545, 402, 542, 544, 93,
- -597, 73, -597, -597, -597, -597, -597, -597, -597, -597,
- 258, -597, 550, -597, -597, -597, -597, 531, -597, -597,
- -597, -597, -597, -597, -597, -597, 260, 97, -597, 559,
- 42, 42, 533, -597, 600, -597, 554, 841, 601, 556,
- -597, -597, -597, -597, -597, 547, 552, -597, -597, -597,
- -597, -597, -597, -597, -597, -597, 562, -597, -597, 42,
- 189, -597, 551, -597, -597, 566, -597, -597, -597, -597,
- 597, -597, 569, 585, -597, -597, 603, -597
+ -611, 63, 739, -611, -611, -611, -611, -611, -611, -611,
+ -611, -611, -611, -611, 41, 66, 98, 107, -611, 41,
+ 41, -611, 38, 38, -611, -611, 41, -611, -611, 7,
+ -611, 674, 29, 56, -611, -611, 70, -611, -611, -611,
+ -611, -611, -611, 270, -611, -611, -611, -611, -611, 1312,
+ 93, -611, -611, 69, -611, 128, -611, -611, -611, -611,
+ -611, -611, -611, -611, -611, -611, -611, -611, -611, -611,
+ -611, -611, -611, -611, 110, -611, -611, -611, 110, -611,
+ -611, 124, 132, 586, 38, 41, 1421, 41, 41, 41,
+ 41, -611, -611, -611, 71, 41, 112, -611, 118, 41,
+ -611, 110, 41, 135, 146, 41, -611, -611, 16, -611,
+ 21, -611, -611, 149, -611, 151, 168, 705, -611, -611,
+ -611, 181, 228, -611, 188, 204, 217, 166, -611, 159,
+ -611, -611, -611, -611, -611, -611, 216, -611, -611, -611,
+ -611, -611, -611, 227, -611, -611, -611, -611, -611, -611,
+ -611, -611, -611, -611, -611, -611, -611, -611, -611, -611,
+ -611, 128, -611, -611, -611, 15, -611, -611, 218, -611,
+ 220, 225, 226, -611, 38, 229, 231, 233, -611, 235,
+ 236, 237, 239, 241, 240, 246, 243, -611, -611, -611,
+ 248, 249, -611, -611, -611, -611, 227, -611, -611, -611,
+ -611, -611, -611, -611, -611, -611, 227, -611, -611, -611,
+ -611, -611, -611, -611, -611, 250, -611, 251, -611, -611,
+ 253, -611, 340, -611, -611, -611, 34, 44, -611, -611,
+ -611, 586, -611, -611, -611, -611, 254, -611, -611, -611,
+ -611, 341, -611, -611, 49, 255, -611, -611, -611, -611,
+ -611, -611, -611, -611, 344, -611, 117, 258, 306, -611,
+ -611, -611, -611, -611, -611, 227, -611, -611, 257, -611,
+ -611, -611, -611, -611, -611, -611, -611, -611, 306, 265,
+ 266, -611, -611, -611, 41, 41, 267, 268, -611, -611,
+ -611, 272, -611, 340, -611, -611, -611, -611, -611, -611,
+ 357, -611, 276, 275, -611, -611, -611, -611, -611, -611,
+ -611, -611, -611, -611, 152, 152, 152, 117, 227, -611,
+ -611, 274, 277, 279, 104, 145, 140, -611, -611, -611,
+ -611, -611, 38, -611, -611, -611, -611, 281, -611, 38,
+ -611, 117, 117, 117, 273, -611, -611, -611, -611, -611,
+ -611, -611, 139, -611, 1, -611, -611, -611, -611, -611,
+ -611, -611, -611, 38, 306, -611, -611, -611, 290, 253,
+ 1158, 1181, 294, 288, -611, 705, -611, -611, -611, 280,
+ 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
+ 295, 41, -611, 227, 910, 523, 117, -611, -611, -611,
+ -611, -611, 117, -611, 1261, -611, -611, -611, 428, 622,
+ -611, -611, -611, -611, 62, 332, 38, 38, -611, -611,
+ -611, -611, -611, 62, -611, 309, -611, 307, -611, 310,
+ -611, -611, 945, 227, -611, 38, 306, -611, -611, -611,
+ -611, 315, -611, -611, 41, -611, -611, 318, 319, 405,
+ 323, -611, -611, 277, 279, 104, 145, 145, 140, 140,
+ -611, -611, -611, -611, -611, 324, -611, -611, -611, 327,
+ -611, -611, -611, -611, -611, -611, 866, -611, -611, -611,
+ -611, -611, 329, -611, 1402, -611, -611, 333, 328, 1003,
+ 331, 334, 335, 330, -611, 325, -611, 338, -611, -611,
+ -611, 339, 345, 252, 38, 38, 38, -611, 346, -611,
+ -611, -611, -611, -611, -611, -611, 41, 41, -611, 347,
+ -611, -611, -611, 1029, 826, 393, 1456, -611, 227, 340,
+ -611, -611, 57, 64, 350, 351, 352, 340, 353, -611,
+ -611, 3, -611, 48, -611, -611, 359, 360, 227, -611,
+ 154, 1421, -611, 413, -611, -611, -611, -611, 49, -611,
+ 355, -611, 367, 369, 376, 378, 380, -611, 227, -611,
+ -611, -611, -611, -611, 381, 382, -611, -611, -611, -611,
+ -611, -611, -611, -611, -611, 117, -611, 340, -611, 383,
+ 41, -611, -611, 464, 227, -611, -611, -611, -611, -611,
+ -611, 65, 65, 65, 385, -611, 386, 387, 388, 389,
+ 390, 397, -611, -611, -611, 398, 399, 400, 404, -611,
+ -611, -611, -611, -611, -611, -611, -611, -611, -611, 117,
+ -611, -611, -611, 41, -611, 408, 401, 409, -611, 434,
+ -611, -611, -611, -611, -611, 414, 117, 415, 1287, -611,
+ 38, -611, -611, -611, -611, -611, -611, -611, -611, -611,
+ 50, -611, 330, 338, -611, -611, 395, -611, -611, -611,
+ -611, -611, -611, -611, -611, -611, -611, 403, 403, -611,
+ -611, -611, -611, 1456, 41, -611, 117, 402, -611, -611,
+ -611, -611, -611, 417, 422, 424, 425, 154, -611, -611,
+ -611, 38, -611, -611, -611, -611, 429, 227, 54, -611,
+ -611, 430, -611, 481, -611, -611, -611, -611, -611, -611,
+ -611, -611, 38, -611, -611, -611, -611, -611, 227, 431,
+ 1074, -611, -611, 403, -611, 433, 419, 493, 507, 507,
+ 41, 492, 457, 444, -611, 227, 467, -611, -611, 454,
+ -611, -611, -611, -611, 455, -611, -611, -611, -611, -611,
+ -611, -611, -611, -611, 501, 559, 458, -611, 507, 85,
+ 1456, -611, 471, 461, 507, 465, 509, 41, 38, -611,
+ -611, 480, -611, 468, 215, 507, -611, -611, -611, -611,
+ -611, -611, -611, -611, -611, -611, -611, -611, -611, -611,
+ -611, -611, 227, -611, 479, -611, -611, -611, -611, 469,
+ -611, -611, -611, 489, 117, 485, 490, 72, -611, 219,
+ 41, 493, 38, 38, 474, 41, 559, -611, 487, 1456,
+ 543, -611, -611, -611, -611, -611, 1376, -611, -611, -611,
+ 477, 478, -611, -611, -611, -611, -611, -611, -611, 495,
+ -611, -611, -611, -611, 38, 215, 41, 486, -611, 41,
+ 497, 499, -611, -611, -611, -611, -611, -611, 517, -611,
+ 500, 513, -611, -611, 518, -611
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -928,179 +954,184 @@ static const yytype_int16 yypact[] =
means the default is an error. */
static const yytype_uint16 yydefact[] =
{
- 4, 0, 192, 1, 0, 35, 141, 37, 67, 201,
- 262, 278, 313, 361, 192, 0, 0, 0, 91, 192,
- 192, 472, 0, 0, 542, 563, 0, 3, 5, 39,
- 21, 58, 0, 0, 19, 61, 74, 63, 23, 75,
- 80, 76, 81, 74, 77, 78, 62, 15, 191, 9,
- 207, 264, 203, 312, 204, 230, 231, 205, 17, 11,
- 13, 25, 432, 431, 434, 27, 470, 29, 502, 504,
- 503, 501, 74, 520, 521, 500, 74, 31, 33, 0,
- 0, 0, 0, 192, 0, 192, 192, 192, 192, 242,
- 0, 206, 74, 192, 74, 85, 74, 192, 79, 74,
- 192, 438, 513, 192, 136, 132, 0, 131, 0, 192,
- 192, 194, 43, 0, 0, 0, 192, 6, 7, 0,
- 94, 69, 0, 0, 0, 246, 248, 0, 252, 253,
- 256, 257, 258, 259, 255, 260, 261, 327, 335, 340,
- 89, 214, 99, 210, 212, 213, 211, 215, 244, 245,
- 216, 220, 217, 219, 218, 221, 222, 264, 227, 0,
- 228, 229, 223, 0, 226, 224, 334, 225, 339, 0,
- 0, 0, 280, 0, 0, 0, 0, 0, 0, 0,
- 0, 514, 507, 516, 0, 0, 566, 562, 36, 255,
- 154, 142, 146, 150, 151, 147, 148, 149, 152, 153,
- 38, 68, 202, 208, 263, 279, 314, 362, 137, 70,
- 511, 71, 0, 512, 92, 443, 473, 0, 429, 134,
- 430, 0, 0, 0, 40, 22, 0, 527, 523, 524,
- 529, 526, 530, 528, 525, 522, 0, 45, 535, 0,
- 0, 20, 93, 72, 64, 24, 82, 247, 254, 249,
- 251, 0, 0, 96, 326, 323, 331, 336, 16, 10,
- 265, 0, 18, 12, 14, 26, 435, 28, 484, 471,
- 30, 96, 0, 0, 32, 34, 570, 192, 192, 0,
- 0, 86, 441, 439, 481, 133, 0, 543, 564, 136,
- 180, 181, 182, 184, 187, 186, 188, 189, 185, 183,
- 0, 0, 0, 0, 177, 195, 156, 157, 159, 161,
- 163, 166, 169, 173, 178, 0, 196, 199, 4, 531,
- 0, 536, 0, 532, 561, 155, 560, 59, 0, 110,
- 101, 250, 190, 0, 328, 0, 90, 0, 0, 0,
- 271, 281, 445, 488, 515, 508, 517, 567, 143, 242,
- 209, 235, 236, 237, 243, 315, 363, 110, 0, 96,
- 479, 474, 135, 0, 443, 0, 174, 175, 176, 0,
+ 4, 0, 0, 3, 1, 38, 143, 40, 70, 220,
+ 281, 296, 331, 379, 0, 0, 0, 0, 94, 0,
+ 0, 490, 0, 0, 559, 580, 0, 6, 7, 42,
+ 24, 61, 0, 0, 22, 64, 77, 66, 26, 78,
+ 83, 79, 84, 77, 80, 81, 65, 18, 10, 0,
+ 0, 12, 226, 283, 222, 330, 223, 249, 250, 224,
+ 20, 14, 16, 28, 450, 449, 452, 30, 488, 32,
+ 520, 522, 521, 519, 77, 538, 539, 518, 77, 34,
+ 36, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 139, 261, 225, 77, 0, 77, 88, 77, 0,
+ 82, 77, 0, 456, 531, 0, 138, 134, 0, 133,
+ 0, 209, 209, 0, 46, 0, 0, 0, 209, 8,
+ 9, 0, 97, 72, 0, 0, 0, 265, 267, 0,
+ 271, 272, 275, 276, 277, 278, 274, 279, 280, 345,
+ 353, 358, 92, 233, 102, 229, 231, 232, 230, 234,
+ 263, 264, 235, 239, 236, 238, 237, 240, 241, 283,
+ 246, 0, 247, 248, 242, 0, 245, 243, 352, 244,
+ 357, 0, 0, 5, 0, 207, 0, 0, 298, 0,
+ 0, 0, 0, 0, 0, 0, 0, 532, 525, 534,
+ 0, 0, 583, 579, 39, 274, 156, 144, 148, 152,
+ 153, 149, 150, 151, 154, 155, 41, 71, 221, 227,
+ 282, 297, 332, 380, 73, 529, 74, 0, 530, 95,
+ 461, 491, 0, 447, 136, 448, 0, 0, 193, 43,
+ 25, 0, 545, 541, 542, 547, 544, 548, 546, 543,
+ 540, 0, 48, 552, 0, 0, 23, 96, 75, 67,
+ 27, 85, 266, 273, 268, 270, 0, 0, 99, 344,
+ 341, 349, 354, 19, 11, 210, 13, 284, 0, 21,
+ 15, 17, 29, 453, 31, 502, 489, 33, 99, 0,
+ 0, 35, 37, 587, 0, 0, 0, 0, 89, 459,
+ 457, 499, 135, 0, 560, 208, 581, 196, 4, 549,
+ 0, 553, 0, 550, 182, 183, 184, 186, 189, 188,
+ 190, 191, 187, 185, 0, 0, 0, 0, 179, 578,
+ 157, 158, 159, 161, 163, 165, 168, 171, 175, 180,
+ 577, 62, 0, 112, 104, 269, 192, 0, 346, 0,
+ 93, 0, 0, 0, 213, 209, 299, 463, 506, 533,
+ 526, 535, 584, 145, 261, 228, 254, 255, 256, 262,
+ 333, 381, 112, 0, 99, 497, 492, 137, 0, 461,
+ 0, 0, 3, 0, 49, 0, 176, 177, 178, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 193, 197, 192, 41, 0, 46, 533, 558, 192, 73,
- 130, 0, 0, 0, 0, 95, 324, 332, 337, 266,
- 270, 0, 0, 436, 0, 110, 101, 351, 356, 0,
- 466, 0, 0, 575, 349, 350, 571, 573, 0, 577,
- 0, 569, 0, 0, 232, 192, 270, 0, 442, 440,
- 0, 96, 544, 565, 200, 179, 158, 160, 162, 164,
- 165, 167, 168, 170, 171, 172, 0, 0, 0, 0,
- 0, 0, 192, 60, 127, 125, 371, 372, 0, 109,
- 117, 111, 121, 119, 123, 0, 113, 115, 376, 107,
- 105, 0, 100, 102, 103, 0, 0, 329, 0, 0,
- 0, 0, 271, 276, 0, 272, 246, 292, 287, 288,
- 289, 290, 282, 291, 0, 0, 0, 456, 0, 444,
- 446, 448, 450, 452, 454, 458, 192, 192, 489, 0,
- 487, 490, 492, 0, 0, 0, 0, 462, 461, 0,
- 465, 464, 0, 0, 0, 0, 0, 0, 0, 568,
- 144, 346, 342, 345, 233, 0, 316, 321, 271, 0,
- 480, 475, 0, 0, 198, 3, 42, 537, 47, 534,
- 0, 128, 0, 66, 0, 0, 0, 0, 0, 375,
- 405, 402, 403, 404, 366, 374, 0, 0, 192, 0,
- 0, 84, 104, 330, 325, 333, 338, 267, 269, 0,
- 273, 0, 0, 0, 0, 0, 437, 0, 0, 0,
- 0, 0, 0, 494, 497, 486, 0, 0, 0, 0,
- 352, 357, 460, 556, 557, 576, 572, 574, 463, 578,
- 0, 0, 343, 192, 322, 0, 318, 0, 88, 0,
- 554, 550, 552, 545, 549, 0, 559, 0, 126, 118,
- 112, 122, 120, 124, 192, 114, 116, 0, 108, 106,
- 277, 192, 283, 469, 467, 468, 457, 447, 449, 451,
- 453, 455, 459, 0, 0, 491, 493, 510, 519, 0,
- 192, 145, 347, 344, 234, 317, 319, 365, 476, 0,
- 0, 0, 0, 547, 0, 53, 39, 48, 52, 0,
- 129, 0, 377, 274, 0, 380, 495, 498, 353, 358,
- 241, 0, 192, 0, 555, 551, 553, 546, 548, 55,
- 0, 192, 54, 367, 0, 0, 284, 0, 0, 412,
- 412, 192, 416, 238, 348, 320, 477, 0, 49, 0,
- 0, 378, 275, 0, 381, 388, 0, 387, 409, 496,
- 499, 354, 413, 359, 239, 483, 0, 51, 393, 368,
- 412, 299, 306, 304, 285, 295, 296, 303, 0, 383,
- 384, 0, 412, 0, 420, 192, 0, 478, 541, 0,
- 540, 0, 0, 412, 379, 0, 0, 0, 0, 0,
- 192, 301, 389, 385, 410, 355, 414, 417, 360, 240,
- 482, 56, 538, 392, 406, 407, 408, 0, 398, 399,
- 369, 300, 307, 305, 286, 294, 0, 0, 192, 0,
- 0, 0, 0, 192, 0, 394, 395, 0, 424, 0,
- 309, 297, 302, 390, 386, 0, 0, 418, 57, 539,
- 396, 400, 421, 370, 308, 192, 0, 411, 415, 0,
- 0, 192, 0, 310, 298, 0, 397, 401, 422, 419,
- 0, 428, 0, 425, 423, 426, 0, 427
+ 575, 0, 76, 132, 0, 0, 0, 209, 98, 342,
+ 350, 355, 0, 211, 0, 285, 289, 209, 454, 0,
+ 112, 104, 369, 374, 0, 484, 0, 0, 592, 367,
+ 368, 588, 590, 0, 594, 0, 586, 0, 209, 251,
+ 209, 289, 0, 460, 458, 0, 99, 561, 582, 200,
+ 194, 0, 202, 195, 0, 197, 203, 0, 0, 0,
+ 0, 551, 181, 160, 162, 164, 166, 167, 169, 170,
+ 172, 173, 174, 209, 63, 129, 127, 389, 390, 0,
+ 111, 119, 113, 123, 121, 125, 0, 115, 117, 394,
+ 109, 108, 0, 103, 0, 105, 106, 0, 0, 0,
+ 0, 0, 0, 133, 214, 0, 215, 218, 294, 291,
+ 290, 0, 209, 0, 0, 0, 0, 474, 0, 462,
+ 464, 466, 468, 470, 472, 476, 0, 0, 507, 0,
+ 505, 508, 510, 0, 0, 0, 0, 480, 479, 0,
+ 483, 482, 0, 0, 0, 0, 0, 0, 0, 585,
+ 146, 0, 252, 0, 334, 339, 209, 0, 498, 493,
+ 0, 0, 198, 206, 199, 45, 554, 50, 0, 130,
+ 0, 69, 0, 0, 0, 0, 0, 393, 423, 420,
+ 421, 422, 384, 392, 0, 0, 209, 87, 110, 107,
+ 348, 347, 343, 351, 356, 0, 212, 0, 216, 0,
+ 0, 286, 288, 265, 310, 305, 306, 307, 308, 300,
+ 309, 0, 0, 0, 0, 455, 0, 0, 0, 0,
+ 0, 0, 512, 515, 504, 0, 0, 0, 0, 370,
+ 375, 478, 573, 574, 593, 589, 591, 481, 595, 0,
+ 364, 360, 363, 0, 340, 0, 336, 0, 91, 0,
+ 571, 567, 569, 562, 566, 0, 0, 0, 0, 576,
+ 0, 128, 120, 114, 124, 122, 126, 209, 116, 118,
+ 0, 219, 0, 218, 295, 292, 0, 487, 485, 486,
+ 475, 465, 467, 469, 471, 473, 477, 0, 0, 509,
+ 511, 528, 537, 0, 0, 147, 0, 361, 253, 335,
+ 337, 383, 494, 0, 0, 0, 0, 564, 201, 205,
+ 204, 0, 56, 42, 51, 55, 0, 131, 0, 395,
+ 217, 0, 301, 398, 513, 516, 371, 376, 260, 365,
+ 362, 209, 0, 572, 568, 570, 563, 565, 58, 0,
+ 0, 57, 385, 0, 293, 0, 0, 0, 430, 430,
+ 0, 434, 257, 0, 338, 495, 0, 52, 54, 0,
+ 396, 302, 399, 406, 0, 405, 427, 514, 517, 372,
+ 431, 377, 258, 366, 501, 0, 411, 386, 430, 0,
+ 0, 401, 402, 0, 430, 0, 438, 0, 0, 496,
+ 558, 0, 557, 0, 0, 430, 397, 317, 324, 322,
+ 303, 313, 314, 321, 407, 403, 428, 373, 432, 435,
+ 378, 259, 500, 59, 555, 410, 424, 425, 426, 0,
+ 416, 417, 387, 0, 0, 0, 0, 0, 209, 319,
+ 0, 0, 0, 0, 0, 0, 0, 412, 413, 0,
+ 442, 318, 325, 323, 304, 312, 0, 320, 408, 404,
+ 0, 0, 436, 60, 556, 414, 418, 439, 388, 0,
+ 327, 315, 429, 433, 0, 0, 0, 0, 326, 0,
+ 0, 0, 415, 419, 440, 328, 316, 437, 0, 446,
+ 0, 443, 441, 444, 0, 445
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -597, -597, 362, 237, -597, -582, -597, -597, -597, -597,
- -597, -597, -597, -597, -597, -597, -597, -597, -597, -597,
- -558, -597, -597, -597, -597, -597, -597, -597, -597, -597,
- -597, -597, -597, -597, -597, -34, -597, -597, -597, -597,
- -597, -597, -597, -597, -597, -597, -597, 244, -597, -597,
- 162, -597, -597, -597, 666, -597, -597, -597, -597, -597,
- -597, -597, 670, -597, 272, -597, -597, -235, -597, -597,
- 281, -597, -597, -597, -597, -276, -352, -597, -597, -597,
- -597, -597, -597, -597, -597, -316, -597, -597, -22, -597,
- -597, -189, -11, -597, 13, -597, -597, -597, -597, 462,
- 79, -207, -597, 320, 322, 319, -65, -73, -24, 66,
- -597, -304, 0, -597, -597, -597, -597, 248, 14, -597,
- -597, -597, -71, 301, -438, -597, -597, -597, 55, -597,
- -597, -576, -14, -597, -597, -3, -597, -56, -597, -597,
- -43, -42, -55, -51, -50, -597, -597, -37, -597, -36,
- -597, -597, -597, -597, 280, 358, -597, -254, -597, -597,
- -597, -33, -597, -31, -597, -597, -597, -597, -597, -597,
- -597, -597, -597, -70, -597, -597, -597, -597, -597, -95,
- -597, -597, -597, -597, -597, -597, -597, -38, -597, -597,
- -597, -597, -597, -597, -597, 11, -597, -597, -597, -597,
- -597, -597, -597, -67, -597, -597, -597, -66, -597, -597,
- -597, -597, -597, -597, -597, 95, -597, -597, -323, -597,
- -597, -597, -597, -597, -597, -597, -597, -597, -597, 16,
- -597, -597, -597, -597, -597, -597, -597, -597, -597, -597,
- -597, -597, -597, -597, -597, -596, -597, -597, -597, -597,
- -597, -90, -597, -597, -597, -597, -597, -597, -597, -597,
- -126, -597, -597, -487, -597, -543, -597, -597, -597, -597,
- -597, -597, -597, -597, -597, -597, -597, -597, -597, -597,
- 18, 19, -597, -597, -597, -597, -597, -597, -597, -597,
- -597, 359, -597, -597, -597, -597, -597, -597, -597, -597,
- -597, -597, -305, 304, -303, -597, -597, -597, -597, -597,
- -597, -597, -597, -597, -597, -597, -597, -597, -597, -597,
- -597, -597, -597, -597, -597, -597, -597, -597, -597, -597,
- -597, -597, -597, -597, -597, -597, -597, -597, -597, -597,
- -597, -597, -597, -597, -597, -597, 648, -597, -597, -597,
- -597, -597, -597, -597, -597, -597, -597, 279, -597, -597,
- -75, -597, -597, -597, -597, -597, -597, -597, 69, -597,
- -597, -597, 347, -597, -597, 195, -597, -597, -597, -597,
- -597, -597, -597, -597, -597, -597, -597, -597, -597
+ -611, -611, 311, 312, 565, -598, -611, -611, -611, -611,
+ -611, -611, -611, -611, -611, -611, -611, -611, -611, -611,
+ -611, -590, -611, -611, -611, -611, -611, -611, -611, -611,
+ -611, -611, -611, -611, -611, -611, -122, -611, -611, -611,
+ -611, -611, -611, -611, -611, -611, -611, -611, 238, -611,
+ -611, 9, -611, -611, -611, 598, -611, -611, -611, -611,
+ -611, -611, -611, 600, -611, 242, -611, -611, -248, -611,
+ -611, 208, -611, -611, -611, -268, -353, -611, -611, -611,
+ -611, -611, -611, -611, -611, -331, -611, -611, -22, -611,
+ -611, -187, -10, -611, 17, -611, -611, -611, -611, -195,
+ -9, -224, -611, 244, 263, 245, -120, -114, -90, -13,
+ -611, -303, -611, -611, -611, -611, -611, -611, -611, -611,
+ -611, 0, 571, -611, -611, -611, -611, -41, 59, 20,
+ -611, 99, -611, -28, 162, -444, -611, -611, -611, 68,
+ -611, -611, -610, -81, -611, -611, -7, -611, -70, -611,
+ -611, -50, -49, -58, -55, -52, 293, -611, -40, -611,
+ -37, -611, -611, -611, -611, 256, 326, 176, -611, -611,
+ -611, -32, -611, -31, -611, -611, -611, -611, -611, -611,
+ -611, -611, -611, -153, -611, -611, -611, -611, -611, -150,
+ -611, -611, -611, -611, -611, -611, -611, -38, -611, -611,
+ -611, -611, -611, -611, -611, -39, -611, -611, -611, -611,
+ -611, -611, -611, -66, -611, -611, -611, -65, -611, -611,
+ -611, -611, -611, -611, -611, -15, -611, -611, -338, -611,
+ -611, -611, -611, -611, -611, -611, -611, -611, -611, 22,
+ -611, -611, -611, -611, -611, -611, -611, -611, -611, -611,
+ -611, -611, -611, -611, -611, -594, -611, -611, -611, -611,
+ -611, -140, -611, -611, -611, -611, -611, -611, -611, -611,
+ -172, -611, -611, -500, -611, -550, -611, -611, -611, -611,
+ -611, -611, -611, -611, -611, -611, -611, -611, -611, -611,
+ 25, 27, -611, -611, -611, -611, -611, -611, -611, -611,
+ -611, 320, -611, -611, -611, -611, -611, -611, -611, -611,
+ -611, -611, -309, 261, -293, -611, -611, -611, -611, -611,
+ -611, -611, -611, -611, -611, -611, -611, -611, -611, -611,
+ -611, -611, -611, -611, -611, -611, -611, -611, -611, -611,
+ -611, -611, -611, -611, -611, -611, -611, -611, -611, -611,
+ -611, -611, -611, -611, -611, -611, 610, -611, -611, -611,
+ -611, -611, -611, -611, -611, -611, 316, -611, -611, -136,
+ -611, -611, -611, -611, -611, -611, -611, -5, -611, -611,
+ -611, 285, -611, -611, 138, -611, -611, -611, -611, -611,
+ -611, -611, -611, -611, -611, -611, -611, -611
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- -1, 1, 2, 27, 383, 28, 170, 174, 175, 169,
- 173, 119, 114, 123, 176, 178, 180, 184, 185, 80,
- 29, 82, 30, 113, 318, 448, 31, 32, 115, 322,
- 450, 625, 700, 677, 701, 678, 679, 717, 803, 33,
- 116, 388, 34, 35, 122, 329, 458, 36, 83, 37,
- 140, 328, 38, 39, 40, 124, 330, 471, 41, 212,
- 357, 539, 42, 253, 43, 100, 243, 336, 44, 45,
- 392, 472, 473, 570, 569, 391, 459, 555, 566, 567,
- 554, 557, 556, 558, 552, 389, 454, 627, 304, 217,
- 286, 107, 349, 46, 460, 81, 277, 422, 610, 191,
- 324, 332, 306, 307, 308, 309, 310, 311, 312, 313,
- 314, 333, 90, 48, 315, 316, 381, 317, 461, 84,
- 202, 278, 142, 143, 144, 145, 146, 50, 350, 424,
- 613, 351, 689, 713, 755, 352, 353, 147, 148, 149,
- 150, 151, 152, 153, 154, 155, 156, 51, 85, 52,
- 171, 340, 481, 399, 482, 578, 401, 485, 641, 705,
- 579, 53, 86, 54, 261, 402, 581, 684, 723, 768,
- 492, 744, 769, 745, 770, 826, 765, 746, 771, 747,
- 767, 766, 809, 811, 825, 55, 56, 57, 87, 279,
- 425, 615, 536, 616, 692, 537, 162, 337, 478, 163,
- 252, 394, 164, 165, 338, 479, 166, 167, 339, 480,
- 168, 354, 423, 532, 612, 533, 611, 691, 462, 414,
- 515, 659, 711, 752, 415, 516, 660, 712, 754, 463,
- 88, 280, 426, 617, 464, 634, 720, 763, 808, 465,
- 564, 475, 568, 704, 740, 686, 707, 708, 726, 750,
- 799, 727, 748, 798, 739, 761, 762, 787, 806, 830,
- 788, 807, 831, 565, 789, 729, 751, 800, 733, 753,
- 801, 778, 802, 829, 823, 832, 840, 842, 843, 846,
- 466, 467, 61, 62, 63, 177, 342, 498, 64, 215,
- 359, 283, 358, 403, 499, 587, 588, 589, 590, 591,
- 585, 592, 621, 519, 622, 418, 521, 502, 503, 504,
- 65, 179, 66, 103, 284, 431, 619, 693, 735, 361,
- 430, 757, 269, 343, 509, 404, 510, 596, 597, 511,
- 653, 709, 512, 654, 710, 67, 68, 69, 70, 71,
- 272, 405, 598, 72, 73, 74, 182, 271, 75, 273,
- 406, 599, 76, 236, 237, 323, 451, 238, 759, 782,
- 760, 77, 109, 363, 542, 672, 623, 673, 624, 670,
- 671, 669, 419, 240, 387, 326, 78, 79, 110, 364,
- 187, 276, 420, 347, 421, 525, 526, 524, 528
+ -1, 1, 2, 3, 27, 28, 172, 176, 180, 181,
+ 171, 179, 121, 116, 125, 182, 184, 186, 190, 191,
+ 82, 29, 84, 30, 115, 298, 448, 31, 32, 117,
+ 302, 450, 648, 729, 704, 730, 705, 706, 746, 825,
+ 33, 118, 391, 34, 35, 124, 333, 469, 36, 85,
+ 37, 142, 332, 38, 39, 40, 126, 334, 482, 41,
+ 217, 362, 547, 42, 258, 43, 102, 248, 340, 44,
+ 45, 395, 483, 484, 485, 394, 470, 563, 574, 575,
+ 562, 565, 564, 566, 560, 392, 465, 650, 318, 222,
+ 293, 109, 354, 46, 471, 83, 284, 427, 629, 197,
+ 319, 336, 321, 322, 323, 324, 325, 326, 327, 328,
+ 329, 337, 48, 297, 370, 443, 551, 444, 445, 647,
+ 49, 404, 295, 344, 403, 495, 496, 588, 497, 472,
+ 86, 208, 285, 209, 145, 146, 147, 148, 52, 355,
+ 429, 633, 356, 717, 742, 777, 357, 358, 149, 150,
+ 151, 152, 153, 154, 155, 156, 157, 158, 53, 87,
+ 54, 177, 345, 501, 405, 502, 592, 500, 590, 711,
+ 589, 55, 88, 56, 268, 407, 666, 735, 769, 816,
+ 599, 790, 817, 791, 818, 860, 813, 792, 819, 793,
+ 815, 814, 849, 851, 859, 57, 58, 59, 89, 286,
+ 430, 635, 544, 636, 721, 545, 164, 341, 490, 165,
+ 257, 397, 166, 167, 342, 491, 168, 169, 343, 492,
+ 170, 359, 428, 631, 687, 632, 686, 743, 473, 419,
+ 525, 683, 740, 774, 420, 526, 684, 741, 776, 474,
+ 90, 287, 431, 637, 475, 657, 749, 785, 830, 476,
+ 572, 487, 576, 733, 768, 714, 736, 737, 754, 772,
+ 821, 755, 770, 820, 767, 783, 784, 809, 828, 855,
+ 810, 829, 856, 573, 811, 757, 773, 822, 761, 775,
+ 823, 800, 824, 854, 848, 857, 868, 870, 871, 874,
+ 477, 478, 63, 64, 65, 183, 347, 508, 66, 220,
+ 364, 290, 363, 408, 509, 606, 607, 608, 609, 610,
+ 604, 611, 641, 529, 642, 423, 531, 512, 513, 514,
+ 67, 185, 68, 105, 291, 436, 639, 722, 764, 366,
+ 435, 779, 276, 348, 519, 409, 520, 615, 616, 521,
+ 677, 738, 522, 678, 739, 69, 70, 71, 72, 73,
+ 279, 410, 617, 74, 75, 76, 188, 278, 77, 280,
+ 411, 618, 78, 241, 242, 303, 243, 781, 804, 782,
+ 79, 111, 368, 550, 696, 643, 697, 644, 694, 695,
+ 693, 424, 245, 390, 330, 80, 81, 112, 369, 193,
+ 283, 425, 352, 426, 535, 536, 534, 538
};
/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
@@ -1108,485 +1139,542 @@ static const yytype_int16 yydefgoto[] =
number is the opposite. If YYTABLE_NINF, syntax error. */
static const yytype_int16 yytable[] =
{
- 106, 108, 4, 89, 111, 161, 157, 158, 101, 102,
- 159, 91, 160, 203, 198, 199, 305, 47, 49, 395,
- 58, 141, 59, 60, 413, 192, 195, 561, 285, 601,
- 196, 197, 325, 396, 397, 398, 344, 664, 193, 194,
- 474, 104, 416, 675, 417, 104, 161, 157, 158, 3,
- 208, 159, 508, 160, 603, 287, -2, 517, 687, 190,
- 200, 288, 141, 614, 682, 5, 703, 676, 6, 7,
- 8, 9, 201, 218, 204, 205, 206, 207, 561, 219,
- 497, 427, 210, 8, 10, 11, 213, 12, -138, 214,
- 219, 13, 216, 120, 741, 604, 369, 362, 500, 104,
- 501, -192, -192, 117, 14, 15, 16, 17, 721, 221,
- 222, 18, 223, 18, 19, 97, 239, 20, 112, 105,
- 21, 742, 743, 105, 429, 742, 743, 22, 23, 513,
- 118, 483, 219, -192, 24, 25, 674, 675, -192, -192,
- -192, -192, -192, -192, -192, -192, -192, -192, -192, -192,
- -192, -192, 26, -192, -192, -192, -192, 26, 434, 198,
- 199, 676, 474, 26, -311, 26, 26, 730, 26, 26,
- 192, 195, 688, 219, 220, 196, 197, 219, -192, 247,
- 219, -293, 248, 193, 194, 741, 476, 186, 5, 120,
- -139, 6, 7, 8, 9, 120, 541, 764, 121, 8,
- -140, -97, 26, 172, 190, 120, 120, 10, 11, 775,
- 12, -192, 742, 743, 13, 377, 378, 379, 188, 620,
- 790, 561, 813, 104, 784, 785, 786, 14, 15, 16,
- 17, -433, 407, 408, 181, -192, 18, 19, 181, 254,
- 20, 255, 18, 21, 249, 250, 93, 373, 374, 833,
- 22, 23, 407, 408, 209, 837, 211, 24, 25, 92,
- 94, 772, 409, 104, 375, 376, 348, 410, 125, 126,
- 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 10, 11, 409, 12, 137, 138, 139, 410, 96, 99,
- 411, 412, 26, 290, 291, 292, 293, 294, 295, 296,
- 297, 105, 441, 442, 298, 299, 390, 662, 439, 440,
- 561, -505, -44, 390, -44, 638, 639, 300, 301, 224,
- 821, 225, 302, 303, 241, 26, 242, 244, -44, -44,
- 602, -44, -44, 245, 251, -44, 428, 246, 608, 219,
- 256, 105, 257, 325, 260, 289, 488, 489, 258, 259,
- 620, 490, 491, 443, 444, 445, 262, -44, 266, 263,
- 264, -44, 265, 267, 493, 26, 366, 367, 368, 561,
- 268, 270, 141, 274, 275, -44, -506, 453, 281, 104,
- 487, 321, 447, 282, 320, 331, 327, 518, 334, 522,
- 523, 335, 341, 643, 644, 645, 518, 345, 562, 563,
- 346, 484, 355, 325, 356, 104, 370, 360, 540, 371,
- 380, 365, 384, 580, 385, 290, 291, 292, 293, 294,
- 295, 296, 297, 105, 372, 535, 298, 299, 386, 393,
- 432, -341, 446, 435, 530, 449, 529, 520, 452, 300,
- 301, 531, 534, 560, 302, 303, 161, 157, 158, 562,
- 563, 159, 550, 160, 104, 543, 546, 547, 548, 551,
- 47, 49, 141, 58, 573, 59, 60, 247, 553, 571,
- 572, 577, 582, 583, 584, 290, 291, 292, 293, 294,
- 295, 296, 297, 105, 815, 816, 298, 299, 574, 575,
- 576, -268, 586, 595, 560, 593, 594, 600, 605, 300,
- 301, 606, 607, 609, 302, 303, -364, 618, -8, 628,
- 629, 630, 631, 835, 632, 633, 635, 636, 640, 666,
- 646, 647, 648, 649, 290, 291, 292, 293, 294, 295,
- 296, 297, 105, 650, 651, 298, 299, 642, 657, 652,
- 668, 655, 656, 685, -382, 658, 665, 694, 667, 695,
- 696, 104, 714, 697, 303, 702, 486, 126, 127, 792,
- 706, 130, 131, 132, 133, 718, -50, 104, 637, 484,
- 484, 12, 125, 126, 127, 128, 129, 130, 131, 132,
- 133, 134, 135, 136, 10, 11, 722, 12, 137, 138,
- 139, 724, 562, 563, 725, 728, 732, 734, 738, 736,
- 749, 104, 756, 758, 773, 680, 125, 126, 127, 128,
- 129, 130, 131, 132, 133, 134, 135, 136, 10, 11,
- -391, 12, 137, 138, 139, 774, 776, 777, 781, 105,
- 783, 791, 794, 793, 681, 805, 817, 560, 47, 49,
- 822, 58, 804, 59, 60, 105, 820, 824, 834, 89,
- -98, 827, 699, 104, 838, 120, 828, 690, 125, 126,
+ 108, 110, 50, 159, 92, 163, 160, 93, 398, 103,
+ 104, 161, 162, 198, 418, 144, 113, 204, 205, 47,
+ 320, 143, 51, 688, 60, 201, 620, 61, 202, 62,
+ 349, 203, 569, 199, 200, 292, 299, 294, 399, 400,
+ 401, 106, 486, 421, 91, 123, 159, 296, 163, 160,
+ 702, 634, 106, 709, 161, 162, 518, 732, 703, 422,
+ 622, 196, 206, 4, 143, 106, 47, 623, 106, 51,
+ 507, 60, 8, 787, 61, 207, 62, 210, 211, 212,
+ 213, 527, 569, 187, 715, 215, 787, 187, -359, 218,
+ 174, 223, 219, 379, 432, 221, 225, 224, 114, 510,
+ 788, 789, 224, 214, 8, 216, 367, 259, -359, 260,
+ 630, 226, 227, 788, 789, 511, 434, 119, 244, 107,
+ 106, 174, 304, 305, 306, 307, 308, 309, 310, 311,
+ 107, 174, 702, 312, 313, 174, 174, 174, 224, 750,
+ 703, 174, 523, 107, 120, 224, 224, 18, 314, 315,
+ 178, 95, 265, 316, 317, 106, 18, -329, -140, -141,
+ 99, 198, -311, 122, 122, 204, 205, 254, 255, 412,
+ 413, 486, 488, 201, 252, 442, 202, 253, 494, 203,
+ 174, 199, 200, 716, 412, 413, 383, 384, 549, 758,
+ 304, 305, 306, 307, 308, 309, 310, 311, 107, 414,
+ -142, 312, 313, 122, 415, 122, -100, 416, 417, 196,
+ 838, 122, 640, 192, 414, 493, 314, 315, 786, 415,
+ 194, 316, 317, -451, 797, 304, 305, 306, 307, 308,
+ 309, 310, 311, 107, -523, 812, 312, 313, 228, 569,
+ 229, 387, 388, 389, 385, 386, 863, 788, 789, 865,
+ 806, 807, 808, 94, 96, 106, 230, 317, 98, 101,
+ 593, 128, 129, 456, 457, 132, 133, 134, 135, 246,
+ 794, 458, 459, 106, 353, 12, 247, 249, 127, 128,
+ 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
+ 10, 11, 250, 12, 139, 140, 141, 460, 461, 462,
+ 198, 376, 377, 378, 204, 205, 251, 256, 224, 261,
+ 393, 262, 201, 263, 264, 202, -208, 393, 203, 266,
+ 199, 200, 267, 269, 270, 271, 569, 272, 274, 846,
+ 273, 277, 447, 107, 320, 275, 281, 282, -524, 174,
+ 288, 433, 621, 106, 301, 300, 289, 331, 196, 338,
+ 627, 107, 335, 339, 350, 351, 360, 361, -101, 640,
+ 373, 661, 346, 122, 159, 365, 163, 160, 374, 375,
+ 380, 50, 161, 162, 381, 396, 499, 382, 402, 437,
+ 449, 464, 143, 719, -44, 569, 452, 441, 47, 463,
+ 530, 51, 528, 60, 532, 533, 61, 489, 62, 539,
+ 662, 528, 540, 552, 542, 320, 554, 503, 556, 555,
+ 570, 571, 557, 548, 667, 668, 669, 561, 559, 577,
+ 580, 579, 699, 582, 619, 585, 583, 584, 541, 591,
+ 543, 586, 587, 595, 553, -287, 605, 614, 624, 625,
+ 626, 628, 646, 651, 159, 596, 163, 160, 597, -382,
+ 638, 598, 161, 162, 568, 652, 499, 653, 412, 413,
+ 570, 571, 143, 558, 654, 600, 655, 143, 656, 658,
+ 659, 664, 252, 670, 671, 672, 673, 674, 675, 504,
+ 505, 594, 601, 602, 603, 676, 679, 680, 414, 506,
+ 681, 840, 841, 415, 682, 690, 416, 417, 689, 691,
+ 692, 712, 698, 700, 568, 723, 612, 613, 713, 630,
+ 724, 159, 725, 163, 160, 726, -400, 731, 734, 161,
+ 162, 747, 751, 861, 466, 752, -391, 6, 753, 143,
+ 9, -391, -391, -391, -391, -391, -391, -391, -391, -391,
+ -391, -391, -391, 10, 11, 756, 12, 760, -391, -391,
+ 13, 762, 763, 412, 413, 467, 468, -391, 765, 766,
+ 778, 771, 780, 14, -409, 795, 796, 479, 480, 481,
+ 798, 799, 803, 826, 805, 827, 660, 831, 833, 842,
+ 834, 845, 847, 852, 853, 866, 22, 23, 858, 106,
+ 832, 864, 869, 875, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 195, -391, 867, 872, 873, 748, 371,
+ 372, 140, 141, -86, 173, 100, 97, 570, 571, 524,
+ 685, 175, 710, 466, 453, -391, 6, 455, 707, 9,
+ -391, -391, -391, -391, -391, -391, -391, -391, -391, -391,
+ -391, -391, 10, 11, 454, 12, 663, -391, -391, 13,
+ 645, 581, 412, 413, 467, 468, -391, 708, 665, 759,
+ 578, 568, 14, 446, 835, 47, 516, 107, 51, 837,
+ 60, 406, 720, 61, 92, 62, 517, 718, -47, 728,
+ -47, 839, 744, 862, 537, 22, 23, 546, 189, 438,
+ 844, 451, 727, 515, -47, -47, 649, -47, -47, 0,
+ 745, -47, 0, -391, 570, 571, 0, 0, 0, 231,
+ 0, 232, -503, 0, 0, 0, 0, 0, 0, 0,
+ 0, 543, 0, -47, 0, 233, 234, -47, 235, 236,
+ 92, 0, 237, 718, 0, 0, 0, 0, 0, -2,
+ 5, -47, 0, 6, 7, 8, 9, 47, 568, 0,
+ 51, 0, 60, 0, 238, 61, 802, 62, 239, 10,
+ 11, 0, 12, 570, 571, 0, 13, 92, 0, 0,
+ 801, 0, 240, 0, 0, 0, 0, 0, 0, 14,
+ 15, 16, 17, 0, 0, 0, 0, 0, 18, 19,
+ 0, 0, 20, 0, 0, 21, 159, 0, 163, 160,
+ 393, 393, 22, 23, 161, 162, 0, 568, 850, 24,
+ 25, 0, 0, 0, 143, 843, 0, 0, 836, 0,
+ 0, 0, 0, 0, 0, 26, -209, 466, 0, -391,
+ 6, 0, 393, 9, -391, -391, -391, -391, -391, -391,
+ -391, -391, -391, -391, -391, -391, 10, 11, 0, 12,
+ 0, -391, -391, 13, 0, 0, 412, 413, 467, 468,
+ -391, 0, 0, 0, 0, 0, 14, 0, 0, 106,
+ 479, 480, 481, 0, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 195, 137, 138, 0, 0, 0, 22,
+ 23, 140, 141, 0, 0, 0, 0, 0, 0, 0,
+ 567, 0, 0, 0, 0, 0, 0, -391, 0, 0,
+ 0, 466, 0, -391, 6, 0, -536, 9, -391, -391,
+ -391, -391, -391, -391, -391, -391, -391, -391, -391, -391,
+ 10, 11, 0, 12, 0, -391, -391, 13, 0, 0,
+ 412, 413, 467, 468, -391, 0, 466, 107, -391, 6,
+ 14, 0, 9, -391, -391, -391, -391, -391, -391, -391,
+ -391, -391, -391, -391, -391, 10, 11, 0, 12, 0,
+ -391, -391, 13, 22, 23, 412, 413, 467, 468, -391,
+ 0, 0, 0, 0, 0, 14, 0, 0, 0, 0,
+ 0, -391, 0, 0, 0, 0, 0, 0, 0, 0,
+ -68, 0, 0, 0, 0, 0, 106, 0, 22, 23,
+ 0, 127, 128, 129, 130, 131, 132, 133, 134, 135,
+ 136, 137, 138, 0, 0, 0, -391, 139, 140, 141,
+ 466, 0, -391, 6, 0, -90, 9, -391, -391, -391,
+ -391, -391, -391, -391, -391, -391, -391, -391, -391, 10,
+ 11, 0, 12, 0, -391, -391, 13, 0, 0, 412,
+ 413, 467, 468, -391, 0, 0, 0, 0, 0, 14,
+ 0, 0, 0, 0, 0, 5, 0, 0, 6, 7,
+ 8, 9, 0, 0, 107, 0, 0, 0, 0, 0,
+ 174, 0, 22, 23, 10, 11, 0, 12, 0, 0,
+ 0, 13, 0, 0, 0, 0, 0, 0, 0, 0,
+ -391, 0, 0, 0, 14, 15, 16, 17, 0, -527,
+ 0, 0, 0, 18, 19, 0, 0, 20, 0, 0,
+ 21, 0, 0, 0, 0, 0, 0, 22, 23, 0,
+ 0, 0, 0, 0, 24, 25, 701, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 26, 106, 6, 0, -53, 439, 127, 128, 129, 130,
+ 131, 132, 133, 134, 135, 195, 137, 0, 0, 0,
+ 0, 12, 5, 140, 141, 6, 7, 8, 9, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 10, 11, 0, 12, 0, 0, 0, 13, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 14, 15, 16, 17, 0, 0, 0, 0, 0,
+ 18, 19, 0, 0, 20, 0, 0, 21, 0, 107,
+ 0, 0, 0, 0, 22, 23, 0, 0, 440, 0,
+ 0, 24, 25, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 498, 0, 106, 0, 0, 26, -209, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
+ 138, 10, 11, 0, 12, 139, 140, 141, 5, 0,
+ 0, 6, 7, 8, 9, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 10, 11, 0,
+ 12, 0, 0, 5, 13, 0, 6, 7, 8, 9,
+ 0, 0, 0, 0, 0, 0, 0, 14, 15, 16,
+ 17, 0, 10, 11, 0, 12, 18, 19, 0, 13,
+ 20, 0, 107, 21, 0, 0, 0, 0, 174, 0,
+ 22, 23, 14, 15, 16, 17, 0, 24, 25, 701,
+ 0, 18, 19, 0, 0, 20, 0, 0, 21, 0,
+ 0, 0, 0, 26, 0, 22, 23, 0, 0, 106,
+ 0, 0, 24, 25, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 136, 137, 138, 10, 11, 26, 12,
+ 139, 140, 141, 498, 0, 106, 0, 0, 0, 0,
127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
- 839, 716, 841, 844, 137, 138, 139, 845, 847, 105,
- 382, 562, 563, 98, 545, 737, 95, 514, 319, 661,
- 436, 438, 535, 437, 544, 477, 683, 731, 400, 795,
- 89, 719, 812, 715, 836, 104, 538, 663, 690, 814,
- 125, 126, 127, 128, 129, 130, 131, 132, 133, 189,
- 135, 136, 527, 433, 183, 810, 560, 138, 139, 819,
- 549, 105, 47, 49, 780, 58, 559, 59, 60, 0,
- 562, 563, 698, 0, 89, 626, 0, 0, 0, 0,
- 505, 0, 779, 0, 0, 0, 0, 0, 161, 157,
- 158, 0, 0, 159, 0, 160, 0, 0, 0, 0,
- 796, 797, 0, 0, 141, 0, 0, 0, 390, 390,
- 226, 0, 227, 105, 0, 560, 0, 0, 0, 0,
- 0, 0, 818, 0, 0, 0, 228, 229, 0, 230,
- 231, 0, 455, 232, -373, 6, 0, 390, 9, -373,
- -373, -373, -373, -373, -373, -373, -373, -373, -373, -373,
- -373, 10, 11, 0, 12, 233, -373, -373, 13, 234,
- 0, 407, 408, 456, 457, -373, 0, 0, 0, 0,
- 0, 14, 0, 235, 104, 468, 469, 470, 0, 125,
- 126, 127, 128, 129, 130, 131, 132, 133, 189, 135,
- 136, 0, 0, 0, 22, 23, 138, 139, 0, 0,
+ 137, 138, 10, 11, 106, 12, 139, 140, 141, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135, 136, 137,
+ 138, 10, 11, 0, 12, 139, 140, 141, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 107, 0, 106,
+ 0, 0, 0, 174, 127, 128, 129, 130, 131, 132,
+ 133, 134, 135, 195, 137, 138, 0, 0, 0, 0,
+ 0, 140, 141, 107, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -373, 0, 455, 0, -373, 6, 0, -83,
- 9, -373, -373, -373, -373, -373, -373, -373, -373, -373,
- -373, -373, -373, 10, 11, 0, 12, 0, -373, -373,
- 13, 0, 0, 407, 408, 456, 457, -373, 0, 0,
- 407, 408, 105, 14, 0, 0, 104, 468, 469, 470,
- 0, 125, 126, 127, 128, 129, 130, 131, 132, 133,
- 189, 494, 495, 0, 0, 0, 22, 23, 138, 139,
- 409, 496, 0, 0, 0, 410, 0, 0, 411, 412,
- 0, 0, 0, 0, -373, 0, 455, 0, -373, 6,
- 0, -518, 9, -373, -373, -373, -373, -373, -373, -373,
- -373, -373, -373, -373, -373, 10, 11, 0, 12, 0,
- -373, -373, 13, 0, 0, 407, 408, 456, 457, -373,
- 0, 0, 0, 0, 105, 14, 0, 0, 0, 506,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 507,
- 0, 0, 0, 0, 0, 0, 0, 0, 22, 23,
+ 0, 0, 107, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, -373, 0, 455, 0,
- -373, 6, 0, -485, 9, -373, -373, -373, -373, -373,
- -373, -373, -373, -373, -373, -373, -373, 10, 11, 0,
- 12, 0, -373, -373, 13, 0, 0, 407, 408, 456,
- 457, -373, 0, 455, 0, -373, 6, 14, 0, 9,
- -373, -373, -373, -373, -373, -373, -373, -373, -373, -373,
- -373, -373, 10, 11, 0, 12, 0, -373, -373, 13,
- 22, 23, 407, 408, 456, 457, -373, 0, 0, 0,
- 0, 0, 14, 0, 0, 0, 0, 0, -373, 0,
- 0, 0, 0, 0, 0, -65, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 22, 23, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, -373, 0, 455, 0, -373, 6, 0,
- -87, 9, -373, -373, -373, -373, -373, -373, -373, -373,
- -373, -373, -373, -373, 10, 11, 0, 12, 0, -373,
- -373, 13, 0, 0, 407, 408, 456, 457, -373, 0,
- 0, 0, 0, 0, 14, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 5, 0, 0, 6, 7, 8,
- 9, 0, 0, 0, 0, 0, 0, 22, 23, 0,
- 0, 0, 0, 10, 11, 0, 12, 0, 0, 0,
- 13, 0, 0, 0, 0, -373, 0, 0, 0, 0,
- 0, 0, -509, 14, 15, 16, 17, 0, 0, 0,
- 0, 0, 18, 19, 0, 0, 20, 0, 0, 21,
- 0, 0, 0, 0, 0, 0, 22, 23, 0, 0,
- 0, 0, 0, 24, 25, 674
+ 0, 0, 0, 0, 0, 0, 0, 107
};
static const yytype_int16 yycheck[] =
{
- 22, 23, 2, 14, 26, 43, 43, 43, 19, 20,
- 43, 14, 43, 84, 81, 81, 223, 4, 4, 335,
- 4, 43, 4, 4, 347, 81, 81, 465, 217, 516,
- 81, 81, 239, 337, 338, 339, 271, 613, 81, 81,
- 392, 3, 347, 625, 347, 3, 84, 84, 84, 0,
- 3, 84, 404, 84, 3, 3, 0, 19, 654, 81,
- 82, 3, 84, 3, 3, 1, 3, 625, 4, 5,
- 6, 7, 83, 75, 85, 86, 87, 88, 516, 81,
- 403, 357, 93, 6, 20, 21, 97, 23, 86, 100,
- 81, 27, 103, 91, 1, 3, 303, 286, 403, 3,
- 403, 28, 29, 86, 40, 41, 42, 43, 704, 109,
- 110, 49, 103, 49, 50, 53, 116, 53, 89, 81,
- 56, 28, 29, 81, 359, 28, 29, 63, 64, 405,
- 86, 1, 81, 3, 70, 71, 72, 719, 8, 9,
+ 22, 23, 2, 43, 14, 43, 43, 14, 339, 19,
+ 20, 43, 43, 83, 352, 43, 26, 83, 83, 2,
+ 244, 43, 2, 633, 2, 83, 526, 2, 83, 2,
+ 278, 83, 476, 83, 83, 222, 231, 3, 341, 342,
+ 343, 3, 395, 352, 3, 36, 86, 3, 86, 86,
+ 648, 3, 3, 3, 86, 86, 409, 3, 648, 352,
+ 3, 83, 84, 0, 86, 3, 49, 3, 3, 49,
+ 408, 49, 6, 1, 49, 85, 49, 87, 88, 89,
+ 90, 19, 526, 74, 678, 95, 1, 78, 87, 99,
+ 87, 75, 102, 317, 362, 105, 75, 81, 91, 408,
+ 28, 29, 81, 94, 6, 96, 293, 92, 107, 94,
+ 107, 111, 112, 28, 29, 408, 364, 88, 118, 81,
+ 3, 87, 73, 74, 75, 76, 77, 78, 79, 80,
+ 81, 87, 730, 84, 85, 87, 87, 87, 81, 733,
+ 730, 87, 410, 81, 88, 81, 81, 49, 99, 100,
+ 22, 53, 174, 104, 105, 3, 49, 88, 88, 88,
+ 53, 231, 90, 93, 93, 231, 231, 8, 9, 30,
+ 31, 524, 396, 231, 8, 370, 231, 11, 402, 231,
+ 87, 231, 231, 683, 30, 31, 82, 83, 436, 739,
+ 73, 74, 75, 76, 77, 78, 79, 80, 81, 60,
+ 88, 84, 85, 93, 65, 93, 88, 68, 69, 231,
+ 820, 93, 550, 89, 60, 402, 99, 100, 768, 65,
+ 88, 104, 105, 88, 774, 73, 74, 75, 76, 77,
+ 78, 79, 80, 81, 88, 785, 84, 85, 89, 683,
+ 89, 101, 102, 103, 99, 100, 856, 28, 29, 859,
+ 35, 36, 37, 15, 16, 3, 88, 105, 16, 17,
+ 8, 9, 10, 383, 384, 13, 14, 15, 16, 88,
+ 770, 385, 386, 3, 284, 23, 48, 89, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 105, 23, 24, 25, 26, 105, 365, 226,
- 226, 719, 514, 105, 86, 105, 105, 710, 105, 105,
- 226, 226, 659, 81, 75, 226, 226, 81, 105, 8,
- 81, 88, 11, 226, 226, 1, 393, 87, 1, 91,
- 86, 4, 5, 6, 7, 91, 431, 740, 36, 6,
- 86, 86, 105, 22, 226, 91, 91, 20, 21, 752,
- 23, 81, 28, 29, 27, 99, 100, 101, 86, 542,
- 763, 659, 798, 3, 35, 36, 37, 40, 41, 42,
- 43, 86, 30, 31, 72, 105, 49, 50, 76, 90,
- 53, 92, 49, 56, 8, 9, 53, 82, 83, 825,
- 63, 64, 30, 31, 92, 831, 94, 70, 71, 15,
- 16, 748, 60, 3, 97, 98, 277, 65, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 60, 23, 24, 25, 26, 65, 16, 17,
- 68, 69, 105, 73, 74, 75, 76, 77, 78, 79,
- 80, 81, 375, 376, 84, 85, 328, 611, 373, 374,
- 748, 86, 4, 335, 6, 569, 570, 97, 98, 87,
- 807, 86, 102, 103, 86, 105, 48, 87, 20, 21,
- 519, 23, 24, 86, 89, 27, 358, 87, 527, 81,
- 89, 81, 89, 550, 87, 3, 402, 402, 86, 86,
- 673, 402, 402, 377, 378, 379, 86, 49, 87, 86,
- 86, 53, 86, 86, 402, 105, 300, 301, 302, 807,
- 87, 86, 394, 86, 86, 67, 86, 388, 87, 3,
- 402, 3, 382, 91, 89, 8, 90, 409, 89, 411,
- 412, 47, 103, 582, 583, 584, 418, 87, 465, 465,
- 87, 401, 87, 610, 87, 3, 94, 91, 430, 95,
- 104, 93, 3, 484, 90, 73, 74, 75, 76, 77,
- 78, 79, 80, 81, 96, 425, 84, 85, 92, 92,
- 87, 106, 92, 104, 93, 90, 88, 58, 92, 97,
- 98, 106, 92, 465, 102, 103, 484, 484, 484, 516,
- 516, 484, 452, 484, 3, 3, 88, 3, 87, 92,
- 447, 447, 484, 447, 90, 447, 447, 8, 88, 88,
- 86, 88, 494, 495, 496, 73, 74, 75, 76, 77,
- 78, 79, 80, 81, 800, 801, 84, 85, 90, 90,
- 90, 88, 88, 88, 516, 506, 507, 31, 86, 97,
- 98, 86, 86, 86, 102, 103, 88, 88, 88, 86,
- 86, 86, 86, 829, 86, 86, 86, 86, 86, 92,
- 86, 86, 86, 86, 73, 74, 75, 76, 77, 78,
- 79, 80, 81, 86, 86, 84, 85, 104, 88, 86,
- 66, 86, 86, 103, 35, 88, 88, 86, 88, 86,
- 86, 3, 107, 88, 103, 86, 8, 9, 10, 766,
- 87, 13, 14, 15, 16, 88, 88, 3, 568, 569,
- 570, 23, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 86, 23, 24, 25,
- 26, 104, 659, 659, 35, 38, 55, 92, 103, 89,
- 104, 3, 59, 3, 92, 627, 8, 9, 10, 11,
- 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
- 104, 23, 24, 25, 26, 103, 103, 62, 90, 81,
- 104, 86, 88, 91, 634, 104, 103, 659, 625, 625,
- 39, 625, 92, 625, 625, 81, 92, 91, 86, 660,
- 86, 104, 674, 3, 103, 91, 104, 660, 8, 9,
- 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 104, 693, 75, 104, 24, 25, 26, 92, 75, 81,
- 318, 748, 748, 17, 447, 719, 16, 406, 226, 610,
- 370, 372, 692, 371, 446, 394, 641, 711, 340, 769,
- 711, 701, 797, 692, 830, 3, 426, 612, 711, 799,
+ 20, 21, 88, 23, 24, 25, 26, 387, 388, 389,
+ 370, 314, 315, 316, 370, 370, 89, 91, 81, 91,
+ 332, 91, 370, 88, 88, 370, 87, 339, 370, 88,
+ 370, 370, 89, 88, 88, 88, 770, 88, 88, 829,
+ 89, 88, 370, 81, 558, 89, 88, 88, 88, 87,
+ 89, 363, 529, 3, 3, 91, 93, 92, 370, 91,
+ 537, 81, 8, 47, 89, 89, 89, 89, 88, 697,
+ 3, 585, 105, 93, 404, 93, 404, 404, 92, 94,
+ 96, 371, 404, 404, 97, 94, 404, 98, 105, 89,
+ 92, 391, 404, 686, 90, 829, 106, 370, 371, 94,
+ 58, 371, 414, 371, 416, 417, 371, 397, 371, 90,
+ 587, 423, 95, 88, 94, 629, 88, 407, 3, 90,
+ 476, 476, 89, 435, 601, 602, 603, 90, 94, 90,
+ 92, 88, 646, 92, 31, 95, 92, 92, 428, 90,
+ 430, 106, 94, 503, 444, 90, 90, 90, 88, 88,
+ 88, 88, 29, 88, 484, 503, 484, 484, 503, 90,
+ 90, 503, 484, 484, 476, 88, 484, 88, 30, 31,
+ 526, 526, 484, 463, 88, 503, 88, 489, 88, 88,
+ 88, 88, 8, 88, 88, 88, 88, 88, 88, 51,
+ 52, 503, 504, 505, 506, 88, 88, 88, 60, 61,
+ 90, 822, 823, 65, 90, 94, 68, 69, 90, 90,
+ 66, 106, 88, 88, 526, 88, 516, 517, 105, 107,
+ 88, 551, 88, 551, 551, 90, 35, 88, 88, 551,
+ 551, 90, 89, 854, 1, 106, 3, 4, 35, 551,
+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, 18, 19, 20, 21, 38, 23, 55, 25, 26,
+ 27, 94, 108, 30, 31, 32, 33, 34, 91, 105,
+ 59, 106, 3, 40, 106, 94, 105, 44, 45, 46,
+ 105, 62, 92, 94, 106, 106, 576, 88, 93, 105,
+ 90, 94, 39, 106, 106, 88, 63, 64, 93, 3,
+ 814, 105, 75, 75, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 81, 106, 106, 94, 730, 298,
+ 298, 25, 26, 90, 49, 17, 16, 683, 683, 411,
+ 629, 50, 663, 1, 380, 3, 4, 382, 650, 7,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 418, 364, 76, 796, 748, 25, 26, 804,
- 451, 81, 719, 719, 756, 719, 34, 719, 719, -1,
- 807, 807, 673, -1, 755, 550, -1, -1, -1, -1,
- 403, -1, 755, -1, -1, -1, -1, -1, 796, 796,
- 796, -1, -1, 796, -1, 796, -1, -1, -1, -1,
- 770, 771, -1, -1, 796, -1, -1, -1, 800, 801,
- 4, -1, 6, 81, -1, 807, -1, -1, -1, -1,
- -1, -1, 803, -1, -1, -1, 20, 21, -1, 23,
- 24, -1, 1, 27, 3, 4, -1, 829, 7, 8,
+ 18, 19, 20, 21, 381, 23, 587, 25, 26, 27,
+ 551, 489, 30, 31, 32, 33, 34, 657, 590, 740,
+ 484, 683, 40, 370, 817, 648, 44, 81, 648, 819,
+ 648, 345, 687, 648, 684, 648, 54, 684, 4, 701,
+ 6, 821, 721, 855, 423, 63, 64, 431, 78, 369,
+ 826, 375, 697, 408, 20, 21, 558, 23, 24, -1,
+ 722, 27, -1, 81, 770, 770, -1, -1, -1, 4,
+ -1, 6, 90, -1, -1, -1, -1, -1, -1, -1,
+ -1, 721, -1, 49, -1, 20, 21, 53, 23, 24,
+ 740, -1, 27, 740, -1, -1, -1, -1, -1, 0,
+ 1, 67, -1, 4, 5, 6, 7, 730, 770, -1,
+ 730, -1, 730, -1, 49, 730, 778, 730, 53, 20,
+ 21, -1, 23, 829, 829, -1, 27, 777, -1, -1,
+ 777, -1, 67, -1, -1, -1, -1, -1, -1, 40,
+ 41, 42, 43, -1, -1, -1, -1, -1, 49, 50,
+ -1, -1, 53, -1, -1, 56, 836, -1, 836, 836,
+ 822, 823, 63, 64, 836, 836, -1, 829, 836, 70,
+ 71, -1, -1, -1, 836, 825, -1, -1, 818, -1,
+ -1, -1, -1, -1, -1, 86, 87, 1, -1, 3,
+ 4, -1, 854, 7, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, 20, 21, -1, 23,
+ -1, 25, 26, 27, -1, -1, 30, 31, 32, 33,
+ 34, -1, -1, -1, -1, -1, 40, -1, -1, 3,
+ 44, 45, 46, -1, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, -1, -1, -1, 63,
+ 64, 25, 26, -1, -1, -1, -1, -1, -1, -1,
+ 34, -1, -1, -1, -1, -1, -1, 81, -1, -1,
+ -1, 1, -1, 3, 4, -1, 90, 7, 8, 9,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+ 20, 21, -1, 23, -1, 25, 26, 27, -1, -1,
+ 30, 31, 32, 33, 34, -1, 1, 81, 3, 4,
+ 40, -1, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, -1, 23, -1,
+ 25, 26, 27, 63, 64, 30, 31, 32, 33, 34,
+ -1, -1, -1, -1, -1, 40, -1, -1, -1, -1,
+ -1, 81, -1, -1, -1, -1, -1, -1, -1, -1,
+ 90, -1, -1, -1, -1, -1, 3, -1, 63, 64,
+ -1, 8, 9, 10, 11, 12, 13, 14, 15, 16,
+ 17, 18, 19, -1, -1, -1, 81, 24, 25, 26,
+ 1, -1, 3, 4, -1, 90, 7, 8, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+ 21, -1, 23, -1, 25, 26, 27, -1, -1, 30,
+ 31, 32, 33, 34, -1, -1, -1, -1, -1, 40,
+ -1, -1, -1, -1, -1, 1, -1, -1, 4, 5,
+ 6, 7, -1, -1, 81, -1, -1, -1, -1, -1,
+ 87, -1, 63, 64, 20, 21, -1, 23, -1, -1,
+ -1, 27, -1, -1, -1, -1, -1, -1, -1, -1,
+ 81, -1, -1, -1, 40, 41, 42, 43, -1, 90,
+ -1, -1, -1, 49, 50, -1, -1, 53, -1, -1,
+ 56, -1, -1, -1, -1, -1, -1, 63, 64, -1,
+ -1, -1, -1, -1, 70, 71, 72, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 86, 3, 4, -1, 90, 7, 8, 9, 10, 11,
+ 12, 13, 14, 15, 16, 17, 18, -1, -1, -1,
+ -1, 23, 1, 25, 26, 4, 5, 6, 7, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 20, 21, -1, 23, -1, -1, -1, 27, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 40, 41, 42, 43, -1, -1, -1, -1, -1,
+ 49, 50, -1, -1, 53, -1, -1, 56, -1, 81,
+ -1, -1, -1, -1, 63, 64, -1, -1, 90, -1,
+ -1, 70, 71, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 1, -1, 3, -1, -1, 86, 87, 8,
9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, 20, 21, -1, 23, 49, 25, 26, 27, 53,
- -1, 30, 31, 32, 33, 34, -1, -1, -1, -1,
- -1, 40, -1, 67, 3, 44, 45, 46, -1, 8,
+ 19, 20, 21, -1, 23, 24, 25, 26, 1, -1,
+ -1, 4, 5, 6, 7, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 20, 21, -1,
+ 23, -1, -1, 1, 27, -1, 4, 5, 6, 7,
+ -1, -1, -1, -1, -1, -1, -1, 40, 41, 42,
+ 43, -1, 20, 21, -1, 23, 49, 50, -1, 27,
+ 53, -1, 81, 56, -1, -1, -1, -1, 87, -1,
+ 63, 64, 40, 41, 42, 43, -1, 70, 71, 72,
+ -1, 49, 50, -1, -1, 53, -1, -1, 56, -1,
+ -1, -1, -1, 86, -1, 63, 64, -1, -1, 3,
+ -1, -1, 70, 71, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, 20, 21, 86, 23,
+ 24, 25, 26, 1, -1, 3, -1, -1, -1, -1,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 3, 23, 24, 25, 26, 8,
9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
- 19, -1, -1, -1, 63, 64, 25, 26, -1, -1,
+ 19, 20, 21, -1, 23, 24, 25, 26, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 81, -1, 3,
+ -1, -1, -1, 87, 8, 9, 10, 11, 12, 13,
+ 14, 15, 16, 17, 18, 19, -1, -1, -1, -1,
+ -1, 25, 26, 81, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, 81, -1, 1, -1, 3, 4, -1, 88,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 18, 19, 20, 21, -1, 23, -1, 25, 26,
- 27, -1, -1, 30, 31, 32, 33, 34, -1, -1,
- 30, 31, 81, 40, -1, -1, 3, 44, 45, 46,
- -1, 8, 9, 10, 11, 12, 13, 14, 15, 16,
- 17, 51, 52, -1, -1, -1, 63, 64, 25, 26,
- 60, 61, -1, -1, -1, 65, -1, -1, 68, 69,
- -1, -1, -1, -1, 81, -1, 1, -1, 3, 4,
- -1, 88, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, -1, 23, -1,
- 25, 26, 27, -1, -1, 30, 31, 32, 33, 34,
- -1, -1, -1, -1, 81, 40, -1, -1, -1, 44,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, 54,
- -1, -1, -1, -1, -1, -1, -1, -1, 63, 64,
+ -1, -1, 81, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 81, -1, 1, -1,
- 3, 4, -1, 88, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, -1,
- 23, -1, 25, 26, 27, -1, -1, 30, 31, 32,
- 33, 34, -1, 1, -1, 3, 4, 40, -1, 7,
- 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, -1, 23, -1, 25, 26, 27,
- 63, 64, 30, 31, 32, 33, 34, -1, -1, -1,
- -1, -1, 40, -1, -1, -1, -1, -1, 81, -1,
- -1, -1, -1, -1, -1, 88, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, 63, 64, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 81, -1, 1, -1, 3, 4, -1,
- 88, 7, 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, -1, 23, -1, 25,
- 26, 27, -1, -1, 30, 31, 32, 33, 34, -1,
- -1, -1, -1, -1, 40, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, 1, -1, -1, 4, 5, 6,
- 7, -1, -1, -1, -1, -1, -1, 63, 64, -1,
- -1, -1, -1, 20, 21, -1, 23, -1, -1, -1,
- 27, -1, -1, -1, -1, 81, -1, -1, -1, -1,
- -1, -1, 88, 40, 41, 42, 43, -1, -1, -1,
- -1, -1, 49, 50, -1, -1, 53, -1, -1, 56,
- -1, -1, -1, -1, -1, -1, 63, 64, -1, -1,
- -1, -1, -1, 70, 71, 72
+ -1, -1, -1, -1, -1, -1, -1, 81
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
static const yytype_uint16 yystos[] =
{
- 0, 109, 110, 0, 220, 1, 4, 5, 6, 7,
+ 0, 110, 111, 112, 0, 1, 4, 5, 6, 7,
20, 21, 23, 27, 40, 41, 42, 43, 49, 50,
- 53, 56, 63, 64, 70, 71, 105, 111, 113, 128,
- 130, 134, 135, 147, 150, 151, 155, 157, 160, 161,
- 162, 166, 170, 172, 176, 177, 201, 202, 221, 226,
- 235, 255, 257, 269, 271, 293, 294, 295, 337, 388,
- 389, 390, 391, 392, 396, 418, 420, 443, 444, 445,
- 446, 447, 451, 452, 453, 456, 460, 469, 484, 485,
- 127, 203, 129, 156, 227, 256, 270, 296, 338, 200,
- 220, 243, 155, 53, 155, 170, 172, 53, 162, 172,
- 173, 200, 200, 421, 3, 81, 196, 199, 196, 470,
- 486, 196, 89, 131, 120, 136, 148, 86, 86, 119,
- 91, 158, 152, 121, 163, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 24, 25, 26,
- 158, 196, 230, 231, 232, 233, 234, 245, 246, 247,
- 248, 249, 250, 251, 252, 253, 254, 255, 257, 269,
- 271, 295, 304, 307, 310, 311, 314, 315, 318, 117,
- 114, 258, 22, 118, 115, 116, 122, 393, 123, 419,
- 124, 158, 454, 454, 125, 126, 87, 488, 86, 17,
- 196, 207, 245, 248, 249, 250, 251, 252, 311, 315,
- 196, 200, 228, 230, 200, 200, 200, 200, 3, 158,
- 200, 158, 167, 200, 200, 397, 200, 197, 75, 81,
- 75, 220, 220, 103, 87, 86, 4, 6, 20, 21,
- 23, 24, 27, 49, 53, 67, 461, 462, 465, 220,
- 481, 86, 48, 174, 87, 86, 87, 8, 11, 8,
- 9, 89, 308, 171, 90, 92, 89, 89, 86, 86,
- 87, 272, 86, 86, 86, 86, 87, 86, 87, 430,
- 86, 455, 448, 457, 86, 86, 489, 204, 229, 297,
- 339, 87, 91, 399, 422, 199, 198, 3, 3, 3,
- 73, 74, 75, 76, 77, 78, 79, 80, 84, 85,
- 97, 98, 102, 103, 196, 209, 210, 211, 212, 213,
- 214, 215, 216, 217, 218, 222, 223, 225, 132, 207,
- 89, 3, 137, 463, 208, 209, 483, 90, 159, 153,
- 164, 8, 209, 219, 89, 47, 175, 305, 312, 316,
- 259, 103, 394, 431, 175, 87, 87, 491, 200, 200,
- 236, 239, 243, 244, 319, 87, 87, 168, 400, 398,
- 91, 427, 199, 471, 487, 93, 217, 217, 217, 209,
- 94, 95, 96, 82, 83, 97, 98, 99, 100, 101,
- 104, 224, 110, 112, 3, 90, 92, 482, 149, 193,
- 196, 183, 178, 92, 309, 193, 219, 219, 219, 261,
- 263, 264, 273, 401, 433, 449, 458, 30, 31, 60,
- 65, 68, 69, 326, 327, 332, 410, 412, 413, 480,
- 490, 492, 205, 320, 237, 298, 340, 183, 196, 175,
- 428, 423, 87, 399, 209, 104, 211, 212, 213, 214,
- 214, 215, 215, 216, 216, 216, 92, 220, 133, 90,
- 138, 464, 92, 200, 194, 1, 32, 33, 154, 184,
- 202, 226, 326, 337, 342, 347, 388, 389, 44, 45,
- 46, 165, 179, 180, 184, 349, 209, 231, 306, 313,
- 317, 260, 262, 1, 220, 265, 8, 196, 245, 250,
- 251, 252, 278, 295, 51, 52, 61, 326, 395, 402,
- 410, 412, 415, 416, 417, 480, 44, 54, 184, 432,
- 434, 437, 440, 183, 178, 328, 333, 19, 196, 411,
- 58, 414, 196, 196, 495, 493, 494, 411, 496, 88,
- 93, 106, 321, 323, 92, 220, 300, 303, 262, 169,
- 196, 175, 472, 3, 225, 111, 88, 3, 87, 465,
- 220, 92, 192, 88, 188, 185, 190, 189, 191, 34,
- 196, 232, 311, 315, 348, 371, 186, 187, 350, 182,
- 181, 88, 86, 90, 90, 90, 90, 88, 263, 268,
- 230, 274, 196, 196, 196, 408, 88, 403, 404, 405,
- 406, 407, 409, 200, 200, 88, 435, 436, 450, 459,
- 31, 371, 199, 3, 3, 86, 86, 86, 199, 86,
- 206, 324, 322, 238, 3, 299, 301, 341, 88, 424,
- 326, 410, 412, 474, 476, 139, 483, 195, 86, 86,
- 86, 86, 86, 86, 343, 86, 86, 220, 265, 265,
- 86, 266, 104, 199, 199, 199, 86, 86, 86, 86,
- 86, 86, 86, 438, 441, 86, 86, 88, 88, 329,
- 334, 208, 219, 323, 239, 88, 92, 88, 66, 479,
- 477, 478, 473, 475, 72, 113, 128, 141, 143, 144,
- 196, 220, 3, 236, 275, 103, 353, 353, 371, 240,
- 243, 325, 302, 425, 86, 86, 86, 88, 476, 196,
- 140, 142, 86, 3, 351, 267, 87, 354, 355, 439,
- 442, 330, 335, 241, 107, 303, 196, 145, 88, 220,
- 344, 353, 86, 276, 104, 35, 356, 359, 38, 373,
- 373, 240, 55, 376, 92, 426, 89, 143, 103, 362,
- 352, 1, 28, 29, 279, 281, 285, 287, 360, 104,
- 357, 374, 331, 377, 336, 242, 59, 429, 3, 466,
- 468, 363, 364, 345, 373, 284, 289, 288, 277, 280,
- 282, 286, 371, 92, 103, 373, 103, 62, 379, 243,
- 196, 90, 467, 104, 35, 36, 37, 365, 368, 372,
- 373, 86, 209, 91, 88, 281, 220, 220, 361, 358,
- 375, 378, 380, 146, 92, 104, 366, 369, 346, 290,
- 230, 291, 287, 239, 359, 193, 193, 103, 200, 468,
- 92, 371, 39, 382, 91, 292, 283, 104, 104, 381,
- 367, 370, 383, 239, 86, 193, 368, 239, 103, 104,
- 384, 75, 385, 386, 104, 92, 387, 75
+ 53, 56, 63, 64, 70, 71, 86, 113, 114, 130,
+ 132, 136, 137, 149, 152, 153, 157, 159, 162, 163,
+ 164, 168, 172, 174, 178, 179, 202, 203, 221, 229,
+ 230, 238, 247, 267, 269, 280, 282, 304, 305, 306,
+ 348, 399, 400, 401, 402, 403, 407, 429, 431, 454,
+ 455, 456, 457, 458, 462, 463, 464, 467, 471, 479,
+ 494, 495, 129, 204, 131, 158, 239, 268, 281, 307,
+ 349, 3, 201, 255, 157, 53, 157, 172, 174, 53,
+ 164, 174, 175, 201, 201, 432, 3, 81, 197, 200,
+ 197, 480, 496, 201, 91, 133, 122, 138, 150, 88,
+ 88, 121, 93, 160, 154, 123, 165, 8, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, 24,
+ 25, 26, 160, 197, 242, 243, 244, 245, 246, 257,
+ 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+ 269, 280, 282, 306, 315, 318, 321, 322, 325, 326,
+ 329, 119, 115, 113, 87, 231, 116, 270, 22, 120,
+ 117, 118, 124, 404, 125, 430, 126, 160, 465, 465,
+ 127, 128, 89, 498, 88, 17, 197, 208, 257, 260,
+ 261, 262, 263, 264, 322, 326, 197, 201, 240, 242,
+ 201, 201, 201, 201, 160, 201, 160, 169, 201, 201,
+ 408, 201, 198, 75, 81, 75, 230, 230, 89, 89,
+ 88, 4, 6, 20, 21, 23, 24, 27, 49, 53,
+ 67, 472, 473, 475, 230, 491, 88, 48, 176, 89,
+ 88, 89, 8, 11, 8, 9, 91, 319, 173, 92,
+ 94, 91, 91, 88, 88, 197, 88, 89, 283, 88,
+ 88, 88, 88, 89, 88, 89, 441, 88, 466, 459,
+ 468, 88, 88, 499, 205, 241, 308, 350, 89, 93,
+ 410, 433, 200, 199, 3, 231, 3, 222, 134, 208,
+ 91, 3, 139, 474, 73, 74, 75, 76, 77, 78,
+ 79, 80, 84, 85, 99, 100, 104, 105, 197, 209,
+ 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
+ 493, 92, 161, 155, 166, 8, 210, 220, 91, 47,
+ 177, 316, 323, 327, 232, 271, 105, 405, 442, 177,
+ 89, 89, 501, 201, 201, 248, 251, 255, 256, 330,
+ 89, 89, 170, 411, 409, 93, 438, 200, 481, 497,
+ 223, 111, 112, 3, 92, 94, 218, 218, 218, 210,
+ 96, 97, 98, 82, 83, 99, 100, 101, 102, 103,
+ 492, 151, 194, 197, 184, 180, 94, 320, 194, 220,
+ 220, 220, 105, 233, 230, 273, 275, 284, 412, 444,
+ 460, 469, 30, 31, 60, 65, 68, 69, 337, 338,
+ 343, 421, 423, 424, 490, 500, 502, 206, 331, 249,
+ 309, 351, 184, 197, 177, 439, 434, 89, 410, 7,
+ 90, 203, 208, 224, 226, 227, 265, 306, 135, 92,
+ 140, 475, 106, 212, 213, 214, 215, 215, 216, 216,
+ 217, 217, 217, 94, 201, 195, 1, 32, 33, 156,
+ 185, 203, 238, 337, 348, 353, 358, 399, 400, 44,
+ 45, 46, 167, 181, 182, 183, 185, 360, 210, 230,
+ 317, 324, 328, 200, 210, 234, 235, 237, 1, 242,
+ 276, 272, 274, 230, 51, 52, 61, 337, 406, 413,
+ 421, 423, 426, 427, 428, 490, 44, 54, 185, 443,
+ 445, 448, 451, 184, 180, 339, 344, 19, 197, 422,
+ 58, 425, 197, 197, 505, 503, 504, 422, 506, 90,
+ 95, 230, 94, 230, 311, 314, 274, 171, 197, 177,
+ 482, 225, 88, 201, 88, 90, 3, 89, 230, 94,
+ 193, 90, 189, 186, 191, 190, 192, 34, 197, 244,
+ 322, 326, 359, 382, 187, 188, 361, 90, 276, 88,
+ 92, 243, 92, 92, 92, 95, 106, 94, 236, 279,
+ 277, 90, 275, 8, 197, 257, 262, 263, 264, 289,
+ 306, 197, 197, 197, 419, 90, 414, 415, 416, 417,
+ 418, 420, 201, 201, 90, 446, 447, 461, 470, 31,
+ 382, 200, 3, 3, 88, 88, 88, 200, 88, 207,
+ 107, 332, 334, 250, 3, 310, 312, 352, 90, 435,
+ 337, 421, 423, 484, 486, 240, 29, 228, 141, 493,
+ 196, 88, 88, 88, 88, 88, 88, 354, 88, 88,
+ 230, 210, 200, 237, 88, 248, 285, 200, 200, 200,
+ 88, 88, 88, 88, 88, 88, 88, 449, 452, 88,
+ 88, 90, 90, 340, 345, 209, 335, 333, 251, 90,
+ 94, 90, 66, 489, 487, 488, 483, 485, 88, 210,
+ 88, 72, 114, 130, 143, 145, 146, 197, 230, 3,
+ 236, 278, 106, 105, 364, 364, 382, 252, 255, 220,
+ 334, 313, 436, 88, 88, 88, 90, 486, 197, 142,
+ 144, 88, 3, 362, 88, 286, 365, 366, 450, 453,
+ 341, 346, 253, 336, 314, 197, 147, 90, 145, 355,
+ 364, 89, 106, 35, 367, 370, 38, 384, 384, 252,
+ 55, 387, 94, 108, 437, 91, 105, 373, 363, 287,
+ 371, 106, 368, 385, 342, 388, 347, 254, 59, 440,
+ 3, 476, 478, 374, 375, 356, 384, 1, 28, 29,
+ 290, 292, 296, 298, 382, 94, 105, 384, 105, 62,
+ 390, 255, 197, 92, 477, 106, 35, 36, 37, 376,
+ 379, 383, 384, 295, 300, 299, 288, 291, 293, 297,
+ 372, 369, 386, 389, 391, 148, 94, 106, 377, 380,
+ 357, 88, 210, 93, 90, 292, 230, 298, 251, 370,
+ 194, 194, 105, 201, 478, 94, 382, 39, 393, 301,
+ 242, 302, 106, 106, 392, 378, 381, 394, 93, 303,
+ 294, 194, 379, 251, 105, 251, 88, 106, 395, 75,
+ 396, 397, 106, 94, 398, 75
};
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
static const yytype_uint16 yyr1[] =
{
- 0, 108, 109, 110, 110, 111, 111, 111, 112, 114,
- 113, 115, 113, 116, 113, 117, 113, 118, 113, 119,
- 113, 120, 113, 121, 113, 122, 113, 123, 113, 124,
- 113, 125, 113, 126, 113, 127, 113, 129, 128, 131,
- 132, 133, 130, 134, 136, 137, 138, 139, 140, 135,
- 141, 142, 142, 143, 143, 145, 146, 144, 148, 149,
- 147, 150, 150, 152, 153, 154, 151, 156, 155, 157,
- 157, 157, 159, 158, 158, 160, 160, 160, 160, 161,
- 161, 163, 164, 165, 162, 167, 168, 169, 166, 171,
- 170, 173, 172, 174, 174, 175, 175, 176, 176, 177,
- 178, 178, 179, 179, 179, 181, 180, 182, 180, 183,
- 183, 185, 184, 186, 184, 187, 184, 188, 184, 189,
- 184, 190, 184, 191, 184, 192, 184, 193, 195, 194,
- 194, 196, 197, 196, 198, 196, 199, 200, 201, 201,
- 201, 203, 204, 205, 206, 202, 207, 207, 207, 207,
- 207, 207, 207, 207, 207, 208, 209, 210, 210, 211,
- 211, 212, 212, 213, 213, 213, 214, 214, 214, 215,
- 215, 215, 215, 216, 216, 216, 216, 217, 217, 217,
- 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
- 219, 220, 220, 221, 221, 222, 222, 223, 224, 224,
- 225, 227, 226, 226, 226, 226, 226, 226, 229, 228,
- 230, 230, 231, 231, 231, 232, 232, 232, 232, 232,
- 232, 232, 232, 233, 233, 233, 233, 234, 234, 234,
- 235, 235, 236, 238, 237, 237, 239, 239, 240, 242,
- 241, 241, 243, 244, 245, 245, 246, 246, 246, 247,
- 247, 247, 248, 248, 248, 249, 250, 250, 251, 252,
- 253, 254, 256, 255, 258, 259, 260, 257, 261, 262,
- 262, 264, 263, 266, 267, 265, 268, 265, 270, 269,
- 272, 273, 274, 275, 276, 277, 271, 278, 278, 278,
- 278, 278, 278, 279, 280, 280, 282, 283, 281, 284,
- 281, 285, 286, 286, 288, 287, 289, 290, 287, 292,
- 291, 293, 294, 296, 297, 298, 299, 295, 300, 302,
- 301, 301, 303, 305, 306, 304, 304, 308, 309, 307,
- 310, 312, 313, 311, 311, 314, 316, 317, 315, 315,
- 318, 320, 319, 321, 322, 322, 324, 325, 323, 326,
- 326, 328, 329, 330, 331, 327, 333, 334, 335, 336,
- 332, 338, 339, 340, 341, 337, 343, 344, 345, 346,
- 342, 347, 347, 347, 348, 348, 350, 351, 352, 349,
- 354, 353, 355, 353, 356, 358, 357, 357, 360, 361,
- 359, 363, 362, 364, 362, 365, 367, 366, 366, 369,
- 370, 368, 371, 371, 371, 371, 372, 372, 372, 374,
- 375, 373, 373, 377, 378, 376, 376, 380, 381, 379,
- 379, 383, 384, 382, 382, 385, 387, 386, 386, 388,
- 389, 390, 390, 391, 393, 394, 395, 392, 397, 398,
- 396, 400, 399, 399, 401, 401, 403, 402, 404, 402,
- 405, 402, 406, 402, 407, 402, 408, 402, 409, 402,
- 410, 411, 411, 412, 413, 414, 414, 415, 416, 417,
- 419, 418, 421, 422, 423, 424, 425, 426, 420, 428,
- 427, 427, 429, 429, 431, 432, 430, 433, 433, 434,
- 435, 434, 436, 434, 438, 439, 437, 441, 442, 440,
- 443, 443, 443, 444, 444, 445, 446, 448, 449, 450,
- 447, 451, 452, 453, 455, 454, 457, 458, 459, 456,
- 460, 460, 461, 461, 461, 461, 461, 461, 461, 461,
- 461, 461, 462, 464, 463, 463, 465, 465, 466, 467,
- 467, 468, 470, 471, 472, 473, 469, 474, 475, 475,
- 477, 476, 478, 476, 479, 476, 480, 480, 481, 482,
- 482, 483, 484, 486, 487, 485, 489, 490, 488, 491,
- 491, 493, 492, 494, 492, 495, 492, 496, 492
+ 0, 109, 110, 111, 111, 112, 112, 113, 113, 113,
+ 115, 114, 116, 114, 117, 114, 118, 114, 119, 114,
+ 120, 114, 121, 114, 122, 114, 123, 114, 124, 114,
+ 125, 114, 126, 114, 127, 114, 128, 114, 129, 114,
+ 131, 130, 133, 134, 135, 132, 136, 138, 139, 140,
+ 141, 142, 137, 143, 144, 144, 145, 145, 147, 148,
+ 146, 150, 151, 149, 152, 152, 154, 155, 156, 153,
+ 158, 157, 159, 159, 159, 161, 160, 160, 162, 162,
+ 162, 162, 163, 163, 165, 166, 167, 164, 169, 170,
+ 171, 168, 173, 172, 175, 174, 176, 176, 177, 177,
+ 178, 178, 179, 180, 180, 181, 181, 181, 182, 182,
+ 183, 184, 184, 186, 185, 187, 185, 188, 185, 189,
+ 185, 190, 185, 191, 185, 192, 185, 193, 185, 194,
+ 196, 195, 195, 197, 198, 197, 199, 197, 200, 201,
+ 202, 202, 202, 204, 205, 206, 207, 203, 208, 208,
+ 208, 208, 208, 208, 208, 208, 208, 209, 210, 211,
+ 211, 212, 212, 213, 213, 214, 214, 214, 215, 215,
+ 215, 216, 216, 216, 216, 217, 217, 217, 217, 218,
+ 218, 218, 219, 219, 219, 219, 219, 219, 219, 219,
+ 219, 219, 220, 222, 221, 223, 223, 224, 224, 224,
+ 225, 224, 226, 226, 227, 228, 228, 229, 230, 230,
+ 232, 231, 233, 233, 234, 234, 235, 236, 236, 237,
+ 239, 238, 238, 238, 238, 238, 238, 241, 240, 242,
+ 242, 243, 243, 243, 244, 244, 244, 244, 244, 244,
+ 244, 244, 245, 245, 245, 245, 246, 246, 246, 247,
+ 247, 248, 250, 249, 249, 251, 251, 252, 254, 253,
+ 253, 255, 256, 257, 257, 258, 258, 258, 259, 259,
+ 259, 260, 260, 260, 261, 262, 262, 263, 264, 265,
+ 266, 268, 267, 270, 271, 272, 269, 273, 274, 274,
+ 275, 277, 278, 276, 279, 276, 281, 280, 283, 284,
+ 285, 286, 287, 288, 282, 289, 289, 289, 289, 289,
+ 289, 290, 291, 291, 293, 294, 292, 295, 292, 296,
+ 297, 297, 299, 298, 300, 301, 298, 303, 302, 304,
+ 305, 307, 308, 309, 310, 306, 311, 313, 312, 312,
+ 314, 316, 317, 315, 315, 319, 320, 318, 321, 323,
+ 324, 322, 322, 325, 327, 328, 326, 326, 329, 331,
+ 330, 332, 333, 333, 335, 336, 334, 337, 337, 339,
+ 340, 341, 342, 338, 344, 345, 346, 347, 343, 349,
+ 350, 351, 352, 348, 354, 355, 356, 357, 353, 358,
+ 358, 358, 359, 359, 361, 362, 363, 360, 365, 364,
+ 366, 364, 367, 369, 368, 368, 371, 372, 370, 374,
+ 373, 375, 373, 376, 378, 377, 377, 380, 381, 379,
+ 382, 382, 382, 382, 383, 383, 383, 385, 386, 384,
+ 384, 388, 389, 387, 387, 391, 392, 390, 390, 394,
+ 395, 393, 393, 396, 398, 397, 397, 399, 400, 401,
+ 401, 402, 404, 405, 406, 403, 408, 409, 407, 411,
+ 410, 410, 412, 412, 414, 413, 415, 413, 416, 413,
+ 417, 413, 418, 413, 419, 413, 420, 413, 421, 422,
+ 422, 423, 424, 425, 425, 426, 427, 428, 430, 429,
+ 432, 433, 434, 435, 436, 437, 431, 439, 438, 438,
+ 440, 440, 442, 443, 441, 444, 444, 445, 446, 445,
+ 447, 445, 449, 450, 448, 452, 453, 451, 454, 454,
+ 454, 455, 455, 456, 457, 459, 460, 461, 458, 462,
+ 463, 464, 466, 465, 468, 469, 470, 467, 471, 471,
+ 472, 472, 472, 472, 472, 472, 472, 472, 472, 472,
+ 473, 474, 474, 475, 475, 476, 477, 477, 478, 480,
+ 481, 482, 483, 479, 484, 485, 485, 487, 486, 488,
+ 486, 489, 486, 490, 490, 491, 492, 492, 493, 494,
+ 496, 497, 495, 499, 500, 498, 501, 501, 503, 502,
+ 504, 502, 505, 502, 506, 502
};
/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
static const yytype_uint8 yyr2[] =
{
- 0, 2, 1, 3, 0, 1, 2, 2, 3, 0,
- 3, 0, 3, 0, 3, 0, 3, 0, 3, 0,
- 3, 0, 3, 0, 3, 0, 3, 0, 3, 0,
- 3, 0, 3, 0, 3, 0, 3, 0, 3, 0,
- 0, 0, 7, 2, 0, 0, 0, 0, 0, 11,
- 2, 3, 0, 1, 2, 0, 0, 8, 0, 0,
- 6, 1, 1, 0, 0, 0, 7, 0, 3, 2,
- 3, 3, 0, 4, 0, 1, 1, 1, 1, 2,
- 1, 0, 0, 0, 7, 0, 0, 0, 8, 0,
- 4, 0, 3, 1, 0, 2, 0, 2, 1, 2,
- 2, 0, 1, 1, 2, 0, 3, 0, 3, 2,
- 0, 0, 3, 0, 3, 0, 3, 0, 3, 0,
- 3, 0, 3, 0, 3, 0, 3, 2, 0, 4,
- 0, 1, 0, 3, 0, 4, 1, 2, 1, 2,
- 2, 0, 0, 0, 0, 9, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 3, 1,
- 3, 1, 3, 1, 3, 3, 1, 3, 3, 1,
- 3, 3, 3, 1, 2, 2, 2, 1, 1, 3,
+ 0, 2, 1, 1, 0, 3, 2, 1, 2, 2,
+ 0, 3, 0, 3, 0, 3, 0, 3, 0, 3,
+ 0, 3, 0, 3, 0, 3, 0, 3, 0, 3,
+ 0, 3, 0, 3, 0, 3, 0, 3, 0, 3,
+ 0, 3, 0, 0, 0, 7, 2, 0, 0, 0,
+ 0, 0, 11, 2, 2, 0, 1, 2, 0, 0,
+ 8, 0, 0, 6, 1, 1, 0, 0, 0, 7,
+ 0, 3, 2, 3, 3, 0, 4, 0, 1, 1,
+ 1, 1, 2, 1, 0, 0, 0, 7, 0, 0,
+ 0, 8, 0, 4, 0, 3, 1, 0, 2, 0,
+ 2, 1, 2, 2, 0, 1, 1, 2, 1, 1,
+ 2, 2, 0, 0, 3, 0, 3, 0, 3, 0,
+ 3, 0, 3, 0, 3, 0, 3, 0, 3, 2,
+ 0, 4, 0, 1, 0, 3, 0, 4, 1, 1,
+ 1, 2, 2, 0, 0, 0, 0, 9, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 2, 0, 5, 2, 1, 1, 2, 3, 0,
- 3, 0, 3, 1, 1, 1, 2, 1, 0, 3,
+ 3, 1, 3, 1, 3, 1, 3, 3, 1, 3,
+ 3, 1, 3, 3, 3, 1, 2, 2, 2, 1,
+ 1, 3, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 0, 6, 2, 0, 1, 2, 2,
+ 0, 4, 1, 1, 4, 2, 0, 2, 2, 0,
+ 0, 4, 3, 0, 1, 1, 2, 3, 0, 3,
+ 0, 3, 1, 1, 1, 2, 1, 0, 3, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 2, 0, 4, 0, 1, 1, 2, 0,
- 4, 0, 1, 1, 1, 1, 1, 2, 1, 2,
- 3, 2, 1, 1, 2, 1, 1, 1, 1, 1,
- 1, 1, 0, 3, 0, 0, 0, 7, 2, 2,
- 0, 0, 2, 0, 0, 6, 0, 3, 0, 3,
- 0, 0, 0, 0, 0, 0, 14, 1, 1, 1,
- 1, 1, 1, 2, 2, 0, 0, 0, 6, 0,
- 3, 2, 3, 0, 0, 3, 0, 0, 5, 0,
- 3, 1, 1, 0, 0, 0, 0, 9, 2, 0,
- 4, 0, 2, 0, 0, 6, 2, 0, 0, 5,
- 6, 0, 0, 6, 1, 1, 0, 0, 6, 1,
- 1, 0, 3, 2, 2, 0, 0, 0, 5, 1,
- 1, 0, 0, 0, 0, 9, 0, 0, 0, 0,
- 9, 0, 0, 0, 0, 9, 0, 0, 0, 0,
- 11, 1, 1, 0, 1, 1, 0, 0, 0, 8,
- 0, 3, 0, 4, 2, 0, 4, 0, 0, 0,
- 5, 0, 3, 0, 4, 2, 0, 4, 0, 0,
- 0, 5, 1, 1, 1, 1, 1, 1, 1, 0,
- 0, 6, 0, 0, 0, 6, 0, 0, 0, 6,
- 0, 0, 0, 6, 0, 2, 0, 4, 0, 3,
- 3, 1, 1, 2, 0, 0, 0, 7, 0, 0,
- 6, 0, 3, 0, 2, 0, 0, 3, 0, 3,
- 0, 3, 0, 3, 0, 3, 0, 3, 0, 3,
- 3, 1, 1, 3, 2, 1, 0, 3, 3, 3,
- 0, 3, 0, 0, 0, 0, 0, 0, 13, 0,
- 3, 0, 2, 0, 0, 0, 5, 2, 0, 1,
- 0, 3, 0, 3, 0, 0, 6, 0, 0, 6,
- 1, 1, 1, 1, 1, 2, 3, 0, 0, 0,
- 8, 3, 3, 2, 0, 3, 0, 0, 0, 8,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 2, 2, 0, 4, 0, 2, 5, 2, 3,
- 0, 1, 0, 0, 0, 0, 10, 2, 2, 0,
- 0, 3, 0, 3, 0, 3, 3, 3, 3, 4,
- 0, 1, 2, 0, 0, 6, 0, 0, 5, 2,
- 0, 0, 3, 0, 3, 0, 3, 0, 3
+ 1, 2, 0, 4, 0, 1, 1, 2, 0, 4,
+ 0, 1, 1, 1, 1, 1, 2, 1, 2, 3,
+ 2, 1, 1, 2, 1, 1, 1, 1, 1, 1,
+ 1, 0, 3, 0, 0, 0, 7, 2, 2, 0,
+ 2, 0, 0, 5, 0, 3, 0, 3, 0, 0,
+ 0, 0, 0, 0, 15, 1, 1, 1, 1, 1,
+ 1, 2, 2, 0, 0, 0, 6, 0, 3, 2,
+ 2, 0, 0, 3, 0, 0, 5, 0, 3, 1,
+ 1, 0, 0, 0, 0, 9, 2, 0, 4, 0,
+ 2, 0, 0, 6, 2, 0, 0, 6, 6, 0,
+ 0, 6, 1, 1, 0, 0, 6, 1, 1, 0,
+ 4, 2, 2, 0, 0, 0, 5, 1, 1, 0,
+ 0, 0, 0, 9, 0, 0, 0, 0, 9, 0,
+ 0, 0, 0, 9, 0, 0, 0, 0, 11, 1,
+ 1, 0, 1, 1, 0, 0, 0, 8, 0, 3,
+ 0, 4, 2, 0, 4, 0, 0, 0, 5, 0,
+ 3, 0, 4, 2, 0, 4, 0, 0, 0, 5,
+ 1, 1, 1, 1, 1, 1, 1, 0, 0, 6,
+ 0, 0, 0, 6, 0, 0, 0, 6, 0, 0,
+ 0, 6, 0, 2, 0, 4, 0, 3, 3, 1,
+ 1, 2, 0, 0, 0, 7, 0, 0, 6, 0,
+ 3, 0, 2, 0, 0, 3, 0, 3, 0, 3,
+ 0, 3, 0, 3, 0, 3, 0, 3, 3, 1,
+ 1, 3, 2, 1, 0, 3, 3, 3, 0, 3,
+ 0, 0, 0, 0, 0, 0, 13, 0, 3, 0,
+ 2, 0, 0, 0, 5, 2, 0, 1, 0, 3,
+ 0, 3, 0, 0, 6, 0, 0, 6, 1, 1,
+ 1, 1, 1, 2, 3, 0, 0, 0, 8, 3,
+ 3, 2, 0, 3, 0, 0, 0, 8, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
+ 2, 3, 0, 2, 5, 2, 3, 0, 1, 0,
+ 0, 0, 0, 10, 2, 2, 0, 0, 3, 0,
+ 3, 0, 3, 3, 3, 3, 4, 0, 1, 2,
+ 0, 0, 6, 0, 0, 5, 2, 0, 0, 3,
+ 0, 3, 0, 3, 0, 3
};
@@ -1721,7 +1809,7 @@ do { \
static void
yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
{
- unsigned long int yylno = yyrline[yyrule];
+ unsigned long yylno = yyrline[yyrule];
int yynrhs = yyr2[yyrule];
int yyi;
YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
@@ -1947,6 +2035,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
case N: \
yyformat = S; \
break
+ default: /* Avoid compiler warnings. */
YYCASE_(0, YY_("syntax error"));
YYCASE_(1, YY_("syntax error, unexpected %s"));
YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
@@ -2152,7 +2241,7 @@ yyparse (void)
yyvsp = yyvs + yysize - 1;
YYDPRINTF ((stderr, "Stack size increased to %lu\n",
- (unsigned long int) yystacksize));
+ (unsigned long) yystacksize));
if (yyss + yystacksize - 1 <= yyssp)
YYABORT;
@@ -2263,300 +2352,328 @@ yyreduce:
switch (yyn)
{
case 5:
-#line 369 "fe/idl.ypp" /* yacc.c:1646 */
+#line 400 "fe/idl.ypp" /* yacc.c:1651 */
{
+ AST_Decl *d = (yyvsp[0].dcval);
+ if (d)
+ {
+ d->annotation_appls ((yyvsp[-1].annotations_val));
+ }
+ else
+ {
+ idl_global->err ()-> unsupported_warning(
+ "Annotating this type of definition is not supported");
+ }
}
-#line 2270 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2369 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 6:
-#line 372 "fe/idl.ypp" /* yacc.c:1646 */
+#line 413 "fe/idl.ypp" /* yacc.c:1651 */
{
}
-#line 2277 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2376 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 7:
-#line 375 "fe/idl.ypp" /* yacc.c:1646 */
+#line 419 "fe/idl.ypp" /* yacc.c:1651 */
{
+ (yyval.dcval) = (yyvsp[0].dcval);
}
-#line 2284 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2384 "fe/idl.tab.cpp" /* yacc.c:1651 */
+ break;
+
+ case 8:
+#line 423 "fe/idl.ypp" /* yacc.c:1651 */
+ {
+ (yyval.dcval) = 0;
+ }
+#line 2392 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 9:
-#line 392 "fe/idl.ypp" /* yacc.c:1646 */
+#line 427 "fe/idl.ypp" /* yacc.c:1651 */
{
-// fixed_definition : type_dcl
- idl_global->set_parse_state (IDL_GlobalData::PS_TypeDeclSeen);
+ (yyval.dcval) = 0;
}
-#line 2293 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2400 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 10:
-#line 397 "fe/idl.ypp" /* yacc.c:1646 */
+#line 434 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ idl_global->set_parse_state (IDL_GlobalData::PS_AnnotationDeclSeen);
}
-#line 2302 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2408 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 11:
-#line 402 "fe/idl.ypp" /* yacc.c:1646 */
+#line 438 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | typeid_dcl
- idl_global->set_parse_state (IDL_GlobalData::PS_TypeIdDeclSeen);
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ (yyval.dcval) = 0;
}
-#line 2311 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2417 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 12:
-#line 407 "fe/idl.ypp" /* yacc.c:1646 */
+#line 443 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ idl_global->set_parse_state (IDL_GlobalData::PS_TypeDeclSeen);
}
-#line 2320 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2425 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 13:
-#line 412 "fe/idl.ypp" /* yacc.c:1646 */
+#line 447 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | typeprefix_dcl
- idl_global->set_parse_state (IDL_GlobalData::PS_TypePrefixDeclSeen);
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ (yyval.dcval) = (yyvsp[-2].dcval);
}
-#line 2329 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2434 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 14:
-#line 417 "fe/idl.ypp" /* yacc.c:1646 */
+#line 452 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ idl_global->set_parse_state (IDL_GlobalData::PS_TypeIdDeclSeen);
}
-#line 2338 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2442 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 15:
-#line 422 "fe/idl.ypp" /* yacc.c:1646 */
+#line 456 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | const_dcl
- idl_global->set_parse_state (IDL_GlobalData::PS_ConstDeclSeen);
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ (yyval.dcval) = 0;
}
-#line 2347 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2451 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 16:
-#line 427 "fe/idl.ypp" /* yacc.c:1646 */
+#line 461 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ idl_global->set_parse_state (IDL_GlobalData::PS_TypePrefixDeclSeen);
}
-#line 2356 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2459 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 17:
-#line 432 "fe/idl.ypp" /* yacc.c:1646 */
+#line 465 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | exception
- idl_global->set_parse_state (IDL_GlobalData::PS_ExceptDeclSeen);
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ (yyval.dcval) = 0;
}
-#line 2365 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2468 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 18:
-#line 437 "fe/idl.ypp" /* yacc.c:1646 */
+#line 470 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ idl_global->set_parse_state (IDL_GlobalData::PS_ConstDeclSeen);
}
-#line 2374 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2476 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 19:
-#line 442 "fe/idl.ypp" /* yacc.c:1646 */
+#line 474 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | interface_def
- idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceDeclSeen);
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ (yyval.dcval) = (yyvsp[-2].dcval);
}
-#line 2383 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2485 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 20:
-#line 447 "fe/idl.ypp" /* yacc.c:1646 */
+#line 479 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ idl_global->set_parse_state (IDL_GlobalData::PS_ExceptDeclSeen);
}
-#line 2392 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2493 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 21:
-#line 452 "fe/idl.ypp" /* yacc.c:1646 */
+#line 483 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | module
- idl_global->set_parse_state (IDL_GlobalData::PS_ModuleDeclSeen);
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ (yyval.dcval) = 0;
}
-#line 2401 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2502 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 22:
-#line 457 "fe/idl.ypp" /* yacc.c:1646 */
+#line 488 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceDeclSeen);
}
-#line 2410 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2510 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 23:
-#line 462 "fe/idl.ypp" /* yacc.c:1646 */
+#line 492 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | value_def
- idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeDeclSeen);
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ (yyval.dcval) = 0;
}
-#line 2419 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2519 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 24:
-#line 467 "fe/idl.ypp" /* yacc.c:1646 */
+#line 497 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ idl_global->set_parse_state (IDL_GlobalData::PS_ModuleDeclSeen);
}
-#line 2428 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2527 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 25:
-#line 472 "fe/idl.ypp" /* yacc.c:1646 */
+#line 501 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | component
- idl_global->set_parse_state (IDL_GlobalData::PS_ComponentDeclSeen);
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ (yyval.dcval) = (yyvsp[-2].dcval);
}
-#line 2437 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2536 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 26:
-#line 477 "fe/idl.ypp" /* yacc.c:1646 */
+#line 506 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeDeclSeen);
}
-#line 2446 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2544 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 27:
-#line 482 "fe/idl.ypp" /* yacc.c:1646 */
+#line 510 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | home_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_HomeDeclSeen);
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ (yyval.dcval) = 0;
}
-#line 2455 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2553 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 28:
-#line 487 "fe/idl.ypp" /* yacc.c:1646 */
+#line 515 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ idl_global->set_parse_state (IDL_GlobalData::PS_ComponentDeclSeen);
}
-#line 2464 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2561 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 29:
-#line 492 "fe/idl.ypp" /* yacc.c:1646 */
+#line 519 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | event
- idl_global->set_parse_state (IDL_GlobalData::PS_EventDeclSeen);
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ (yyval.dcval) = 0;
}
-#line 2473 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2570 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 30:
-#line 497 "fe/idl.ypp" /* yacc.c:1646 */
+#line 524 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ idl_global->set_parse_state (IDL_GlobalData::PS_HomeDeclSeen);
}
-#line 2482 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2578 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 31:
-#line 502 "fe/idl.ypp" /* yacc.c:1646 */
+#line 528 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | porttype_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_PorttypeDeclSeen);
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ (yyval.dcval) = 0;
}
-#line 2491 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2587 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 32:
-#line 507 "fe/idl.ypp" /* yacc.c:1646 */
+#line 533 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ idl_global->set_parse_state (IDL_GlobalData::PS_EventDeclSeen);
}
-#line 2500 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2595 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 33:
-#line 512 "fe/idl.ypp" /* yacc.c:1646 */
+#line 537 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | connector_decl
- idl_global->set_parse_state (IDL_GlobalData::PS_ConnectorDeclSeen);
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ (yyval.dcval) = 0;
}
-#line 2509 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2604 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 34:
-#line 517 "fe/idl.ypp" /* yacc.c:1646 */
+#line 542 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ idl_global->set_parse_state (IDL_GlobalData::PS_PorttypeDeclSeen);
}
-#line 2518 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2612 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 35:
-#line 522 "fe/idl.ypp" /* yacc.c:1646 */
+#line 546 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | error
- idl_global->err()->syntax_error (idl_global->parse_state());
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ (yyval.dcval) = 0;
}
-#line 2527 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2621 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 36:
-#line 527 "fe/idl.ypp" /* yacc.c:1646 */
+#line 551 "fe/idl.ypp" /* yacc.c:1651 */
+ {
+ idl_global->set_parse_state (IDL_GlobalData::PS_ConnectorDeclSeen);
+ }
+#line 2629 "fe/idl.tab.cpp" /* yacc.c:1651 */
+ break;
+
+ case 37:
+#line 555 "fe/idl.ypp" /* yacc.c:1651 */
+ {
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ (yyval.dcval) = 0;
+ }
+#line 2638 "fe/idl.tab.cpp" /* yacc.c:1651 */
+ break;
+
+ case 38:
+#line 560 "fe/idl.ypp" /* yacc.c:1651 */
+ {
+ idl_global->err()->syntax_error (idl_global->parse_state());
+ }
+#line 2646 "fe/idl.tab.cpp" /* yacc.c:1651 */
+ break;
+
+ case 39:
+#line 564 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
yyerrok;
+ (yyval.dcval) = 0;
}
-#line 2537 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2656 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 37:
-#line 536 "fe/idl.ypp" /* yacc.c:1646 */
+ case 40:
+#line 573 "fe/idl.ypp" /* yacc.c:1651 */
{
-// module_header : IDL_MODULE
idl_global->set_parse_state (IDL_GlobalData::PS_ModuleSeen);
}
-#line 2546 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2664 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 38:
-#line 541 "fe/idl.ypp" /* yacc.c:1646 */
+ case 41:
+#line 577 "fe/idl.ypp" /* yacc.c:1651 */
{
(yyval.idlist) = (yyvsp[0].idlist);
}
-#line 2554 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2672 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 39:
-#line 548 "fe/idl.ypp" /* yacc.c:1646 */
+ case 42:
+#line 584 "fe/idl.ypp" /* yacc.c:1651 */
{
-// module : module_header
idl_global->set_parse_state (IDL_GlobalData::PS_ModuleIDSeen);
// The module_header rule is common to template module, fixed
@@ -2579,8 +2696,7 @@ yyreduce:
*/
if (s != 0)
{
- m = idl_global->gen ()->create_module (s,
- (yyvsp[0].idlist));
+ m = idl_global->gen ()->create_module (s, (yyvsp[0].idlist));
(void) s->fe_add_module (m);
}
@@ -2592,54 +2708,53 @@ yyreduce:
* Push it on the stack
*/
idl_global->scopes ().push (m);
+
+ (yyval.dcval) = m;
}
-#line 2597 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2715 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 40:
-#line 587 "fe/idl.ypp" /* yacc.c:1646 */
+ case 43:
+#line 623 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_ModuleSqSeen);
+ idl_global->set_parse_state (IDL_GlobalData::PS_ModuleSqSeen);
}
-#line 2606 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2723 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 41:
-#line 592 "fe/idl.ypp" /* yacc.c:1646 */
+ case 44:
+#line 627 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_definition
idl_global->set_parse_state (IDL_GlobalData::PS_ModuleBodySeen);
}
-#line 2615 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2731 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 42:
-#line 597 "fe/idl.ypp" /* yacc.c:1646 */
+ case 45:
+#line 631 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_ModuleQsSeen);
/*
* Finished with this module - pop it from the scope stack.
*/
idl_global->scopes ().pop ();
+ (yyval.dcval) = (yyvsp[-5].dcval);
}
-#line 2629 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2745 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 43:
-#line 610 "fe/idl.ypp" /* yacc.c:1646 */
+ case 46:
+#line 644 "fe/idl.ypp" /* yacc.c:1651 */
{
idl_global->set_parse_state (IDL_GlobalData::PS_TmplModuleIDSeen);
}
-#line 2637 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2753 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 44:
-#line 617 "fe/idl.ypp" /* yacc.c:1646 */
+ case 47:
+#line 651 "fe/idl.ypp" /* yacc.c:1651 */
{
-// template_module : template_module_header
// The module_header rule is common to template module, fixed
// module and instantiated template module. In the last
// case, a fully scoped name is allowed, but here we
@@ -2652,11 +2767,11 @@ yyreduce:
IDL_GlobalData::PS_ModuleIDSeen);
}
}
-#line 2656 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2771 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 45:
-#line 632 "fe/idl.ypp" /* yacc.c:1646 */
+ case 48:
+#line 665 "fe/idl.ypp" /* yacc.c:1651 */
{
if (FE_Utils::duplicate_param_id ((yyvsp[0].plval)))
{
@@ -2666,13 +2781,12 @@ yyreduce:
return 1;
}
}
-#line 2670 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2785 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 46:
-#line 642 "fe/idl.ypp" /* yacc.c:1646 */
+ case 49:
+#line 675 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '>'
idl_global->set_parse_state (IDL_GlobalData::PS_TmplModuleParamsSeen);
AST_Template_Module *tm =
@@ -2701,29 +2815,28 @@ yyreduce:
// of the template module.
idl_global->current_params ((yyvsp[-2].plval));
}
-#line 2705 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2819 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 47:
-#line 673 "fe/idl.ypp" /* yacc.c:1646 */
+ case 50:
+#line 705 "fe/idl.ypp" /* yacc.c:1651 */
{
idl_global->set_parse_state (IDL_GlobalData::PS_TmplModuleSqSeen);
}
-#line 2713 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2827 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 48:
-#line 677 "fe/idl.ypp" /* yacc.c:1646 */
+ case 51:
+#line 709 "fe/idl.ypp" /* yacc.c:1651 */
{
idl_global->set_parse_state (IDL_GlobalData::PS_TmplModuleBodySeen);
}
-#line 2721 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2835 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 49:
-#line 681 "fe/idl.ypp" /* yacc.c:1646 */
+ case 52:
+#line 713 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_TmplModuleQsSeen);
/*
@@ -2739,33 +2852,30 @@ yyreduce:
// that we are no longer in a template module scope.
idl_global->current_params (0);
}
-#line 2743 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2856 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 55:
-#line 716 "fe/idl.ypp" /* yacc.c:1646 */
+ case 58:
+#line 747 "fe/idl.ypp" /* yacc.c:1651 */
{
-// template_module_ref : IDL_ALIAS scoped_name
idl_global->set_parse_state (
IDL_GlobalData::PS_ModuleRefSeen);
}
-#line 2753 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2865 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 56:
-#line 722 "fe/idl.ypp" /* yacc.c:1646 */
+ case 59:
+#line 752 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '<' at_least_one_formal_parameter_name '>'
idl_global->set_parse_state (
IDL_GlobalData::PS_ModuleRefParamsSeen);
}
-#line 2763 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2874 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 57:
-#line 728 "fe/idl.ypp" /* yacc.c:1646 */
+ case 60:
+#line 757 "fe/idl.ypp" /* yacc.c:1651 */
{
-// defining_id
idl_global->set_parse_state (
IDL_GlobalData::PS_ModuleRefIDSeen);
@@ -2842,33 +2952,30 @@ yyreduce:
idl_global->in_tmpl_mod_no_alias (itmna_flag);
idl_global->in_tmpl_mod_alias (false);
}
-#line 2846 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2956 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 58:
-#line 810 "fe/idl.ypp" /* yacc.c:1646 */
+ case 61:
+#line 838 "fe/idl.ypp" /* yacc.c:1651 */
{
-// template_module_inst : template_module_header
idl_global->set_parse_state (
IDL_GlobalData::PS_InstModuleSeen);
}
-#line 2856 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2965 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 59:
-#line 816 "fe/idl.ypp" /* yacc.c:1646 */
+ case 62:
+#line 843 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_actual_parameter '>'
idl_global->set_parse_state (
IDL_GlobalData::PS_InstModuleArgsSeen);
}
-#line 2866 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 2974 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 60:
-#line 822 "fe/idl.ypp" /* yacc.c:1646 */
+ case 63:
+#line 848 "fe/idl.ypp" /* yacc.c:1651 */
{
-// defining_id
idl_global->set_parse_state (
IDL_GlobalData::PS_InstModuleIDSeen);
@@ -2929,13 +3036,12 @@ yyreduce:
idl_global->set_err_count (idl_global->err_count () + 1);
}
}
-#line 2933 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3040 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 63:
-#line 893 "fe/idl.ypp" /* yacc.c:1646 */
+ case 66:
+#line 918 "fe/idl.ypp" /* yacc.c:1651 */
{
-// interface : interface_header
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Interface *i = 0;
@@ -2972,31 +3078,28 @@ yyreduce:
*/
idl_global->scopes ().push (i);
}
-#line 2976 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3082 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 64:
-#line 932 "fe/idl.ypp" /* yacc.c:1646 */
+ case 67:
+#line 956 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '{'
idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceSqSeen);
}
-#line 2985 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3090 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 65:
-#line 937 "fe/idl.ypp" /* yacc.c:1646 */
+ case 68:
+#line 960 "fe/idl.ypp" /* yacc.c:1651 */
{
-// exports
idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceBodySeen);
}
-#line 2994 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3098 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 66:
-#line 942 "fe/idl.ypp" /* yacc.c:1646 */
+ case 69:
+#line 964 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceQsSeen);
/*
@@ -3004,32 +3107,29 @@ yyreduce:
*/
idl_global->scopes ().pop ();
}
-#line 3008 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3111 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 67:
-#line 955 "fe/idl.ypp" /* yacc.c:1646 */
+ case 70:
+#line 976 "fe/idl.ypp" /* yacc.c:1651 */
{
-// interface_decl : IDL_INTERFACE
idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceSeen);
}
-#line 3017 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3119 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 68:
-#line 960 "fe/idl.ypp" /* yacc.c:1646 */
+ case 71:
+#line 980 "fe/idl.ypp" /* yacc.c:1651 */
{
-// defining_id
idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceIDSeen);
(yyval.idval) = (yyvsp[0].idval);
}
-#line 3027 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3128 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 69:
-#line 969 "fe/idl.ypp" /* yacc.c:1646 */
+ case 72:
+#line 988 "fe/idl.ypp" /* yacc.c:1651 */
{
-// interface_header : interface_decl inheritance_spec
idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
if ((yyvsp[0].nlval) != 0 && (yyvsp[0].nlval)->truncatable ())
@@ -3064,13 +3164,12 @@ yyreduce:
(yyvsp[0].nlval) = 0;
}
}
-#line 3068 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3168 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 70:
-#line 1007 "fe/idl.ypp" /* yacc.c:1646 */
+ case 73:
+#line 1025 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_LOCAL interface_decl inheritance_spec
idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
/*
@@ -3098,13 +3197,12 @@ yyreduce:
(yyvsp[0].nlval) = 0;
}
}
-#line 3102 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3201 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 71:
-#line 1038 "fe/idl.ypp" /* yacc.c:1646 */
+ case 74:
+#line 1055 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_ABSTRACT interface_decl inheritance_spec
idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
/*
@@ -3132,56 +3230,45 @@ yyreduce:
(yyvsp[0].nlval) = 0;
}
}
-#line 3136 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3234 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 72:
-#line 1071 "fe/idl.ypp" /* yacc.c:1646 */
+ case 75:
+#line 1087 "fe/idl.ypp" /* yacc.c:1651 */
{
-// inheritance_spec : ':' opt_truncatable
idl_global->set_parse_state (IDL_GlobalData::PS_InheritColonSeen);
}
-#line 3145 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3242 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 73:
-#line 1076 "fe/idl.ypp" /* yacc.c:1646 */
+ case 76:
+#line 1091 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_scoped_name
(yyvsp[0].nlval)->truncatable ((yyvsp[-2].bval));
(yyval.nlval) = (yyvsp[0].nlval);
}
-#line 3155 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3251 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 74:
-#line 1082 "fe/idl.ypp" /* yacc.c:1646 */
+ case 77:
+#line 1096 "fe/idl.ypp" /* yacc.c:1651 */
{
-/* | EMPTY */
(yyval.nlval) = 0;
}
-#line 3164 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3259 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 79:
-#line 1097 "fe/idl.ypp" /* yacc.c:1646 */
+ case 82:
+#line 1110 "fe/idl.ypp" /* yacc.c:1651 */
{
-// valuetype : IDL_CUSTOM value_concrete_decl
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("error in %C line %d\n"),
- idl_global->filename ()->get_string (),
- idl_global->lineno ()));
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("Sorry, I (TAO_IDL) can't handle")
- ACE_TEXT (" custom yet\n")));
+ idl_global->err ()->unsupported_error ("custom is not supported");
}
-#line 3179 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3267 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 81:
-#line 1112 "fe/idl.ypp" /* yacc.c:1646 */
+ case 84:
+#line 1118 "fe/idl.ypp" /* yacc.c:1651 */
{
-// value_concrete_decl : value_header
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_ValueType *v = 0;
AST_Interface *i = 0;
@@ -3223,31 +3310,28 @@ yyreduce:
*/
idl_global->scopes ().push (v);
}
-#line 3227 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3314 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 82:
-#line 1156 "fe/idl.ypp" /* yacc.c:1646 */
+ case 85:
+#line 1161 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '{'
idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeSqSeen);
}
-#line 3236 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3322 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 83:
-#line 1161 "fe/idl.ypp" /* yacc.c:1646 */
+ case 86:
+#line 1165 "fe/idl.ypp" /* yacc.c:1651 */
{
-// value_elements
idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeBodySeen);
}
-#line 3245 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3330 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 84:
-#line 1166 "fe/idl.ypp" /* yacc.c:1646 */
+ case 87:
+#line 1169 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeQsSeen);
AST_ValueType *vt =
@@ -3265,13 +3349,12 @@ yyreduce:
*/
idl_global->scopes ().pop ();
}
-#line 3269 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3353 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 85:
-#line 1190 "fe/idl.ypp" /* yacc.c:1646 */
+ case 88:
+#line 1192 "fe/idl.ypp" /* yacc.c:1651 */
{
-// value_abs_decl : IDL_ABSTRACT value_header
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_ValueType *v = 0;
AST_Interface *i = 0;
@@ -3313,31 +3396,28 @@ yyreduce:
*/
idl_global->scopes ().push (v);
}
-#line 3317 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3400 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 86:
-#line 1234 "fe/idl.ypp" /* yacc.c:1646 */
+ case 89:
+#line 1235 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '{'
idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeSqSeen);
}
-#line 3326 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3408 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 87:
-#line 1239 "fe/idl.ypp" /* yacc.c:1646 */
+ case 90:
+#line 1239 "fe/idl.ypp" /* yacc.c:1651 */
{
-// exports
idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeBodySeen);
}
-#line 3335 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3416 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 88:
-#line 1244 "fe/idl.ypp" /* yacc.c:1646 */
+ case 91:
+#line 1243 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeQsSeen);
/*
@@ -3345,22 +3425,20 @@ yyreduce:
*/
idl_global->scopes ().pop ();
}
-#line 3349 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3429 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 89:
-#line 1258 "fe/idl.ypp" /* yacc.c:1646 */
+ case 92:
+#line 1256 "fe/idl.ypp" /* yacc.c:1651 */
{
-// value_header : value_decl inheritance_spec
idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
}
-#line 3358 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3437 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 90:
-#line 1263 "fe/idl.ypp" /* yacc.c:1646 */
+ case 93:
+#line 1260 "fe/idl.ypp" /* yacc.c:1651 */
{
-// supports_spec
idl_global->set_parse_state (IDL_GlobalData::PS_SupportSpecSeen);
UTL_ScopedName *sn = 0;
@@ -3390,68 +3468,62 @@ yyreduce:
(yyvsp[-2].nlval) = 0;
}
}
-#line 3394 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3472 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 91:
-#line 1298 "fe/idl.ypp" /* yacc.c:1646 */
+ case 94:
+#line 1294 "fe/idl.ypp" /* yacc.c:1651 */
{
-// value_decl : IDL_VALUETYPE
idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeSeen);
}
-#line 3403 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3480 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 92:
-#line 1303 "fe/idl.ypp" /* yacc.c:1646 */
+ case 95:
+#line 1298 "fe/idl.ypp" /* yacc.c:1651 */
{
-// defining_id
idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeIDSeen);
(yyval.idval) = (yyvsp[0].idval);
}
-#line 3413 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3489 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 93:
-#line 1312 "fe/idl.ypp" /* yacc.c:1646 */
+ case 96:
+#line 1306 "fe/idl.ypp" /* yacc.c:1651 */
{
-// opt_truncatable : IDL_TRUNCATABLE
(yyval.bval) = true;
}
-#line 3422 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3497 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 94:
-#line 1317 "fe/idl.ypp" /* yacc.c:1646 */
+ case 97:
+#line 1310 "fe/idl.ypp" /* yacc.c:1651 */
{
-/* | EMPTY */
(yyval.bval) = false;
}
-#line 3431 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3505 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 95:
-#line 1326 "fe/idl.ypp" /* yacc.c:1646 */
+ case 98:
+#line 1318 "fe/idl.ypp" /* yacc.c:1651 */
{
-// supports_spec : IDL_SUPPORTS at_least_one_scoped_name
(yyval.nlval) = (yyvsp[0].nlval);
}
-#line 3440 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3513 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 96:
-#line 1331 "fe/idl.ypp" /* yacc.c:1646 */
+ case 99:
+#line 1322 "fe/idl.ypp" /* yacc.c:1651 */
{
/* | EMPTY */
(yyval.nlval) = 0;
}
-#line 3449 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3522 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 97:
-#line 1340 "fe/idl.ypp" /* yacc.c:1646 */
+ case 100:
+#line 1331 "fe/idl.ypp" /* yacc.c:1651 */
{
-// value_forward_decl : IDL_ABSTRACT value_decl
UTL_Scope *s = idl_global->scopes ().top_non_null ();
UTL_ScopedName n ((yyvsp[0].idval),
0);
@@ -3473,13 +3545,12 @@ yyreduce:
delete (yyvsp[0].idval);
(yyvsp[0].idval) = 0;
}
-#line 3477 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3549 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 98:
-#line 1365 "fe/idl.ypp" /* yacc.c:1646 */
+ case 101:
+#line 1355 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | value_decl
UTL_Scope *s = idl_global->scopes ().top_non_null ();
UTL_ScopedName n ((yyvsp[0].idval),
0);
@@ -3501,13 +3572,12 @@ yyreduce:
delete (yyvsp[0].idval);
(yyvsp[0].idval) = 0;
}
-#line 3505 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3576 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 99:
-#line 1392 "fe/idl.ypp" /* yacc.c:1646 */
+ case 102:
+#line 1381 "fe/idl.ypp" /* yacc.c:1651 */
{
-// value_box_decl : value_decl type_spec
idl_global->set_parse_state (IDL_GlobalData::PS_ValueBoxDeclSeen);
UTL_Scope *s = idl_global->scopes ().top_non_null ();
@@ -3567,215 +3637,195 @@ yyreduce:
delete (yyvsp[-1].idval);
(yyvsp[-1].idval) = 0;
}
-#line 3571 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3641 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 105:
-#line 1469 "fe/idl.ypp" /* yacc.c:1646 */
+ case 108:
+#line 1457 "fe/idl.ypp" /* yacc.c:1651 */
{
-// state_member : IDL_PUBLIC
- /* is $0 to member_i */
(yyval.vival) = AST_Field::vis_PUBLIC;
}
-#line 3581 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3649 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 106:
-#line 1475 "fe/idl.ypp" /* yacc.c:1646 */
+ case 109:
+#line 1461 "fe/idl.ypp" /* yacc.c:1651 */
{
-// member_i
- }
-#line 3589 "fe/idl.tab.cpp" /* yacc.c:1646 */
- break;
-
- case 107:
-#line 1479 "fe/idl.ypp" /* yacc.c:1646 */
- {
-// IDL_PRIVATE
- /* is $0 to member_i */
(yyval.vival) = AST_Field::vis_PRIVATE;
}
-#line 3599 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3657 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 108:
-#line 1485 "fe/idl.ypp" /* yacc.c:1646 */
+ case 110:
+#line 1468 "fe/idl.ypp" /* yacc.c:1651 */
{
-// member_i
+ if ((yyvsp[0].decls_val))
+ {
+ AST_Decls &decls = *(yyvsp[0].decls_val);
+ for (size_t i = 0; i < decls.size (); i++)
+ {
+ AST_Field * field = dynamic_cast<AST_Field*>(decls[i]);
+ if (field)
+ {
+ field->visibility ((yyvsp[-1].vival));
+ }
+ }
+ }
}
-#line 3607 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3676 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 111:
-#line 1497 "fe/idl.ypp" /* yacc.c:1646 */
+ case 113:
+#line 1491 "fe/idl.ypp" /* yacc.c:1651 */
{
-// export : type_dcl
idl_global->set_parse_state (IDL_GlobalData::PS_TypeDeclSeen);
}
-#line 3616 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3684 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 112:
-#line 1502 "fe/idl.ypp" /* yacc.c:1646 */
+ case 114:
+#line 1495 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
-#line 3625 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3692 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 113:
-#line 1507 "fe/idl.ypp" /* yacc.c:1646 */
+ case 115:
+#line 1499 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | typeid_dcl
idl_global->set_parse_state (IDL_GlobalData::PS_TypeIdDeclSeen);
}
-#line 3634 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3700 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 114:
-#line 1512 "fe/idl.ypp" /* yacc.c:1646 */
+ case 116:
+#line 1503 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
-#line 3643 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3708 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 115:
-#line 1517 "fe/idl.ypp" /* yacc.c:1646 */
+ case 117:
+#line 1507 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | typeprefix_dcl
idl_global->set_parse_state (IDL_GlobalData::PS_TypePrefixDeclSeen);
}
-#line 3652 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3716 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 116:
-#line 1522 "fe/idl.ypp" /* yacc.c:1646 */
+ case 118:
+#line 1511 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
-#line 3661 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3724 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 117:
-#line 1527 "fe/idl.ypp" /* yacc.c:1646 */
+ case 119:
+#line 1515 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | const_dcl
idl_global->set_parse_state (IDL_GlobalData::PS_ConstDeclSeen);
}
-#line 3670 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3732 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 118:
-#line 1532 "fe/idl.ypp" /* yacc.c:1646 */
+ case 120:
+#line 1519 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
idl_global->set_parse_state(IDL_GlobalData::PS_NoState);
}
-#line 3679 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3740 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 119:
-#line 1537 "fe/idl.ypp" /* yacc.c:1646 */
+ case 121:
+#line 1523 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | exception
idl_global->set_parse_state (IDL_GlobalData::PS_ExceptDeclSeen);
}
-#line 3688 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3748 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 120:
-#line 1542 "fe/idl.ypp" /* yacc.c:1646 */
+ case 122:
+#line 1527 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
-#line 3697 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3756 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 121:
-#line 1547 "fe/idl.ypp" /* yacc.c:1646 */
+ case 123:
+#line 1531 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | attribute
idl_global->set_parse_state (IDL_GlobalData::PS_AttrDeclSeen);
}
-#line 3706 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3764 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 122:
-#line 1552 "fe/idl.ypp" /* yacc.c:1646 */
+ case 124:
+#line 1535 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
-#line 3715 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3772 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 123:
-#line 1557 "fe/idl.ypp" /* yacc.c:1646 */
+ case 125:
+#line 1539 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | operation
idl_global->set_parse_state (IDL_GlobalData::PS_OpDeclSeen);
}
-#line 3724 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3780 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 124:
-#line 1562 "fe/idl.ypp" /* yacc.c:1646 */
+ case 126:
+#line 1543 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
-#line 3733 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3788 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 125:
-#line 1567 "fe/idl.ypp" /* yacc.c:1646 */
+ case 127:
+#line 1547 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | error
idl_global->err()->syntax_error (idl_global->parse_state());
}
-#line 3742 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3796 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 126:
-#line 1572 "fe/idl.ypp" /* yacc.c:1646 */
+ case 128:
+#line 1551 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
yyerrok;
}
-#line 3752 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3805 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 127:
-#line 1581 "fe/idl.ypp" /* yacc.c:1646 */
+ case 129:
+#line 1559 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_scoped_name : scoped_name scoped_names
ACE_NEW_RETURN ((yyval.nlval),
UTL_NameList ((yyvsp[-1].idlist),
(yyvsp[0].nlval)),
1);
}
-#line 3764 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3816 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 128:
-#line 1593 "fe/idl.ypp" /* yacc.c:1646 */
+ case 130:
+#line 1570 "fe/idl.ypp" /* yacc.c:1651 */
{
-// scoped_names : scoped_names ','
idl_global->set_parse_state (IDL_GlobalData::PS_SNListCommaSeen);
}
-#line 3773 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3824 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 129:
-#line 1598 "fe/idl.ypp" /* yacc.c:1646 */
+ case 131:
+#line 1574 "fe/idl.ypp" /* yacc.c:1651 */
{
-// scoped_name
idl_global->set_parse_state (IDL_GlobalData::PS_ScopedNameSeen);
UTL_NameList *nl = 0;
@@ -3794,22 +3844,20 @@ yyreduce:
(yyval.nlval) = (yyvsp[-3].nlval);
}
}
-#line 3798 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3848 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 130:
-#line 1619 "fe/idl.ypp" /* yacc.c:1646 */
+ case 132:
+#line 1594 "fe/idl.ypp" /* yacc.c:1651 */
{
-/* | EMPTY */
(yyval.nlval) = 0;
}
-#line 3807 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3856 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 131:
-#line 1627 "fe/idl.ypp" /* yacc.c:1646 */
+ case 133:
+#line 1601 "fe/idl.ypp" /* yacc.c:1651 */
{
-// scoped_name : id
idl_global->set_parse_state (IDL_GlobalData::PS_SN_IDSeen);
ACE_NEW_RETURN ((yyval.idlist),
@@ -3817,22 +3865,20 @@ yyreduce:
0),
1);
}
-#line 3821 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3869 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 132:
-#line 1637 "fe/idl.ypp" /* yacc.c:1646 */
+ case 134:
+#line 1610 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_SCOPE_DELIMITOR
idl_global->set_parse_state (IDL_GlobalData::PS_ScopeDelimSeen);
}
-#line 3830 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3877 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 133:
-#line 1642 "fe/idl.ypp" /* yacc.c:1646 */
+ case 135:
+#line 1614 "fe/idl.ypp" /* yacc.c:1651 */
{
-// id
idl_global->set_parse_state (IDL_GlobalData::PS_SN_IDSeen);
Identifier *id = 0;
@@ -3851,13 +3897,12 @@ yyreduce:
sn),
1);
}
-#line 3855 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3901 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 134:
-#line 1664 "fe/idl.ypp" /* yacc.c:1646 */
+ case 136:
+#line 1635 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | scoped_name IDL_SCOPE_DELIMITOR
idl_global->set_parse_state (IDL_GlobalData::PS_ScopeDelimSeen);
// This cleans up all the non-global "::"s in scoped names.
@@ -3866,13 +3911,12 @@ yyreduce:
ACE::strdelete ((yyvsp[0].strval));
(yyvsp[0].strval) = 0;
}
-#line 3870 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3915 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 135:
-#line 1675 "fe/idl.ypp" /* yacc.c:1646 */
+ case 137:
+#line 1645 "fe/idl.ypp" /* yacc.c:1651 */
{
-// id
idl_global->set_parse_state (IDL_GlobalData::PS_SN_IDSeen);
UTL_IdList *sn = 0;
@@ -3883,43 +3927,38 @@ yyreduce:
(yyvsp[-3].idlist)->nconc (sn);
(yyval.idlist) = (yyvsp[-3].idlist);
}
-#line 3887 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3931 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 136:
-#line 1690 "fe/idl.ypp" /* yacc.c:1646 */
+ case 138:
+#line 1659 "fe/idl.ypp" /* yacc.c:1651 */
{
-// id: IDENTIFIER
ACE_NEW_RETURN ((yyval.idval),
Identifier ((yyvsp[0].strval)),
1);
ACE::strdelete ((yyvsp[0].strval));
(yyvsp[0].strval) = 0;
}
-#line 3900 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3943 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 137:
-#line 1701 "fe/idl.ypp" /* yacc.c:1646 */
+ case 139:
+#line 1669 "fe/idl.ypp" /* yacc.c:1651 */
{
/* defining_id is a defining identifier
whereas id is usually a reference to a defining identifier */
- ACE_NEW_RETURN ((yyval.idval),
- Identifier ((yyvsp[0].strval)),
- 1);
+ ACE_NEW_RETURN ((yyval.idval), Identifier ((yyvsp[0].strval)), 1);
ACE::strdelete ((yyvsp[0].strval));
(yyvsp[0].strval) = 0;
}
-#line 3914 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 3955 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 138:
-#line 1714 "fe/idl.ypp" /* yacc.c:1646 */
+ case 140:
+#line 1680 "fe/idl.ypp" /* yacc.c:1651 */
{
-// interface_forward : interface_decl
UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ((yyvsp[0].idval),
- 0);
+ UTL_ScopedName n ((yyvsp[0].idval), 0);
if (ACE_OS::strcmp ((yyvsp[0].idval)->get_string (),
"TypeCode") == 0
@@ -3959,13 +3998,12 @@ yyreduce:
delete (yyvsp[0].idval);
(yyvsp[0].idval) = 0;
}
-#line 3963 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4002 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 139:
-#line 1760 "fe/idl.ypp" /* yacc.c:1646 */
+ case 141:
+#line 1724 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_LOCAL interface_decl
UTL_Scope *s = idl_global->scopes ().top_non_null ();
UTL_ScopedName n ((yyvsp[0].idval),
0);
@@ -3990,13 +4028,12 @@ yyreduce:
delete (yyvsp[0].idval);
(yyvsp[0].idval) = 0;
}
-#line 3994 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4032 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 140:
-#line 1788 "fe/idl.ypp" /* yacc.c:1646 */
+ case 142:
+#line 1751 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_ABSTRACT interface_decl
UTL_Scope *s = idl_global->scopes ().top_non_null ();
UTL_ScopedName n ((yyvsp[0].idval),
0);
@@ -4021,51 +4058,47 @@ yyreduce:
delete (yyvsp[0].idval);
(yyvsp[0].idval) = 0;
}
-#line 4025 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4062 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 141:
-#line 1818 "fe/idl.ypp" /* yacc.c:1646 */
+ case 143:
+#line 1780 "fe/idl.ypp" /* yacc.c:1651 */
{
-// const_dcl : IDL_CONST
idl_global->set_parse_state (IDL_GlobalData::PS_ConstSeen);
}
-#line 4034 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4070 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 142:
-#line 1823 "fe/idl.ypp" /* yacc.c:1646 */
+ case 144:
+#line 1784 "fe/idl.ypp" /* yacc.c:1651 */
{
-// const_type
idl_global->set_parse_state (IDL_GlobalData::PS_ConstTypeSeen);
}
-#line 4043 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4078 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 143:
-#line 1828 "fe/idl.ypp" /* yacc.c:1646 */
+ case 145:
+#line 1788 "fe/idl.ypp" /* yacc.c:1651 */
{
-// defining_id
idl_global->set_parse_state (IDL_GlobalData::PS_ConstIDSeen);
}
-#line 4052 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4086 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 144:
-#line 1833 "fe/idl.ypp" /* yacc.c:1646 */
+ case 146:
+#line 1792 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '='
idl_global->set_parse_state (IDL_GlobalData::PS_ConstAssignSeen);
}
-#line 4061 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4094 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 145:
-#line 1838 "fe/idl.ypp" /* yacc.c:1646 */
+ case 147:
+#line 1796 "fe/idl.ypp" /* yacc.c:1651 */
{
-// expression
- UTL_ScopedName n ((yyvsp[-4].idval),
- 0);
+ (yyval.dcval) = 0;
+ UTL_ScopedName n ((yyvsp[-4].idval), 0);
+
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Constant *c = 0;
idl_global->set_parse_state (IDL_GlobalData::PS_ConstExprSeen);
@@ -4076,28 +4109,24 @@ yyreduce:
*/
if ((yyvsp[0].exval) != 0 && s != 0)
{
- AST_Param_Holder *param_holder =
- (yyvsp[0].exval)->param_holder ();
+ AST_Param_Holder *param_holder = (yyvsp[0].exval)->param_holder ();
AST_Expression::AST_ExprValue *result =
- (yyvsp[0].exval)->check_and_coerce ((yyvsp[-6].etval),
- tao_enum_constant_decl);
+ (yyvsp[0].exval)->check_and_coerce ((yyvsp[-6].etval), tao_enum_constant_decl);
tao_enum_constant_decl = 0;
// If the expression is a template parameter place
// holder, 'result' will be 0, but it's ok.
if (result == 0 && param_holder == 0)
{
- idl_global->err ()->coercion_error ((yyvsp[0].exval),
- (yyvsp[-6].etval));
+ idl_global->err ()->coercion_error ((yyvsp[0].exval), (yyvsp[-6].etval));
(yyvsp[0].exval)->destroy ();
delete (yyvsp[0].exval);
(yyvsp[0].exval) = 0;
}
else
{
- AST_Expression::ExprType et =
- (yyvsp[-6].etval);
+ AST_Expression::ExprType et = (yyvsp[-6].etval);
if (param_holder != 0
&& et != param_holder->info ()->const_type_)
@@ -4107,56 +4136,42 @@ yyreduce:
}
else
{
- c =
- idl_global->gen ()->create_constant (
- (yyvsp[-6].etval),
- (yyvsp[0].exval),
- &n);
-
+ c = idl_global->gen ()->create_constant ((yyvsp[-6].etval), (yyvsp[0].exval), &n);
(void) s->fe_add_constant (c);
+ (yyval.dcval) = c;
}
}
- (yyvsp[-4].idval)->destroy ();
- delete (yyvsp[-4].idval);
- (yyvsp[-4].idval) = 0;
-
delete result;
result = 0;
}
+
+ (yyvsp[-4].idval)->destroy ();
+ delete (yyvsp[-4].idval);
+ (yyvsp[-4].idval) = 0;
}
-#line 4129 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4154 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 152:
-#line 1911 "fe/idl.ypp" /* yacc.c:1646 */
+ case 154:
+#line 1861 "fe/idl.ypp" /* yacc.c:1651 */
{
-// const_type
-// : integer_type
-// | char_type
-// | octet_type
-// | boolean_type
-// | floating_pt_type
-// | fixed_type
-// | string_type_spec
(yyval.etval) = AST_Expression::EV_string;
}
-#line 4145 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4162 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 153:
-#line 1923 "fe/idl.ypp" /* yacc.c:1646 */
+ case 155:
+#line 1865 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | wstring_type_spec
(yyval.etval) = AST_Expression::EV_wstring;
}
-#line 4154 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4170 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 154:
-#line 1928 "fe/idl.ypp" /* yacc.c:1646 */
+ case 156:
+#line 1869 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | scoped_name
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_PredefinedType *c = 0;
AST_Typedef *t = 0;
@@ -4221,14 +4236,12 @@ yyreduce:
sn = 0;
(yyvsp[0].idlist) = 0;
}
-#line 4225 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4240 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 158:
-#line 2002 "fe/idl.ypp" /* yacc.c:1646 */
+ case 160:
+#line 1942 "fe/idl.ypp" /* yacc.c:1651 */
{
-// or_expr : xor_expr
-// | or_expr '|' xor_expr
(yyval.exval) =
idl_global->gen ()->create_expr (
AST_Expression::EC_or,
@@ -4236,14 +4249,12 @@ yyreduce:
(yyvsp[0].exval)
);
}
-#line 4240 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4253 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 160:
-#line 2017 "fe/idl.ypp" /* yacc.c:1646 */
+ case 162:
+#line 1955 "fe/idl.ypp" /* yacc.c:1651 */
{
-// xor_expr : and_expr
-// | xor_expr '^' and_expr
(yyval.exval) =
idl_global->gen ()->create_expr (
AST_Expression::EC_xor,
@@ -4251,13 +4262,12 @@ yyreduce:
(yyvsp[0].exval)
);
}
-#line 4255 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4266 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 162:
-#line 2032 "fe/idl.ypp" /* yacc.c:1646 */
+ case 164:
+#line 1968 "fe/idl.ypp" /* yacc.c:1651 */
{
-// and_expr : shift_expr | and_expr '&' shift_expr
(yyval.exval) =
idl_global->gen ()->create_expr (
AST_Expression::EC_and,
@@ -4265,13 +4275,12 @@ yyreduce:
(yyvsp[0].exval)
);
}
-#line 4269 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4279 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 164:
-#line 2046 "fe/idl.ypp" /* yacc.c:1646 */
+ case 166:
+#line 1981 "fe/idl.ypp" /* yacc.c:1651 */
{
-// shift_expr : add_expr | shift_expr IDL_LEFT_SHIFT add_expr
(yyval.exval) =
idl_global->gen ()->create_expr (
AST_Expression::EC_left,
@@ -4279,13 +4288,12 @@ yyreduce:
(yyvsp[0].exval)
);
}
-#line 4283 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4292 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 165:
-#line 2056 "fe/idl.ypp" /* yacc.c:1646 */
+ case 167:
+#line 1990 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | shift_expr IDL_RIGHT_SHIFT add_expr
(yyval.exval) =
idl_global->gen ()->create_expr (
AST_Expression::EC_right,
@@ -4293,13 +4301,12 @@ yyreduce:
(yyvsp[0].exval)
);
}
-#line 4297 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4305 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 167:
-#line 2070 "fe/idl.ypp" /* yacc.c:1646 */
+ case 169:
+#line 2003 "fe/idl.ypp" /* yacc.c:1651 */
{
-// add_expr : mult_expr | add_expr '+' mult_expr
(yyval.exval) =
idl_global->gen ()->create_expr (
AST_Expression::EC_add,
@@ -4307,13 +4314,12 @@ yyreduce:
(yyvsp[0].exval)
);
}
-#line 4311 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4318 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 168:
-#line 2080 "fe/idl.ypp" /* yacc.c:1646 */
+ case 170:
+#line 2012 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | add_expr '-' mult_expr
(yyval.exval) =
idl_global->gen ()->create_expr (
AST_Expression::EC_minus,
@@ -4321,13 +4327,12 @@ yyreduce:
(yyvsp[0].exval)
);
}
-#line 4325 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4331 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 170:
-#line 2094 "fe/idl.ypp" /* yacc.c:1646 */
+ case 172:
+#line 2025 "fe/idl.ypp" /* yacc.c:1651 */
{
-// mult_expr : unary_expr | mult_expr '*' unary_expr
(yyval.exval) =
idl_global->gen ()->create_expr (
AST_Expression::EC_mul,
@@ -4335,13 +4340,12 @@ yyreduce:
(yyvsp[0].exval)
);
}
-#line 4339 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4344 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 171:
-#line 2104 "fe/idl.ypp" /* yacc.c:1646 */
+ case 173:
+#line 2034 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | mult_expr '/' unary_expr
(yyval.exval) =
idl_global->gen ()->create_expr (
AST_Expression::EC_div,
@@ -4349,13 +4353,12 @@ yyreduce:
(yyvsp[0].exval)
);
}
-#line 4353 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4357 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 172:
-#line 2114 "fe/idl.ypp" /* yacc.c:1646 */
+ case 174:
+#line 2043 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | mult_expr '%' unary_expr
(yyval.exval) =
idl_global->gen ()->create_expr (
AST_Expression::EC_mod,
@@ -4363,13 +4366,12 @@ yyreduce:
(yyvsp[0].exval)
);
}
-#line 4367 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4370 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 174:
-#line 2128 "fe/idl.ypp" /* yacc.c:1646 */
+ case 176:
+#line 2056 "fe/idl.ypp" /* yacc.c:1651 */
{
-// unary_expr : primary_expr | '+' primary_expr
(yyval.exval) =
idl_global->gen ()->create_expr (
AST_Expression::EC_u_plus,
@@ -4377,13 +4379,12 @@ yyreduce:
0
);
}
-#line 4381 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4383 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 175:
-#line 2138 "fe/idl.ypp" /* yacc.c:1646 */
+ case 177:
+#line 2065 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | '-' primary_expr
(yyval.exval) =
idl_global->gen()->create_expr (
AST_Expression::EC_u_minus,
@@ -4391,13 +4392,12 @@ yyreduce:
0
);
}
-#line 4395 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4396 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 176:
-#line 2148 "fe/idl.ypp" /* yacc.c:1646 */
+ case 178:
+#line 2074 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | '~' primary_expr
(yyval.exval) =
idl_global->gen()->create_expr (
AST_Expression::EC_bit_neg,
@@ -4405,26 +4405,29 @@ yyreduce:
0
);
}
-#line 4409 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4409 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 177:
-#line 2161 "fe/idl.ypp" /* yacc.c:1646 */
+ case 179:
+#line 2086 "fe/idl.ypp" /* yacc.c:1651 */
{
-// primary_expr : scoped_name
/*
* An expression which is a scoped name is not resolved now,
* but only when it is evaluated (such as when it is assigned
* as a constant value).
*/
+ AST_Expression *expr = 0;
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Decl *d =
s->lookup_by_name ((yyvsp[0].idlist));
if (d == 0)
{
- idl_global->err ()->lookup_error ((yyvsp[0].idlist));
- return 1;
+ if (!idl_global->ignore_lookup_errors_)
+ {
+ idl_global->err ()->lookup_error ((yyvsp[0].idlist));
+ return 1;
+ }
}
else if (d->node_type () == AST_Decl::NT_const)
{
@@ -4440,8 +4443,7 @@ yyreduce:
AST_Constant *c =
AST_Constant::narrow_from_decl (d);
- (yyval.exval) =
- idl_global->gen ()->create_expr (
+ expr = idl_global->gen ()->create_expr (
c->constant_value (),
c->et ());
}
@@ -4451,126 +4453,119 @@ yyreduce:
// passed in this constructor, so we copy it
// and destroy it below no matter which case
// is followed.
- (yyval.exval) =
- idl_global->gen ()->create_expr (
+ expr = idl_global->gen ()->create_expr (
(yyvsp[0].idlist)->copy ());
+ if (d->node_type () == AST_Decl::NT_enum_val)
+ {
+ AST_EnumVal *enumval = AST_EnumVal::narrow_from_decl (d);
+ expr->enum_parent (enumval->enum_parent ());
+ }
}
+ (yyval.exval) = expr;
(yyvsp[0].idlist)->destroy ();
delete (yyvsp[0].idlist);
(yyvsp[0].idlist) = 0;
}
-#line 4464 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4471 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 179:
-#line 2213 "fe/idl.ypp" /* yacc.c:1646 */
+ case 181:
+#line 2145 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | literal
-// | '(' const_expr ')'
(yyval.exval) = (yyvsp[-1].exval);
}
-#line 4474 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4479 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 180:
-#line 2222 "fe/idl.ypp" /* yacc.c:1646 */
+ case 182:
+#line 2152 "fe/idl.ypp" /* yacc.c:1651 */
{
-// literal : IDL_INTEGER_LITERAL
(yyval.exval) = idl_global->gen ()->create_expr ((yyvsp[0].ival));
}
-#line 4483 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4487 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 181:
-#line 2227 "fe/idl.ypp" /* yacc.c:1646 */
+ case 183:
+#line 2156 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_UINTEGER_LITERAL
(yyval.exval) =
idl_global->gen ()->create_expr ((yyvsp[0].uival));
}
-#line 4493 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4496 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 182:
-#line 2233 "fe/idl.ypp" /* yacc.c:1646 */
+ case 184:
+#line 2161 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_STRING_LITERAL
(yyval.exval) = idl_global->gen ()->create_expr ((yyvsp[0].sval));
(yyvsp[0].sval)->destroy ();
delete (yyvsp[0].sval);
(yyvsp[0].sval) = 0;
}
-#line 4505 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4507 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 183:
-#line 2241 "fe/idl.ypp" /* yacc.c:1646 */
+ case 185:
+#line 2168 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_WSTRING_LITERAL
(yyval.exval) = idl_global->gen ()->create_expr ((yyvsp[0].wsval));
}
-#line 4514 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4515 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 184:
-#line 2246 "fe/idl.ypp" /* yacc.c:1646 */
+ case 186:
+#line 2172 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_CHARACTER_LITERAL
(yyval.exval) = idl_global->gen ()->create_expr ((yyvsp[0].cval));
}
-#line 4523 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4523 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 185:
-#line 2251 "fe/idl.ypp" /* yacc.c:1646 */
+ case 187:
+#line 2176 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_WCHAR_LITERAL
ACE_OutputCDR::from_wchar wc ((yyvsp[0].wcval));
(yyval.exval) = idl_global->gen ()->create_expr (wc);
}
-#line 4533 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4532 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 186:
-#line 2257 "fe/idl.ypp" /* yacc.c:1646 */
+ case 188:
+#line 2181 "fe/idl.ypp" /* yacc.c:1651 */
{
(yyval.exval) = idl_global->gen ()->create_expr ((yyvsp[0].fixval));
}
-#line 4541 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4540 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 187:
-#line 2261 "fe/idl.ypp" /* yacc.c:1646 */
+ case 189:
+#line 2185 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_FLOATING_PT_LITERAL
(yyval.exval) = idl_global->gen ()->create_expr ((yyvsp[0].dval));
}
-#line 4550 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4548 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 188:
-#line 2266 "fe/idl.ypp" /* yacc.c:1646 */
+ case 190:
+#line 2189 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_TRUETOK
(yyval.exval) = idl_global->gen ()->create_expr (true);
}
-#line 4559 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4556 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 189:
-#line 2271 "fe/idl.ypp" /* yacc.c:1646 */
+ case 191:
+#line 2193 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_FALSETOK
(yyval.exval) = idl_global->gen ()->create_expr (false);
}
-#line 4568 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4564 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 190:
-#line 2279 "fe/idl.ypp" /* yacc.c:1646 */
+ case 192:
+#line 2200 "fe/idl.ypp" /* yacc.c:1651 */
{
-// positive_int_expr : const_expr
int good_expression = 1;
(yyvsp[0].exval)->evaluate (AST_Expression::EK_positive_int);
AST_Expression::AST_ExprValue *ev = (yyvsp[0].exval)->ev ();
@@ -4634,59 +4629,352 @@ yyreduce:
idl_global->err ()->syntax_error (idl_global->parse_state ());
}
}
-#line 4638 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4633 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 201:
-#line 2381 "fe/idl.ypp" /* yacc.c:1646 */
+ case 193:
+#line 2268 "fe/idl.ypp" /* yacc.c:1651 */
{
-// type_dcl : IDL_TYPEDEF
- idl_global->set_parse_state (IDL_GlobalData::PS_TypedefSeen);
- idl_global->in_typedef (true);
+ if (idl_global->idl_version_ < IDL_VERSION_4)
+ {
+ idl_global->err ()->idl_version_error (
+ "Annotations are an IDL4 feature");
+ }
+
+ Identifier *id = (yyvsp[-1].idval);
+ UTL_ScopedName name (id, 0);
+ AST_Annotation_Decl::escape_name (&name);
+ AST_Annotation_Decl *annotation_decl = idl_global->gen ()->
+ create_annotation_decl (&name);
+ idl_global->scopes ().top_non_null ()->
+ fe_add_annotation_decl (annotation_decl);
+ idl_global->scopes ().push (annotation_decl);
}
-#line 4648 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4654 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 202:
-#line 2387 "fe/idl.ypp" /* yacc.c:1646 */
+ case 194:
+#line 2285 "fe/idl.ypp" /* yacc.c:1651 */
{
-// type_declarator
- (yyval.dcval) = 0;
+ Identifier *id = (yyvsp[-4].idval);
+ idl_global->scopes ().pop ();
+ id->destroy ();
+ delete id;
}
-#line 4657 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4665 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 203:
-#line 2392 "fe/idl.ypp" /* yacc.c:1646 */
+ case 200:
+#line 2303 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | struct_type
- (yyval.dcval) = 0;
+ idl_global->set_parse_state (IDL_GlobalData::PS_TypedefSeen);
+ idl_global->in_typedef (true);
}
-#line 4666 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4674 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 204:
-#line 2397 "fe/idl.ypp" /* yacc.c:1646 */
+#line 2317 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | union_type
- (yyval.dcval) = 0;
+ UTL_Scope *scope = idl_global->scopes ().top_non_null ();
+ UTL_Scope *root = idl_global->scopes ().bottom ();
+
+ AST_Expression::ExprType type = (yyvsp[-3].etval);
+ Identifier *name = (yyvsp[-2].idval);
+ UTL_ScopedName scoped_name (name, 0);
+ AST_Expression *default_value = (yyvsp[-1].exval);
+
+ AST_Decl * type_obj;
+ switch (type)
+ {
+ case AST_Expression::EV_string:
+ case AST_Expression::EV_wstring:
+ type_obj = tao_string_decl;
+ break;
+ case AST_Expression::EV_enum:
+ type_obj = tao_enum_constant_decl;
+ break;
+ default:
+ type_obj = root->lookup_primitive_type (type);
+ }
+
+ FE_Declarator *declarator = new FE_Declarator (
+ &scoped_name, FE_Declarator::FD_simple, 0);
+ AST_Annotation_Member *member = idl_global->gen ()->
+ create_annotation_member (
+ type, declarator->compose (type_obj), declarator->name ());
+ scope->fe_add_annotation_member (member);
+
+ if (default_value)
+ {
+ // Check if types are compatible, else report error
+ AST_Expression::AST_ExprValue *result =
+ default_value->check_and_coerce (type, tao_enum_constant_decl);
+ tao_enum_constant_decl = 0;
+ if (result)
+ {
+ member->value (default_value);
+ }
+ else
+ {
+ idl_global->err ()->coercion_error (default_value, type);
+ }
+ delete result;
+ }
}
-#line 4675 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4726 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 205:
-#line 2402 "fe/idl.ypp" /* yacc.c:1646 */
+#line 2368 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | enum_type
- (yyval.dcval) = 0;
+ (yyval.exval) = (yyvsp[0].exval);
}
-#line 4684 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 4734 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
case 206:
-#line 2407 "fe/idl.ypp" /* yacc.c:1646 */
+#line 2372 "fe/idl.ypp" /* yacc.c:1651 */
+ {
+ (yyval.exval) = 0;
+ }
+#line 4742 "fe/idl.tab.cpp" /* yacc.c:1651 */
+ break;
+
+ case 207:
+#line 2379 "fe/idl.ypp" /* yacc.c:1651 */
+ {
+ AST_Annotation_Appls *annotations = (yyvsp[-1].annotations_val);
+ AST_Annotation_Appl *annotation = (yyvsp[0].annotation_val);
+ if (annotation)
+ {
+ annotations->push_back (annotation);
+ }
+ (yyval.annotations_val) = annotations;
+ }
+#line 4756 "fe/idl.tab.cpp" /* yacc.c:1651 */
+ break;
+
+ case 208:
+#line 2392 "fe/idl.ypp" /* yacc.c:1651 */
+ {
+ AST_Annotation_Appls *annotations = (yyvsp[-1].annotations_val);
+ AST_Annotation_Appl *annotation = (yyvsp[0].annotation_val);
+ if (annotation)
+ {
+ annotations->push_back (annotation);
+ }
+ (yyval.annotations_val) = annotations;
+ }
+#line 4770 "fe/idl.tab.cpp" /* yacc.c:1651 */
+ break;
+
+ case 209:
+#line 2402 "fe/idl.ypp" /* yacc.c:1651 */
+ {
+ (yyval.annotations_val) = new AST_Annotation_Appls ();
+ }
+#line 4778 "fe/idl.tab.cpp" /* yacc.c:1651 */
+ break;
+
+ case 210:
+#line 2409 "fe/idl.ypp" /* yacc.c:1651 */
+ {
+ if (idl_global->idl_version_ < IDL_VERSION_4)
+ {
+ idl_global->err ()->idl_version_error (
+ "Annotations are an IDL4 feature");
+ }
+
+ AST_Annotation_Decl *decl = 0;
+ UTL_ScopedName *name = (yyvsp[0].idlist);
+ AST_Annotation_Decl::escape_name (name);
+
+ // Check for Matching Annotation Declaration
+ AST_Decl *d = idl_global->scopes ().top_non_null ()->
+ lookup_by_name (name);
+ if (d)
+ {
+ decl = AST_Annotation_Decl::narrow_from_decl (d);
+ if (decl)
+ {
+ idl_global->scopes ().push (decl);
+ }
+ }
+ else
+ {
+ Identifier &id = *name->last_component ();
+ switch (idl_global->unknown_annotations_)
+ {
+ default:
+ case IDL_GlobalData::UNKNOWN_ANNOTATIONS_WARN_ONCE:
+ if (idl_global->unknown_annotations_seen_.insert (id) == 1)
+ {
+ break;
+ }
+ idl_global->err ()->lookup_warning (name);
+ break;
+ case IDL_GlobalData::UNKNOWN_ANNOTATIONS_WARN_ALL:
+ idl_global->err ()->lookup_warning (name);
+ break;
+ case IDL_GlobalData::UNKNOWN_ANNOTATIONS_ERROR:
+ idl_global->err ()->lookup_error (name);
+ break;
+ case IDL_GlobalData::UNKNOWN_ANNOTATIONS_IGNORE:
+ break;
+ }
+
+ // Ignore lookup errors for parameter values that might depend
+ // on constants or enums from the annotation declaration.
+ idl_global->ignore_lookup_errors_ = true;
+ }
+
+ (yyval.annotation_decl_val) = decl;
+ }
+#line 4835 "fe/idl.tab.cpp" /* yacc.c:1651 */
+ break;
+
+ case 211:
+#line 2462 "fe/idl.ypp" /* yacc.c:1651 */
+ {
+ idl_global->ignore_lookup_errors_ = false;
+ AST_Annotation_Appl *appl = 0;
+ UTL_ScopedName *name = (yyvsp[-2].idlist);
+ AST_Annotation_Decl *decl = (yyvsp[-1].annotation_decl_val);
+ AST_Annotation_Appl::Params *params = (yyvsp[0].annotation_params_val);
+
+ if (decl)
+ {
+ appl = idl_global->gen ()->create_annotation_appl (name, params);
+ appl->apply_from (decl);
+ idl_global->scopes ().pop ();
+ }
+
+ (yyval.annotation_val) = appl;
+ }
+#line 4856 "fe/idl.tab.cpp" /* yacc.c:1651 */
+ break;
+
+ case 212:
+#line 2482 "fe/idl.ypp" /* yacc.c:1651 */
+ {
+ (yyval.annotation_params_val) = (yyvsp[-1].annotation_params_val);
+ }
+#line 4864 "fe/idl.tab.cpp" /* yacc.c:1651 */
+ break;
+
+ case 213:
+#line 2486 "fe/idl.ypp" /* yacc.c:1651 */
+ {
+ (yyval.annotation_params_val) = 0;
+ }
+#line 4872 "fe/idl.tab.cpp" /* yacc.c:1651 */
+ break;
+
+ case 214:
+#line 2493 "fe/idl.ypp" /* yacc.c:1651 */
+ {
+ AST_Annotation_Appl::Params *params = new AST_Annotation_Appl::Params;
+ AST_Annotation_Appl::Param *param = new AST_Annotation_Appl::Param;
+ param->id = 0;
+ param->expr = (yyvsp[0].exval);
+ params->push (param);
+ (yyval.annotation_params_val) = params;
+ }
+#line 4885 "fe/idl.tab.cpp" /* yacc.c:1651 */
+ break;
+
+ case 215:
+#line 2502 "fe/idl.ypp" /* yacc.c:1651 */
+ {
+ (yyval.annotation_params_val) = (yyvsp[0].annotation_params_val);
+ }
+#line 4893 "fe/idl.tab.cpp" /* yacc.c:1651 */
+ break;
+
+ case 216:
+#line 2509 "fe/idl.ypp" /* yacc.c:1651 */
+ {
+ AST_Annotation_Appl::Params *params = (yyvsp[0].annotation_params_val);
+ params->push ((yyvsp[-1].annotation_param_val));
+ (yyval.annotation_params_val) = params;
+ }
+#line 4903 "fe/idl.tab.cpp" /* yacc.c:1651 */
+ break;
+
+ case 217:
+#line 2517 "fe/idl.ypp" /* yacc.c:1651 */
+ {
+ AST_Annotation_Appl::Params *params = (yyvsp[0].annotation_params_val);
+ params->push ((yyvsp[-1].annotation_param_val));
+ (yyval.annotation_params_val) = params;
+ }
+#line 4913 "fe/idl.tab.cpp" /* yacc.c:1651 */
+ break;
+
+ case 218:
+#line 2523 "fe/idl.ypp" /* yacc.c:1651 */
+ {
+ (yyval.annotation_params_val) = new AST_Annotation_Appl::Params;
+ }
+#line 4921 "fe/idl.tab.cpp" /* yacc.c:1651 */
+ break;
+
+ case 219:
+#line 2530 "fe/idl.ypp" /* yacc.c:1651 */
+ {
+ AST_Annotation_Appl::Param *param = new AST_Annotation_Appl::Param;
+ param->id = (yyvsp[-2].idval);
+ param->expr = (yyvsp[0].exval);
+ (yyval.annotation_param_val) = param;
+ }
+#line 4932 "fe/idl.tab.cpp" /* yacc.c:1651 */
+ break;
+
+ case 220:
+#line 2540 "fe/idl.ypp" /* yacc.c:1651 */
+ {
+ idl_global->set_parse_state (IDL_GlobalData::PS_TypedefSeen);
+ idl_global->in_typedef (true);
+ }
+#line 4941 "fe/idl.tab.cpp" /* yacc.c:1651 */
+ break;
+
+ case 221:
+#line 2545 "fe/idl.ypp" /* yacc.c:1651 */
+ {
+ (yyval.dcval) = (yyvsp[0].dcval);
+ }
+#line 4949 "fe/idl.tab.cpp" /* yacc.c:1651 */
+ break;
+
+ case 222:
+#line 2549 "fe/idl.ypp" /* yacc.c:1651 */
+ {
+ (yyval.dcval) = (yyvsp[0].dcval);
+ }
+#line 4957 "fe/idl.tab.cpp" /* yacc.c:1651 */
+ break;
+
+ case 223:
+#line 2553 "fe/idl.ypp" /* yacc.c:1651 */
+ {
+ (yyval.dcval) = (yyvsp[0].dcval);
+ }
+#line 4965 "fe/idl.tab.cpp" /* yacc.c:1651 */
+ break;
+
+ case 224:
+#line 2557 "fe/idl.ypp" /* yacc.c:1651 */
+ {
+ (yyval.dcval) = (yyvsp[0].dcval);
+ }
+#line 4973 "fe/idl.tab.cpp" /* yacc.c:1651 */
+ break;
+
+ case 225:
+#line 2561 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_NATIVE simple_declarator
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Native *node = 0;
idl_global->set_parse_state (IDL_GlobalData::PS_NativeSeen);
@@ -4711,31 +4999,28 @@ yyreduce:
delete (yyvsp[0].deval);
(yyvsp[0].deval) = 0;
}
-#line 4715 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5003 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 207:
-#line 2434 "fe/idl.ypp" /* yacc.c:1646 */
+ case 226:
+#line 2587 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | constructed_forward_type_spec
(yyval.dcval) = 0;
}
-#line 4724 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5011 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 208:
-#line 2442 "fe/idl.ypp" /* yacc.c:1646 */
+ case 227:
+#line 2594 "fe/idl.ypp" /* yacc.c:1651 */
{
-// type_declarator : type_spec
idl_global->set_parse_state (IDL_GlobalData::PS_TypeSpecSeen);
}
-#line 4733 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5019 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 209:
-#line 2447 "fe/idl.ypp" /* yacc.c:1646 */
+ case 228:
+#line 2598 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_declarator
UTL_Scope *s = idl_global->scopes ().top_non_null ();
FE_Declarator *d = 0;
AST_Typedef *t = 0;
@@ -4796,27 +5081,26 @@ yyreduce:
delete (yyvsp[0].dlval);
(yyvsp[0].dlval) = 0;
}
+
+ (yyval.dcval) = t;
}
-#line 4801 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5088 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 212:
-#line 2519 "fe/idl.ypp" /* yacc.c:1646 */
+ case 231:
+#line 2671 "fe/idl.ypp" /* yacc.c:1651 */
{
-// simple_type_spec : base_type_spec
(yyval.dcval) =
idl_global->scopes ().bottom ()->lookup_primitive_type (
(yyvsp[0].etval)
);
}
-#line 4813 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5099 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 214:
-#line 2528 "fe/idl.ypp" /* yacc.c:1646 */
+ case 233:
+#line 2679 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | template_type_spec
-// | scoped_name
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Decl *d = 0;
@@ -4838,34 +5122,31 @@ yyreduce:
(yyval.dcval) = d;
}
-#line 4842 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5126 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 232:
-#line 2585 "fe/idl.ypp" /* yacc.c:1646 */
+ case 251:
+#line 2734 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_declarator : declarator declarators
ACE_NEW_RETURN ((yyval.dlval),
UTL_DeclList ((yyvsp[-1].deval),
(yyvsp[0].dlval)),
1);
}
-#line 4854 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5137 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 233:
-#line 2597 "fe/idl.ypp" /* yacc.c:1646 */
+ case 252:
+#line 2745 "fe/idl.ypp" /* yacc.c:1651 */
{
-// declarators : declarators ','
idl_global->set_parse_state (IDL_GlobalData::PS_DeclsCommaSeen);
}
-#line 4863 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5145 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 234:
-#line 2602 "fe/idl.ypp" /* yacc.c:1646 */
+ case 253:
+#line 2749 "fe/idl.ypp" /* yacc.c:1651 */
{
-// declarator
idl_global->set_parse_state (IDL_GlobalData::PS_DeclsDeclSeen);
UTL_DeclList *dl = 0;
@@ -4884,43 +5165,39 @@ yyreduce:
(yyval.dlval) = (yyvsp[-3].dlval);
}
}
-#line 4888 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5169 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 235:
-#line 2623 "fe/idl.ypp" /* yacc.c:1646 */
+ case 254:
+#line 2769 "fe/idl.ypp" /* yacc.c:1651 */
{
-/* | EMPTY */
(yyval.dlval) = 0;
}
-#line 4897 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5177 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 238:
-#line 2636 "fe/idl.ypp" /* yacc.c:1646 */
+ case 257:
+#line 2781 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_simple_declarator : simple_declarator simple_declarators
ACE_NEW_RETURN ((yyval.dlval),
UTL_DeclList ((yyvsp[-1].deval),
(yyvsp[0].dlval)),
1);
}
-#line 4909 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5188 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 239:
-#line 2648 "fe/idl.ypp" /* yacc.c:1646 */
+ case 258:
+#line 2792 "fe/idl.ypp" /* yacc.c:1651 */
{
-// simple_declarators : simple_declarators ','
idl_global->set_parse_state (IDL_GlobalData::PS_DeclsCommaSeen);
}
-#line 4918 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5196 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 240:
-#line 2653 "fe/idl.ypp" /* yacc.c:1646 */
+ case 259:
+#line 2796 "fe/idl.ypp" /* yacc.c:1651 */
{
-// simple_declarator
idl_global->set_parse_state (IDL_GlobalData::PS_DeclsDeclSeen);
UTL_DeclList *dl = 0;
@@ -4939,22 +5216,20 @@ yyreduce:
(yyval.dlval) = (yyvsp[-3].dlval);
}
}
-#line 4943 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5220 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 241:
-#line 2674 "fe/idl.ypp" /* yacc.c:1646 */
+ case 260:
+#line 2816 "fe/idl.ypp" /* yacc.c:1651 */
{
-/* | EMPTY */
(yyval.dlval) = 0;
}
-#line 4952 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5228 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 242:
-#line 2682 "fe/idl.ypp" /* yacc.c:1646 */
+ case 261:
+#line 2823 "fe/idl.ypp" /* yacc.c:1651 */
{
-// simple_declarator : defining_id
UTL_ScopedName *sn = 0;
ACE_NEW_RETURN (sn,
UTL_ScopedName ((yyvsp[0].idval),
@@ -4966,13 +5241,12 @@ yyreduce:
0),
1);
}
-#line 4970 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5245 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 243:
-#line 2699 "fe/idl.ypp" /* yacc.c:1646 */
+ case 262:
+#line 2839 "fe/idl.ypp" /* yacc.c:1651 */
{
-// complex_declarator : array_declarator
UTL_ScopedName *sn = 0;
ACE_NEW_RETURN (sn,
UTL_ScopedName (
@@ -4986,179 +5260,159 @@ yyreduce:
(yyvsp[0].dcval)),
1);
}
-#line 4990 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5264 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 246:
-#line 2723 "fe/idl.ypp" /* yacc.c:1646 */
+ case 265:
+#line 2862 "fe/idl.ypp" /* yacc.c:1651 */
{
-// signed_int : IDL_LONG
(yyval.etval) = AST_Expression::EV_long;
}
-#line 4999 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5272 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 247:
-#line 2728 "fe/idl.ypp" /* yacc.c:1646 */
+ case 266:
+#line 2866 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_LONG IDL_LONG
(yyval.etval) = AST_Expression::EV_longlong;
}
-#line 5008 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5280 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 248:
-#line 2733 "fe/idl.ypp" /* yacc.c:1646 */
+ case 267:
+#line 2870 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_SHORT
(yyval.etval) = AST_Expression::EV_short;
}
-#line 5017 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5288 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 249:
-#line 2741 "fe/idl.ypp" /* yacc.c:1646 */
+ case 268:
+#line 2877 "fe/idl.ypp" /* yacc.c:1651 */
{
-// unsigned_int : IDL_UNSIGNED IDL_LONG
(yyval.etval) = AST_Expression::EV_ulong;
}
-#line 5026 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5296 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 250:
-#line 2746 "fe/idl.ypp" /* yacc.c:1646 */
+ case 269:
+#line 2881 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_UNSIGNED IDL_LONG IDL_LONG
(yyval.etval) = AST_Expression::EV_ulonglong;
}
-#line 5035 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5304 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 251:
-#line 2751 "fe/idl.ypp" /* yacc.c:1646 */
+ case 270:
+#line 2885 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_UNSIGNED IDL_SHORT
(yyval.etval) = AST_Expression::EV_ushort;
}
-#line 5044 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5312 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 252:
-#line 2759 "fe/idl.ypp" /* yacc.c:1646 */
+ case 271:
+#line 2892 "fe/idl.ypp" /* yacc.c:1651 */
{
-// floating_pt_type : IDL_DOUBLE
(yyval.etval) = AST_Expression::EV_double;
}
-#line 5053 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5320 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 253:
-#line 2764 "fe/idl.ypp" /* yacc.c:1646 */
+ case 272:
+#line 2896 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_FLOAT
(yyval.etval) = AST_Expression::EV_float;
}
-#line 5062 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5328 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 254:
-#line 2769 "fe/idl.ypp" /* yacc.c:1646 */
+ case 273:
+#line 2900 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_LONG IDL_DOUBLE
(yyval.etval) = AST_Expression::EV_longdouble;
}
-#line 5071 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5336 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 255:
-#line 2777 "fe/idl.ypp" /* yacc.c:1646 */
+ case 274:
+#line 2907 "fe/idl.ypp" /* yacc.c:1651 */
{
-// fixed_type : IDL_FIXED
(yyval.etval) = AST_Expression::EV_fixed;
}
-#line 5080 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5344 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 256:
-#line 2785 "fe/idl.ypp" /* yacc.c:1646 */
+ case 275:
+#line 2914 "fe/idl.ypp" /* yacc.c:1651 */
{
-// char_type : IDL_CHAR
(yyval.etval) = AST_Expression::EV_char;
}
-#line 5089 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5352 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 257:
-#line 2790 "fe/idl.ypp" /* yacc.c:1646 */
+ case 276:
+#line 2918 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_WCHAR
(yyval.etval) = AST_Expression::EV_wchar;
}
-#line 5098 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5360 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 258:
-#line 2798 "fe/idl.ypp" /* yacc.c:1646 */
+ case 277:
+#line 2925 "fe/idl.ypp" /* yacc.c:1651 */
{
-// octet_type : IDL_OCTET
(yyval.etval) = AST_Expression::EV_octet;
}
-#line 5107 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5368 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 259:
-#line 2806 "fe/idl.ypp" /* yacc.c:1646 */
+ case 278:
+#line 2932 "fe/idl.ypp" /* yacc.c:1651 */
{
-// boolean_type : IDL_BOOLEAN
(yyval.etval) = AST_Expression::EV_bool;
}
-#line 5116 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5376 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 260:
-#line 2814 "fe/idl.ypp" /* yacc.c:1646 */
+ case 279:
+#line 2939 "fe/idl.ypp" /* yacc.c:1651 */
{
-// any_type : IDL_ANY
(yyval.etval) = AST_Expression::EV_any;
}
-#line 5125 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5384 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 261:
-#line 2822 "fe/idl.ypp" /* yacc.c:1646 */
+ case 280:
+#line 2946 "fe/idl.ypp" /* yacc.c:1651 */
{
-// object_type : IDL_OBJECT
(yyval.etval) = AST_Expression::EV_object;
}
-#line 5134 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5392 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 262:
-#line 2830 "fe/idl.ypp" /* yacc.c:1646 */
+ case 281:
+#line 2953 "fe/idl.ypp" /* yacc.c:1651 */
{
-// struct_decl : IDL_STRUCT
idl_global->set_parse_state (IDL_GlobalData::PS_StructSeen);
}
-#line 5143 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5400 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 263:
-#line 2835 "fe/idl.ypp" /* yacc.c:1646 */
+ case 282:
+#line 2957 "fe/idl.ypp" /* yacc.c:1651 */
{
-// defining_id
idl_global->set_parse_state (IDL_GlobalData::PS_StructIDSeen);
(yyval.idval) = (yyvsp[0].idval);
}
-#line 5153 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5409 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 264:
-#line 2845 "fe/idl.ypp" /* yacc.c:1646 */
+ case 283:
+#line 2966 "fe/idl.ypp" /* yacc.c:1651 */
{
-// struct_type : struct_header
UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ((yyvsp[0].idval),
- 0);
+ UTL_ScopedName n ((yyvsp[0].idval), 0);
AST_Structure *d = 0;
/*
@@ -5173,8 +5427,7 @@ yyreduce:
s->is_local (),
s->is_abstract ()
);
- AST_Structure::fwd_redefinition_helper (d,
- s);
+ AST_Structure::fwd_redefinition_helper (d, s);
(void) s->fe_add_structure (d);
}
@@ -5187,31 +5440,28 @@ yyreduce:
delete (yyvsp[0].idval);
(yyvsp[0].idval) = 0;
}
-#line 5191 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5444 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 265:
-#line 2879 "fe/idl.ypp" /* yacc.c:1646 */
+ case 284:
+#line 2997 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '{'
idl_global->set_parse_state (IDL_GlobalData::PS_StructSqSeen);
}
-#line 5200 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5452 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 266:
-#line 2884 "fe/idl.ypp" /* yacc.c:1646 */
+ case 285:
+#line 3001 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_member
idl_global->set_parse_state (IDL_GlobalData::PS_StructBodySeen);
}
-#line 5209 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5460 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 267:
-#line 2889 "fe/idl.ypp" /* yacc.c:1646 */
+ case 286:
+#line 3005 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_StructQsSeen);
/*
@@ -5222,45 +5472,48 @@ yyreduce:
);
idl_global->scopes ().pop ();
}
-#line 5226 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5476 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 271:
-#line 2911 "fe/idl.ypp" /* yacc.c:1646 */
+ case 290:
+#line 3027 "fe/idl.ypp" /* yacc.c:1651 */
{
-// member :
- /* is $0 to member_i */
- (yyval.vival) = AST_Field::vis_NA;
+ if ((yyvsp[-1].annotations_val))
+ {
+ AST_Decls &decls = *(yyvsp[0].decls_val);
+ for (size_t i = 0; i < decls.size (); i++)
+ {
+ decls[i]->annotation_appls ((yyvsp[-1].annotations_val));
+ }
+ }
}
-#line 5236 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5491 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 273:
-#line 2922 "fe/idl.ypp" /* yacc.c:1646 */
+ case 291:
+#line 3041 "fe/idl.ypp" /* yacc.c:1651 */
{
-// member_i : type_spec
idl_global->set_parse_state (IDL_GlobalData::PS_MemberTypeSeen);
}
-#line 5245 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5499 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 274:
-#line 2927 "fe/idl.ypp" /* yacc.c:1646 */
+ case 292:
+#line 3045 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_declarator
idl_global->set_parse_state (IDL_GlobalData::PS_MemberDeclsSeen);
}
-#line 5254 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5507 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 275:
-#line 2932 "fe/idl.ypp" /* yacc.c:1646 */
+ case 293:
+#line 3049 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
UTL_Scope *s = idl_global->scopes ().top_non_null ();
FE_Declarator *d = 0;
AST_Field *f = 0;
idl_global->set_parse_state (IDL_GlobalData::PS_MemberDeclsCompleted);
+ AST_Decls *members = 0;
/*
* Check for illegal recursive use of type.
@@ -5275,10 +5528,9 @@ yyreduce:
* Create a node representing a struct or exception member
* Add it to the enclosing scope.
*/
- else if (s != 0
- && (yyvsp[-4].dcval) != 0
- && (yyvsp[-2].dlval) != 0)
+ else if (s && (yyvsp[-4].dcval) && (yyvsp[-2].dlval))
{
+ members = new AST_Decls;
for (UTL_DecllistActiveIterator l ((yyvsp[-2].dlval));
!l.is_done ();
l.next ())
@@ -5297,13 +5549,8 @@ yyreduce:
continue;
}
- /* $0 denotes Visibility, must be on yacc reduction stack. */
- f =
- idl_global->gen ()->create_field (
- tp,
- d->name (),
- (yyvsp[-6].vival)
- );
+ f = idl_global->gen ()->create_field (tp, d->name ());
+ members->push_back (f);
(void) s->fe_add_field (f);
}
}
@@ -5311,64 +5558,59 @@ yyreduce:
(yyvsp[-2].dlval)->destroy ();
delete (yyvsp[-2].dlval);
(yyvsp[-2].dlval) = 0;
+
+ (yyval.decls_val) = members;
}
-#line 5316 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5565 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 276:
-#line 2990 "fe/idl.ypp" /* yacc.c:1646 */
+ case 294:
+#line 3103 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | error
idl_global->err()->syntax_error (idl_global->parse_state ());
}
-#line 5325 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5573 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 277:
-#line 2995 "fe/idl.ypp" /* yacc.c:1646 */
+ case 295:
+#line 3107 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
yyerrok;
}
-#line 5335 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5582 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 278:
-#line 3004 "fe/idl.ypp" /* yacc.c:1646 */
+ case 296:
+#line 3115 "fe/idl.ypp" /* yacc.c:1651 */
{
-// union_decl : IDL_UNION
idl_global->set_parse_state (IDL_GlobalData::PS_UnionSeen);
}
-#line 5344 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5590 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 279:
-#line 3009 "fe/idl.ypp" /* yacc.c:1646 */
+ case 297:
+#line 3119 "fe/idl.ypp" /* yacc.c:1651 */
{
-// defining_id
idl_global->set_parse_state (IDL_GlobalData::PS_UnionIDSeen);
(yyval.idval) = (yyvsp[0].idval);
}
-#line 5354 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5599 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 280:
-#line 3018 "fe/idl.ypp" /* yacc.c:1646 */
+ case 298:
+#line 3127 "fe/idl.ypp" /* yacc.c:1651 */
{
-// union_type : union_decl IDL_SWITCH
idl_global->set_parse_state (IDL_GlobalData::PS_SwitchSeen);
}
-#line 5363 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5607 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 281:
-#line 3023 "fe/idl.ypp" /* yacc.c:1646 */
+ case 299:
+#line 3131 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '('
UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ((yyvsp[-3].idval),
- 0);
+ UTL_ScopedName n ((yyvsp[-3].idval), 0);
AST_Union *u = 0;
idl_global->set_parse_state (IDL_GlobalData::PS_SwitchOpenParSeen);
@@ -5384,8 +5626,7 @@ yyreduce:
s->is_abstract ());
AST_Structure *st = AST_Structure::narrow_from_decl (u);
- AST_Structure::fwd_redefinition_helper (st,
- s);
+ AST_Structure::fwd_redefinition_helper (st, s);
u = AST_Union::narrow_from_decl (st);
(void) s->fe_add_union (u);
}
@@ -5399,22 +5640,20 @@ yyreduce:
* Don't delete $1 yet; we'll need it a bit later.
*/
}
-#line 5403 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5644 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 282:
-#line 3059 "fe/idl.ypp" /* yacc.c:1646 */
+ case 300:
+#line 3164 "fe/idl.ypp" /* yacc.c:1651 */
{
-// switch_type_spec
idl_global->set_parse_state (IDL_GlobalData::PS_SwitchTypeSeen);
}
-#line 5412 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5652 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 283:
-#line 3064 "fe/idl.ypp" /* yacc.c:1646 */
+ case 301:
+#line 3168 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ')'
/*
* The top of the scopes must be an empty union we added after we
* encountered 'union <id> switch ('. Now we are ready to add a
@@ -5425,15 +5664,13 @@ yyreduce:
idl_global->scopes ().pop ();
UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ((yyvsp[-7].idval),
- 0);
+ UTL_ScopedName n ((yyvsp[-8].idval), 0);
idl_global->set_parse_state (IDL_GlobalData::PS_SwitchCloseParSeen);
/*
* Create a node representing a union.
*/
- if ((yyvsp[-2].dcval) != 0
- && s != 0)
+ if ((yyvsp[-2].dcval) != 0 && s != 0)
{
AST_ConcreteType *tp =
AST_ConcreteType::narrow_from_decl ((yyvsp[-2].dcval));
@@ -5450,10 +5687,12 @@ yyreduce:
&n,
s->is_local (),
s->is_abstract ());
+
/* Narrow the enclosing scope. */
AST_Union *e = AST_Union::narrow_from_scope (top);
e->redefine (u);
+ e->disc_annotations ((yyvsp[-3].annotations_val)); // Set Discriminator Annotations
u->destroy ();
delete u;
@@ -5465,35 +5704,32 @@ yyreduce:
*/
idl_global->scopes ().push (top);
- (yyvsp[-7].idval)->destroy ();
- delete (yyvsp[-7].idval);
- (yyvsp[-7].idval) = 0;
+ (yyvsp[-8].idval)->destroy ();
+ delete (yyvsp[-8].idval);
+ (yyvsp[-8].idval) = 0;
}
-#line 5473 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5712 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 284:
-#line 3121 "fe/idl.ypp" /* yacc.c:1646 */
+ case 302:
+#line 3224 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '{'
idl_global->set_parse_state (IDL_GlobalData::PS_UnionSqSeen);
}
-#line 5482 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5720 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 285:
-#line 3126 "fe/idl.ypp" /* yacc.c:1646 */
+ case 303:
+#line 3228 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_case_branch
idl_global->set_parse_state (IDL_GlobalData::PS_UnionBodySeen);
}
-#line 5491 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5728 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 286:
-#line 3131 "fe/idl.ypp" /* yacc.c:1646 */
+ case 304:
+#line 3232 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_UnionQsSeen);
/*
@@ -5508,25 +5744,23 @@ yyreduce:
idl_global->scopes ().pop ();
}
}
-#line 5512 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5748 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 287:
-#line 3151 "fe/idl.ypp" /* yacc.c:1646 */
+ case 305:
+#line 3251 "fe/idl.ypp" /* yacc.c:1651 */
{
-// switch_type_spec : integer_type
(yyval.dcval) =
idl_global->scopes ().bottom ()->lookup_primitive_type (
(yyvsp[0].etval)
);
}
-#line 5524 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5759 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 288:
-#line 3159 "fe/idl.ypp" /* yacc.c:1646 */
+ case 306:
+#line 3258 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | char_type
/* wchars are not allowed. */
if ((yyvsp[0].etval) == AST_Expression::EV_wchar)
{
@@ -5538,13 +5772,12 @@ yyreduce:
(yyvsp[0].etval)
);
}
-#line 5542 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5776 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 289:
-#line 3173 "fe/idl.ypp" /* yacc.c:1646 */
+ case 307:
+#line 3271 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | octet_type
/* octets are not allowed. */
idl_global->err ()->error0 (UTL_Error::EIDL_DISC_TYPE);
(yyval.dcval) =
@@ -5552,26 +5785,23 @@ yyreduce:
(yyvsp[0].etval)
);
}
-#line 5556 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5789 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 290:
-#line 3183 "fe/idl.ypp" /* yacc.c:1646 */
+ case 308:
+#line 3280 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | boolean_type
(yyval.dcval) =
idl_global->scopes ().bottom ()->lookup_primitive_type (
(yyvsp[0].etval)
);
}
-#line 5568 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5800 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 292:
-#line 3192 "fe/idl.ypp" /* yacc.c:1646 */
+ case 310:
+#line 3288 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | enum_type
-// | scoped_name
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Decl *d = 0;
AST_PredefinedType *p = 0;
@@ -5667,38 +5897,38 @@ yyreduce:
(yyvsp[0].idlist) = 0;
/* If we don't return here, we'll crash later.*/
- return 1;
+ if (!idl_global->ignore_lookup_errors_)
+ {
+ return 1;
+ }
}
(yyvsp[0].idlist)->destroy ();
delete (yyvsp[0].idlist);
(yyvsp[0].idlist) = 0;
}
-#line 5678 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5911 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 296:
-#line 3308 "fe/idl.ypp" /* yacc.c:1646 */
+ case 314:
+#line 3405 "fe/idl.ypp" /* yacc.c:1651 */
{
-// case_branch : at_least_one_case_label
idl_global->set_parse_state (IDL_GlobalData::PS_UnionLabelSeen);
}
-#line 5687 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5919 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 297:
-#line 3313 "fe/idl.ypp" /* yacc.c:1646 */
+ case 315:
+#line 3409 "fe/idl.ypp" /* yacc.c:1651 */
{
-// annotations element_spec
idl_global->set_parse_state (IDL_GlobalData::PS_UnionElemSeen);
}
-#line 5696 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5927 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 298:
-#line 3318 "fe/idl.ypp" /* yacc.c:1646 */
+ case 316:
+#line 3413 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_UnionBranch *b = 0;
AST_Field *f = (yyvsp[-2].ffval);
@@ -5708,9 +5938,7 @@ yyreduce:
* Create several nodes representing branches of a union.
* Add them to the enclosing scope (the union scope)
*/
- if (s != 0
- && (yyvsp[-5].llval) != 0
- && (yyvsp[-2].ffval) != 0)
+ if (s != 0 && (yyvsp[-5].llval) != 0 && (yyvsp[-2].ffval) != 0)
{
b =
idl_global->gen ()->create_union_branch (
@@ -5718,6 +5946,7 @@ yyreduce:
f->field_type (),
f->name ()
);
+ b->annotation_appls ((yyvsp[-3].annotations_val));
(void) s->fe_add_union_branch (b);
// f has passed its field type to the union branch,
@@ -5727,85 +5956,78 @@ yyreduce:
f = 0;
}
}
-#line 5731 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5960 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 299:
-#line 3349 "fe/idl.ypp" /* yacc.c:1646 */
+ case 317:
+#line 3442 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | error
idl_global->err()->syntax_error (idl_global->parse_state());
}
-#line 5740 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5968 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 300:
-#line 3354 "fe/idl.ypp" /* yacc.c:1646 */
+ case 318:
+#line 3446 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
yyerrok;
}
-#line 5750 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5977 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 301:
-#line 3363 "fe/idl.ypp" /* yacc.c:1646 */
+ case 319:
+#line 3454 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_case_label : case_label case_labels
ACE_NEW_RETURN ((yyval.llval),
UTL_LabelList ((yyvsp[-1].ulval),
(yyvsp[0].llval)),
1);
}
-#line 5762 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 5988 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 302:
-#line 3374 "fe/idl.ypp" /* yacc.c:1646 */
+ case 320:
+#line 3464 "fe/idl.ypp" /* yacc.c:1651 */
{
-// case_labels : case_labels annotations case_label
UTL_LabelList *ll = 0;
ACE_NEW_RETURN (ll,
UTL_LabelList ((yyvsp[0].ulval),
0),
1);
- if ((yyvsp[-2].llval) == 0)
+ if ((yyvsp[-1].llval) == 0)
{
(yyval.llval) = ll;
}
else
{
- (yyvsp[-2].llval)->nconc (ll);
- (yyval.llval) = (yyvsp[-2].llval);
+ (yyvsp[-1].llval)->nconc (ll);
+ (yyval.llval) = (yyvsp[-1].llval);
}
}
-#line 5785 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6010 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 303:
-#line 3393 "fe/idl.ypp" /* yacc.c:1646 */
+ case 321:
+#line 3482 "fe/idl.ypp" /* yacc.c:1651 */
{
-/* | EMPTY */
(yyval.llval) = 0;
}
-#line 5794 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6018 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 304:
-#line 3401 "fe/idl.ypp" /* yacc.c:1646 */
+ case 322:
+#line 3489 "fe/idl.ypp" /* yacc.c:1651 */
{
-// case_label : IDL_DEFAULT
idl_global->set_parse_state (IDL_GlobalData::PS_DefaultSeen);
}
-#line 5803 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6026 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 305:
-#line 3406 "fe/idl.ypp" /* yacc.c:1646 */
+ case 323:
+#line 3493 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ':'
idl_global->set_parse_state (IDL_GlobalData::PS_LabelColonSeen);
(yyval.ulval) = idl_global->gen ()->create_union_label (
@@ -5813,30 +6035,28 @@ yyreduce:
0
);
}
-#line 5817 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6039 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 306:
-#line 3416 "fe/idl.ypp" /* yacc.c:1646 */
+ case 324:
+#line 3502 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_CASE
idl_global->set_parse_state (IDL_GlobalData::PS_CaseSeen);
}
-#line 5826 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6047 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 307:
-#line 3421 "fe/idl.ypp" /* yacc.c:1646 */
+ case 325:
+#line 3506 "fe/idl.ypp" /* yacc.c:1651 */
{
idl_global->set_parse_state (IDL_GlobalData::PS_LabelExprSeen);
}
-#line 5834 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6055 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 308:
-#line 3425 "fe/idl.ypp" /* yacc.c:1646 */
+ case 326:
+#line 3510 "fe/idl.ypp" /* yacc.c:1651 */
{
-// const_expr
idl_global->set_parse_state (IDL_GlobalData::PS_LabelColonSeen);
(yyval.ulval) = idl_global->gen()->create_union_label (
@@ -5844,22 +6064,20 @@ yyreduce:
(yyvsp[-2].exval)
);
}
-#line 5848 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6068 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 309:
-#line 3438 "fe/idl.ypp" /* yacc.c:1646 */
+ case 327:
+#line 3522 "fe/idl.ypp" /* yacc.c:1651 */
{
-// element_spec : type_spec
idl_global->set_parse_state (IDL_GlobalData::PS_UnionElemTypeSeen);
}
-#line 5857 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6076 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 310:
-#line 3443 "fe/idl.ypp" /* yacc.c:1646 */
+ case 328:
+#line 3526 "fe/idl.ypp" /* yacc.c:1651 */
{
-// declarator
idl_global->set_parse_state (IDL_GlobalData::PS_UnionElemDeclSeen);
/*
@@ -5902,13 +6120,12 @@ yyreduce:
(yyvsp[0].deval) = 0;
}
}
-#line 5906 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6124 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 311:
-#line 3491 "fe/idl.ypp" /* yacc.c:1646 */
+ case 329:
+#line 3573 "fe/idl.ypp" /* yacc.c:1651 */
{
-// struct_forward_type : struct_decl
UTL_Scope *s = idl_global->scopes ().top_non_null ();
UTL_ScopedName n ((yyvsp[0].idval),
0);
@@ -5926,14 +6143,15 @@ yyreduce:
(yyvsp[0].idval)->destroy ();
delete (yyvsp[0].idval);
(yyvsp[0].idval) = 0;
+
+ (yyval.dcval) = d;
}
-#line 5931 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6150 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 312:
-#line 3515 "fe/idl.ypp" /* yacc.c:1646 */
+ case 330:
+#line 3598 "fe/idl.ypp" /* yacc.c:1651 */
{
-// union_forward_type : union_decl
UTL_Scope *s = idl_global->scopes ().top_non_null ();
UTL_ScopedName n ((yyvsp[0].idval),
0);
@@ -5952,25 +6170,22 @@ yyreduce:
delete (yyvsp[0].idval);
(yyvsp[0].idval) = 0;
}
-#line 5956 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6174 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 313:
-#line 3539 "fe/idl.ypp" /* yacc.c:1646 */
+ case 331:
+#line 3621 "fe/idl.ypp" /* yacc.c:1651 */
{
-// enum_type : IDL_ENUM
idl_global->set_parse_state (IDL_GlobalData::PS_EnumSeen);
}
-#line 5965 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6182 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 314:
-#line 3544 "fe/idl.ypp" /* yacc.c:1646 */
+ case 332:
+#line 3625 "fe/idl.ypp" /* yacc.c:1651 */
{
-// defining_id
UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ((yyvsp[0].idval),
- 0);
+ UTL_ScopedName n ((yyvsp[0].idval), 0);
AST_Enum *e = 0;
idl_global->set_parse_state (IDL_GlobalData::PS_EnumIDSeen);
@@ -5998,31 +6213,28 @@ yyreduce:
delete (yyvsp[0].idval);
(yyvsp[0].idval) = 0;
}
-#line 6002 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6217 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 315:
-#line 3577 "fe/idl.ypp" /* yacc.c:1646 */
+ case 333:
+#line 3656 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '{'
idl_global->set_parse_state (IDL_GlobalData::PS_EnumSqSeen);
}
-#line 6011 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6225 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 316:
-#line 3582 "fe/idl.ypp" /* yacc.c:1646 */
+ case 334:
+#line 3660 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_enumerator
idl_global->set_parse_state (IDL_GlobalData::PS_EnumBodySeen);
}
-#line 6020 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6233 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 317:
-#line 3587 "fe/idl.ypp" /* yacc.c:1646 */
+ case 335:
+#line 3664 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_EnumQsSeen);
/*
@@ -6040,28 +6252,25 @@ yyreduce:
idl_global->scopes ().pop ();
}
}
-#line 6044 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6256 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 319:
-#line 3613 "fe/idl.ypp" /* yacc.c:1646 */
+ case 337:
+#line 3689 "fe/idl.ypp" /* yacc.c:1651 */
{
-// enumerators : enumerators ','
idl_global->set_parse_state (IDL_GlobalData::PS_EnumCommaSeen);
}
-#line 6053 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6264 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 322:
-#line 3623 "fe/idl.ypp" /* yacc.c:1646 */
+ case 340:
+#line 3698 "fe/idl.ypp" /* yacc.c:1651 */
{
-// enumerator : annotations IDENTIFIER
UTL_Scope *s = idl_global->scopes ().top_non_null ();
Identifier id ((yyvsp[0].strval));
ACE::strdelete ((yyvsp[0].strval));
(yyvsp[0].strval) = 0;
- UTL_ScopedName n (&id,
- 0);
+ UTL_ScopedName n (&id, 0);
AST_EnumVal *e = 0;
AST_Enum *c = 0;
@@ -6080,38 +6289,48 @@ yyreduce:
c->next_enum_val (),
&n
);
+ e->enum_parent (c);
+ e->annotation_appls ((yyvsp[-1].annotations_val));
}
(void) s->fe_add_enum_val (e);
}
}
-#line 6089 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6300 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 323:
-#line 3659 "fe/idl.ypp" /* yacc.c:1646 */
+ case 341:
+#line 3734 "fe/idl.ypp" /* yacc.c:1651 */
{
-// sequence_type_spec : seq_head ','
idl_global->set_parse_state (IDL_GlobalData::PS_SequenceCommaSeen);
}
-#line 6098 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6308 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 324:
-#line 3664 "fe/idl.ypp" /* yacc.c:1646 */
+ case 342:
+#line 3738 "fe/idl.ypp" /* yacc.c:1651 */
{
-// positive_int_expr
idl_global->set_parse_state (IDL_GlobalData::PS_SequenceExprSeen);
}
-#line 6107 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6316 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 325:
-#line 3669 "fe/idl.ypp" /* yacc.c:1646 */
+ case 343:
+#line 3742 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '>'
idl_global->set_parse_state (IDL_GlobalData::PS_SequenceQsSeen);
+ AST_Sequence *seq = 0;
+ Decl_Annotations_Pair *seq_head = (yyvsp[-5].decl_annotations_pair_val);
+ AST_Decl *type = 0;
+ AST_Annotation_Appls *type_annotations = 0;
+ if (seq_head)
+ {
+ type = seq_head->decl;
+ type_annotations = seq_head->annotations;
+ }
+ delete seq_head;
+
/*
* Remove sequence marker from scopes stack.
*/
@@ -6144,15 +6363,10 @@ yyreduce:
{
idl_global->err ()->coercion_error ((yyvsp[-2].exval),
AST_Expression::EV_ulong);
- (yyval.dcval) = 0;
}
- else if (0 == (yyvsp[-5].dcval))
+ else if (type)
{
- (yyval.dcval) = 0;
- }
- else
- {
- AST_Type *tp = AST_Type::narrow_from_decl ((yyvsp[-5].dcval));
+ AST_Type *tp = AST_Type::narrow_from_decl (type);
if (0 == tp)
{
@@ -6164,7 +6378,7 @@ yyreduce:
UTL_ScopedName sn (&id,
0);
- (yyval.dcval) =
+ seq =
idl_global->gen ()->create_sequence (
(yyvsp[-2].exval),
tp,
@@ -6172,6 +6386,7 @@ yyreduce:
s->is_local (),
s->is_abstract ()
);
+ seq->base_type_annotations (type_annotations);
if (!idl_global->in_typedef ()
&& !idl_global->anon_silent ())
@@ -6183,16 +6398,27 @@ yyreduce:
delete ev;
ev = 0;
+ (yyval.dcval) = seq;
}
-#line 6188 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6404 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 326:
-#line 3747 "fe/idl.ypp" /* yacc.c:1646 */
+ case 344:
+#line 3827 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | seq_head '>'
idl_global->set_parse_state (IDL_GlobalData::PS_SequenceQsSeen);
+ AST_Sequence *seq = 0;
+ Decl_Annotations_Pair *seq_head = (yyvsp[-1].decl_annotations_pair_val);
+ AST_Decl *type = 0;
+ AST_Annotation_Appls *type_annotations = 0;
+ if (seq_head)
+ {
+ type = seq_head->decl;
+ type_annotations = seq_head->annotations;
+ }
+ delete seq_head;
+
/*
* Remove sequence marker from scopes stack.
*/
@@ -6206,13 +6432,9 @@ yyreduce:
/*
* Create a node representing a sequence.
*/
- if ((yyvsp[-1].dcval) == 0)
- {
- (yyval.dcval) = 0;
- }
- else
+ if (type)
{
- AST_Type *tp = AST_Type::narrow_from_decl ((yyvsp[-1].dcval));
+ AST_Type *tp = AST_Type::narrow_from_decl (type);
if (tp == 0)
{
@@ -6224,7 +6446,7 @@ yyreduce:
UTL_ScopedName sn (&id, 0);
ACE_CDR::ULong bound = 0UL;
- (yyval.dcval) =
+ seq =
idl_global->gen ()->create_sequence (
idl_global->gen ()->create_expr (
bound,
@@ -6235,6 +6457,7 @@ yyreduce:
s->is_local (),
s->is_abstract ()
);
+ seq->base_type_annotations (type_annotations);
if (!idl_global->in_typedef ()
&& !idl_global->anon_silent ())
@@ -6243,14 +6466,15 @@ yyreduce:
}
}
}
+
+ (yyval.dcval) = seq;
}
-#line 6248 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6473 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 327:
-#line 3806 "fe/idl.ypp" /* yacc.c:1646 */
+ case 345:
+#line 3895 "fe/idl.ypp" /* yacc.c:1651 */
{
-// seq_head : IDL_SEQUENCE
idl_global->set_parse_state (IDL_GlobalData::PS_SequenceSeen);
/*
@@ -6258,59 +6482,57 @@ yyreduce:
*/
idl_global->scopes ().push (0);
}
-#line 6262 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6486 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 328:
-#line 3816 "fe/idl.ypp" /* yacc.c:1646 */
+ case 346:
+#line 3904 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '<'
idl_global->set_parse_state (IDL_GlobalData::PS_SequenceSqSeen);
}
-#line 6271 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6494 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 329:
-#line 3821 "fe/idl.ypp" /* yacc.c:1646 */
+ case 347:
+#line 3908 "fe/idl.ypp" /* yacc.c:1651 */
{
-// simple_type_spec
idl_global->set_parse_state (IDL_GlobalData::PS_SequenceTypeSeen);
- (yyval.dcval) = (yyvsp[0].dcval);
+ Decl_Annotations_Pair *seq_head = new Decl_Annotations_Pair;
+ seq_head->decl = (yyvsp[0].dcval);
+ seq_head->annotations = (yyvsp[-1].annotations_val);
+ (yyval.decl_annotations_pair_val) = seq_head;
}
-#line 6281 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6506 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 330:
-#line 3830 "fe/idl.ypp" /* yacc.c:1646 */
+ case 348:
+#line 3919 "fe/idl.ypp" /* yacc.c:1651 */
{
(yyvsp[-1].exval)->evaluate (AST_Expression::EK_positive_int);
(yyval.dcval) = idl_global->gen ()->create_fixed ((yyvsp[-3].exval), (yyvsp[-1].exval));
}
-#line 6290 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6515 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 331:
-#line 3839 "fe/idl.ypp" /* yacc.c:1646 */
+ case 349:
+#line 3928 "fe/idl.ypp" /* yacc.c:1651 */
{
-// string_type_spec : string_head '<'
idl_global->set_parse_state (IDL_GlobalData::PS_StringSqSeen);
}
-#line 6299 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6523 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 332:
-#line 3844 "fe/idl.ypp" /* yacc.c:1646 */
+ case 350:
+#line 3932 "fe/idl.ypp" /* yacc.c:1651 */
{
-// positive_int_expr
idl_global->set_parse_state (IDL_GlobalData::PS_StringExprSeen);
}
-#line 6308 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6531 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 333:
-#line 3849 "fe/idl.ypp" /* yacc.c:1646 */
+ case 351:
+#line 3936 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '>'
idl_global->set_parse_state (IDL_GlobalData::PS_StringQsSeen);
/*
@@ -6331,87 +6553,83 @@ yyreduce:
}
else
{
- (yyval.dcval) = idl_global->gen ()->create_string ((yyvsp[-2].exval));
+ tao_string_decl = idl_global->gen ()->create_string ((yyvsp[-2].exval));
+
/*
* Add this AST_String to the types defined in the global scope.
*/
- (void) idl_global->root ()->fe_add_string (
- AST_String::narrow_from_decl (
- (yyval.dcval)
- )
- );
+ idl_global->root ()->fe_add_string (
+ AST_String::narrow_from_decl (
+ tao_string_decl));
- if (!idl_global->in_typedef ()
- && !idl_global->anon_silent ())
+ if (!idl_global->in_typedef () && !idl_global->anon_silent ())
{
idl_global->err ()->anonymous_type_diagnostic ();
}
+
+ (yyval.dcval) = tao_string_decl;
}
delete ev;
ev = 0;
}
-#line 6355 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6577 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 334:
-#line 3892 "fe/idl.ypp" /* yacc.c:1646 */
+ case 352:
+#line 3978 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | string_head
idl_global->set_parse_state (IDL_GlobalData::PS_StringCompleted);
+
/*
* Create a node representing a string.
*/
ACE_CDR::ULong bound = 0UL;
-
- (yyval.dcval) =
+ tao_string_decl =
idl_global->gen ()->create_string (
idl_global->gen ()->create_expr (bound,
AST_Expression::EV_ulong)
);
+
/*
* Add this AST_String to the types defined in the global scope.
*/
- (void) idl_global->root ()->fe_add_string (
- AST_String::narrow_from_decl (
- (yyval.dcval)
- )
- );
+ idl_global->root ()->fe_add_string (
+ AST_String::narrow_from_decl (
+ tao_string_decl));
+
+ (yyval.dcval) = tao_string_decl;
}
-#line 6382 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6604 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 335:
-#line 3918 "fe/idl.ypp" /* yacc.c:1646 */
+ case 353:
+#line 4004 "fe/idl.ypp" /* yacc.c:1651 */
{
-// string_head : IDL_STRING
idl_global->set_parse_state (IDL_GlobalData::PS_StringSeen);
}
-#line 6391 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6612 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 336:
-#line 3927 "fe/idl.ypp" /* yacc.c:1646 */
+ case 354:
+#line 4012 "fe/idl.ypp" /* yacc.c:1651 */
{
-// wstring_type_spec : wstring_head '<'
idl_global->set_parse_state (IDL_GlobalData::PS_StringSqSeen);
}
-#line 6400 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6620 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 337:
-#line 3932 "fe/idl.ypp" /* yacc.c:1646 */
+ case 355:
+#line 4016 "fe/idl.ypp" /* yacc.c:1651 */
{
-// positive_int_expr
idl_global->set_parse_state (IDL_GlobalData::PS_StringExprSeen);
}
-#line 6409 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6628 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 338:
-#line 3937 "fe/idl.ypp" /* yacc.c:1646 */
+ case 356:
+#line 4020 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '>'
idl_global->set_parse_state (IDL_GlobalData::PS_StringQsSeen);
/*
@@ -6426,94 +6644,94 @@ yyreduce:
}
else
{
- (yyval.dcval) = idl_global->gen ()->create_wstring ((yyvsp[-2].exval));
+ AST_String *string = idl_global->gen ()->create_wstring ((yyvsp[-2].exval));
+
/*
* Add this AST_String to the types defined in the global scope.
*/
- (void) idl_global->root ()->fe_add_string (
- AST_String::narrow_from_decl ((yyval.dcval))
- );
+ idl_global->root ()->fe_add_string (
+ AST_String::narrow_from_decl (
+ string));
- if (!idl_global->in_typedef ()
- && !idl_global->anon_silent ())
+ if (!idl_global->in_typedef () && !idl_global->anon_silent ())
{
idl_global->err ()->anonymous_type_diagnostic ();
}
+
+ (yyval.dcval) = string;
}
}
-#line 6445 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6665 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 339:
-#line 3969 "fe/idl.ypp" /* yacc.c:1646 */
+ case 357:
+#line 4053 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | wstring_head
idl_global->set_parse_state (IDL_GlobalData::PS_StringCompleted);
/*
* Create a node representing a wstring.
*/
ACE_CDR::ULong bound = 0UL;
-
- (yyval.dcval) =
+ AST_String *string =
idl_global->gen ()->create_wstring (
idl_global->gen ()->create_expr (bound,
AST_Expression::EV_ulong)
);
+
/*
* Add this AST_String to the types defined in the global scope.
*/
- (void) idl_global->root ()->fe_add_string (
- AST_String::narrow_from_decl ((yyval.dcval))
- );
+ idl_global->root ()->fe_add_string (
+ AST_String::narrow_from_decl (
+ string));
+
+ (yyval.dcval) = string;
}
-#line 6471 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6692 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 340:
-#line 3994 "fe/idl.ypp" /* yacc.c:1646 */
+ case 358:
+#line 4079 "fe/idl.ypp" /* yacc.c:1651 */
{
-// wstring_head : IDL_WSTRING
idl_global->set_parse_state (IDL_GlobalData::PS_StringSeen);
}
-#line 6480 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6700 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 341:
-#line 4002 "fe/idl.ypp" /* yacc.c:1646 */
+ case 359:
+#line 4086 "fe/idl.ypp" /* yacc.c:1651 */
{
-// array_declarator : defining_id
idl_global->set_parse_state (IDL_GlobalData::PS_ArrayIDSeen);
}
-#line 6489 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6708 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 342:
-#line 4007 "fe/idl.ypp" /* yacc.c:1646 */
+ case 360:
+#line 4090 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_array_dim
idl_global->set_parse_state (IDL_GlobalData::PS_ArrayCompleted);
+ AST_Array *array = 0;
+ AST_Annotation_Appls *base_type_annotations = (yyvsp[-1].annotations_val);
+ UTL_ExprList *array_dims = (yyvsp[0].elval);
+
/*
* Create a node representing an array.
*/
- if ((yyvsp[0].elval) != 0)
+ if (array_dims)
{
- UTL_ScopedName sn ((yyvsp[-2].idval),
+ UTL_ScopedName sn ((yyvsp[-3].idval),
0);
- (yyval.dcval) =
+ array =
idl_global->gen ()->create_array (
&sn,
- (yyvsp[0].elval)->length (),
- (yyvsp[0].elval),
+ array_dims->length (),
+ array_dims,
0,
0
);
-
- (yyvsp[0].elval)->destroy ();
- delete (yyvsp[0].elval);
- (yyvsp[0].elval) = 0;
-
+ array->base_type_annotations (base_type_annotations);
sn.destroy ();
if (!idl_global->in_typedef ()
@@ -6522,26 +6740,29 @@ yyreduce:
idl_global->err ()->anonymous_type_diagnostic ();
}
}
+
+ array_dims->destroy ();
+ delete array_dims;
+
+ (yyval.dcval) = array;
}
-#line 6527 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6750 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 343:
-#line 4044 "fe/idl.ypp" /* yacc.c:1646 */
+ case 361:
+#line 4131 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_array_dim : array_dim array_dims
ACE_NEW_RETURN ((yyval.elval),
UTL_ExprList ((yyvsp[-1].exval),
(yyvsp[0].elval)),
1);
}
-#line 6539 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6761 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 344:
-#line 4055 "fe/idl.ypp" /* yacc.c:1646 */
+ case 362:
+#line 4141 "fe/idl.ypp" /* yacc.c:1651 */
{
-// array_dims : array_dims array_dim
UTL_ExprList *el = 0;
ACE_NEW_RETURN (el,
UTL_ExprList ((yyvsp[0].exval),
@@ -6558,40 +6779,36 @@ yyreduce:
(yyval.elval) = (yyvsp[-1].elval);
}
}
-#line 6562 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6783 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 345:
-#line 4074 "fe/idl.ypp" /* yacc.c:1646 */
+ case 363:
+#line 4159 "fe/idl.ypp" /* yacc.c:1651 */
{
-/* | EMPTY */
(yyval.elval) = 0;
}
-#line 6571 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6791 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 346:
-#line 4082 "fe/idl.ypp" /* yacc.c:1646 */
+ case 364:
+#line 4166 "fe/idl.ypp" /* yacc.c:1651 */
{
-// array_dim : '['
idl_global->set_parse_state (IDL_GlobalData::PS_DimSqSeen);
}
-#line 6580 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6799 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 347:
-#line 4087 "fe/idl.ypp" /* yacc.c:1646 */
+ case 365:
+#line 4170 "fe/idl.ypp" /* yacc.c:1651 */
{
-// positive_int_expr
idl_global->set_parse_state (IDL_GlobalData::PS_DimExprSeen);
}
-#line 6589 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6807 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 348:
-#line 4092 "fe/idl.ypp" /* yacc.c:1646 */
+ case 366:
+#line 4174 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ']'
idl_global->set_parse_state (IDL_GlobalData::PS_DimQsSeen);
/*
@@ -6644,49 +6861,44 @@ yyreduce:
delete ev;
ev = 0;
}
-#line 6648 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6865 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 351:
-#line 4155 "fe/idl.ypp" /* yacc.c:1646 */
+ case 369:
+#line 4236 "fe/idl.ypp" /* yacc.c:1651 */
{
-// attribute_readonly : IDL_READONLY
idl_global->set_parse_state (IDL_GlobalData::PS_AttrROSeen);
}
-#line 6657 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6873 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 352:
-#line 4160 "fe/idl.ypp" /* yacc.c:1646 */
+ case 370:
+#line 4240 "fe/idl.ypp" /* yacc.c:1651 */
{
-// IDL_ATTRIBUTE
idl_global->set_parse_state (IDL_GlobalData::PS_AttrSeen);
}
-#line 6666 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6881 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 353:
-#line 4165 "fe/idl.ypp" /* yacc.c:1646 */
+ case 371:
+#line 4244 "fe/idl.ypp" /* yacc.c:1651 */
{
-// param_type_spec
idl_global->set_parse_state (IDL_GlobalData::PS_AttrTypeSeen);
}
-#line 6675 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6889 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 354:
-#line 4170 "fe/idl.ypp" /* yacc.c:1646 */
+ case 372:
+#line 4248 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_simple_declarator
idl_global->set_parse_state (IDL_GlobalData::PS_AttrDeclsSeen);
}
-#line 6684 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6897 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 355:
-#line 4175 "fe/idl.ypp" /* yacc.c:1646 */
+ case 373:
+#line 4252 "fe/idl.ypp" /* yacc.c:1651 */
{
-// opt_raises
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Attribute *a = 0;
FE_Declarator *d = 0;
@@ -6745,49 +6957,44 @@ yyreduce:
delete (yyvsp[-2].dlval);
(yyvsp[-2].dlval) = 0;
}
-#line 6749 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6961 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 356:
-#line 4239 "fe/idl.ypp" /* yacc.c:1646 */
+ case 374:
+#line 4315 "fe/idl.ypp" /* yacc.c:1651 */
{
-// attribute_readwrite : IDL_ATTRIBUTE
idl_global->set_parse_state (IDL_GlobalData::PS_AttrSeen);
}
-#line 6758 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6969 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 357:
-#line 4244 "fe/idl.ypp" /* yacc.c:1646 */
+ case 375:
+#line 4319 "fe/idl.ypp" /* yacc.c:1651 */
{
-// param_type_spec
idl_global->set_parse_state (IDL_GlobalData::PS_AttrTypeSeen);
}
-#line 6767 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6977 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 358:
-#line 4249 "fe/idl.ypp" /* yacc.c:1646 */
+ case 376:
+#line 4323 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_simple_declarator
idl_global->set_parse_state (IDL_GlobalData::PS_AttrDeclsSeen);
}
-#line 6776 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6985 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 359:
-#line 4254 "fe/idl.ypp" /* yacc.c:1646 */
+ case 377:
+#line 4327 "fe/idl.ypp" /* yacc.c:1651 */
{
-// opt_getraises
idl_global->set_parse_state (IDL_GlobalData::PS_OpGetRaiseCompleted);
}
-#line 6785 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 6993 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 360:
-#line 4259 "fe/idl.ypp" /* yacc.c:1646 */
+ case 378:
+#line 4331 "fe/idl.ypp" /* yacc.c:1651 */
{
-// opt_setraises
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Attribute *a = 0;
FE_Declarator *d = 0;
@@ -6855,22 +7062,20 @@ yyreduce:
delete (yyvsp[-4].dlval);
(yyvsp[-4].dlval) = 0;
}
-#line 6859 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7066 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 361:
-#line 4332 "fe/idl.ypp" /* yacc.c:1646 */
+ case 379:
+#line 4403 "fe/idl.ypp" /* yacc.c:1651 */
{
-// exception : IDL_EXCEPTION
idl_global->set_parse_state (IDL_GlobalData::PS_ExceptSeen);
}
-#line 6868 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7074 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 362:
-#line 4337 "fe/idl.ypp" /* yacc.c:1646 */
+ case 380:
+#line 4407 "fe/idl.ypp" /* yacc.c:1651 */
{
-// defining_id
UTL_Scope *s = idl_global->scopes ().top_non_null ();
UTL_ScopedName n ((yyvsp[0].idval),
0);
@@ -6898,53 +7103,48 @@ yyreduce:
delete (yyvsp[0].idval);
(yyvsp[0].idval) = 0;
}
-#line 6902 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7107 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 363:
-#line 4367 "fe/idl.ypp" /* yacc.c:1646 */
+ case 381:
+#line 4436 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '{'
idl_global->set_parse_state (IDL_GlobalData::PS_ExceptSqSeen);
}
-#line 6911 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7115 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 364:
-#line 4372 "fe/idl.ypp" /* yacc.c:1646 */
+ case 382:
+#line 4440 "fe/idl.ypp" /* yacc.c:1651 */
{
-// members
idl_global->set_parse_state (IDL_GlobalData::PS_ExceptBodySeen);
}
-#line 6920 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7123 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 365:
-#line 4377 "fe/idl.ypp" /* yacc.c:1646 */
+ case 383:
+#line 4444 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_ExceptQsSeen);
/*
* Done with this exception. Pop its scope from the scope stack.
*/
idl_global->scopes ().pop ();
}
-#line 6933 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7135 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 366:
-#line 4390 "fe/idl.ypp" /* yacc.c:1646 */
+ case 384:
+#line 4456 "fe/idl.ypp" /* yacc.c:1651 */
{
-// operation : opt_op_attribute op_type_spec
idl_global->set_parse_state (IDL_GlobalData::PS_OpTypeSeen);
}
-#line 6942 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7143 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 367:
-#line 4395 "fe/idl.ypp" /* yacc.c:1646 */
+ case 385:
+#line 4460 "fe/idl.ypp" /* yacc.c:1651 */
{
-// annotations IDENTIFIER
UTL_Scope *s = idl_global->scopes ().top_non_null ();
Identifier id ((yyvsp[0].strval));
ACE::strdelete ((yyvsp[0].strval));
@@ -7007,31 +7207,28 @@ yyreduce:
*/
idl_global->scopes ().push (o);
}
-#line 7011 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7211 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 368:
-#line 4460 "fe/idl.ypp" /* yacc.c:1646 */
+ case 386:
+#line 4524 "fe/idl.ypp" /* yacc.c:1651 */
{
-// parameter_list
idl_global->set_parse_state (IDL_GlobalData::PS_OpParsCompleted);
}
-#line 7020 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7219 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 369:
-#line 4465 "fe/idl.ypp" /* yacc.c:1646 */
+ case 387:
+#line 4528 "fe/idl.ypp" /* yacc.c:1651 */
{
-// opt_raises
idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseCompleted);
}
-#line 7029 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7227 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 370:
-#line 4470 "fe/idl.ypp" /* yacc.c:1646 */
+ case 388:
+#line 4532 "fe/idl.ypp" /* yacc.c:1651 */
{
-// opt_context
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Operation *o = 0;
idl_global->set_parse_state (IDL_GlobalData::PS_OpCompleted);
@@ -7059,64 +7256,58 @@ yyreduce:
*/
idl_global->scopes ().pop ();
}
-#line 7063 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7260 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 371:
-#line 4503 "fe/idl.ypp" /* yacc.c:1646 */
+ case 389:
+#line 4564 "fe/idl.ypp" /* yacc.c:1651 */
{
-// opt_op_attribute : IDL_ONEWAY
idl_global->set_parse_state (IDL_GlobalData::PS_OpAttrSeen);
(yyval.ofval) = AST_Operation::OP_oneway;
}
-#line 7073 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7269 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 372:
-#line 4509 "fe/idl.ypp" /* yacc.c:1646 */
+ case 390:
+#line 4569 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_IDEMPOTENT
idl_global->set_parse_state (IDL_GlobalData::PS_OpAttrSeen);
(yyval.ofval) = AST_Operation::OP_idempotent;
}
-#line 7083 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7278 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 373:
-#line 4515 "fe/idl.ypp" /* yacc.c:1646 */
+ case 391:
+#line 4574 "fe/idl.ypp" /* yacc.c:1651 */
{
-/* | EMPTY */
(yyval.ofval) = AST_Operation::OP_noflags;
}
-#line 7092 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7286 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 375:
-#line 4524 "fe/idl.ypp" /* yacc.c:1646 */
+ case 393:
+#line 4582 "fe/idl.ypp" /* yacc.c:1651 */
{
-// op_type_spec : param_type_spec | IDL_VOID
(yyval.dcval) =
idl_global->scopes ().bottom ()->lookup_primitive_type (
AST_Expression::EV_void
);
}
-#line 7104 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7297 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 376:
-#line 4535 "fe/idl.ypp" /* yacc.c:1646 */
+ case 394:
+#line 4592 "fe/idl.ypp" /* yacc.c:1651 */
{
-// init_decl : IDL_FACTORY
//@@ PS_FactorySeen?
idl_global->set_parse_state (IDL_GlobalData::PS_OpTypeSeen);
}
-#line 7114 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7306 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 377:
-#line 4541 "fe/idl.ypp" /* yacc.c:1646 */
+ case 395:
+#line 4597 "fe/idl.ypp" /* yacc.c:1651 */
{
-// annotations IDENTIFIER
UTL_Scope *s = idl_global->scopes ().top_non_null ();
if (s->is_abstract ())
@@ -7156,22 +7347,20 @@ yyreduce:
*/
idl_global->scopes ().push (factory);
}
-#line 7160 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7351 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 378:
-#line 4583 "fe/idl.ypp" /* yacc.c:1646 */
+ case 396:
+#line 4638 "fe/idl.ypp" /* yacc.c:1651 */
{
-// init_parameter_list
idl_global->set_parse_state (IDL_GlobalData::PS_OpParsCompleted);
}
-#line 7169 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7359 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 379:
-#line 4588 "fe/idl.ypp" /* yacc.c:1646 */
+ case 397:
+#line 4642 "fe/idl.ypp" /* yacc.c:1651 */
{
-// opt_raises
idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseCompleted);
if ((yyvsp[0].nlval) != 0)
@@ -7183,76 +7372,68 @@ yyreduce:
idl_global->scopes ().pop ();
}
-#line 7187 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7376 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 380:
-#line 4605 "fe/idl.ypp" /* yacc.c:1646 */
+ case 398:
+#line 4658 "fe/idl.ypp" /* yacc.c:1651 */
{
-// init_parameter_list : '('
idl_global->set_parse_state (IDL_GlobalData::PS_OpSqSeen);
}
-#line 7196 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7384 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 381:
-#line 4610 "fe/idl.ypp" /* yacc.c:1646 */
+ case 399:
+#line 4662 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ')'
idl_global->set_parse_state (IDL_GlobalData::PS_OpQsSeen);
}
-#line 7205 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7392 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 382:
-#line 4615 "fe/idl.ypp" /* yacc.c:1646 */
+ case 400:
+#line 4666 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | '('
idl_global->set_parse_state (IDL_GlobalData::PS_OpSqSeen);
}
-#line 7214 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7400 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 383:
-#line 4621 "fe/idl.ypp" /* yacc.c:1646 */
+ case 401:
+#line 4671 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_in_parameter ')'
idl_global->set_parse_state (IDL_GlobalData::PS_OpQsSeen);
}
-#line 7223 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7408 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 385:
-#line 4632 "fe/idl.ypp" /* yacc.c:1646 */
+ case 403:
+#line 4681 "fe/idl.ypp" /* yacc.c:1651 */
{
-// in_parameters : in_parameters ','
idl_global->set_parse_state (IDL_GlobalData::PS_OpParCommaSeen);
}
-#line 7232 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7416 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 388:
-#line 4642 "fe/idl.ypp" /* yacc.c:1646 */
+ case 406:
+#line 4690 "fe/idl.ypp" /* yacc.c:1651 */
{
-// in_parameter : IDL_IN
idl_global->set_parse_state (IDL_GlobalData::PS_OpParDirSeen);
}
-#line 7241 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7424 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 389:
-#line 4647 "fe/idl.ypp" /* yacc.c:1646 */
+ case 407:
+#line 4694 "fe/idl.ypp" /* yacc.c:1651 */
{
-// param_type_spec
idl_global->set_parse_state (IDL_GlobalData::PS_OpParTypeSeen);
}
-#line 7250 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7432 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 390:
-#line 4652 "fe/idl.ypp" /* yacc.c:1646 */
+ case 408:
+#line 4698 "fe/idl.ypp" /* yacc.c:1651 */
{
-// declarator
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Argument *a = 0;
idl_global->set_parse_state (IDL_GlobalData::PS_OpParDeclSeen);
@@ -7283,76 +7464,68 @@ yyreduce:
delete (yyvsp[0].deval);
(yyvsp[0].deval) = 0;
}
-#line 7287 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7468 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 391:
-#line 4688 "fe/idl.ypp" /* yacc.c:1646 */
+ case 409:
+#line 4733 "fe/idl.ypp" /* yacc.c:1651 */
{
-// parameter_list : '('
idl_global->set_parse_state (IDL_GlobalData::PS_OpSqSeen);
}
-#line 7296 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7476 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 392:
-#line 4693 "fe/idl.ypp" /* yacc.c:1646 */
+ case 410:
+#line 4737 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ')'
idl_global->set_parse_state (IDL_GlobalData::PS_OpQsSeen);
}
-#line 7305 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7484 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 393:
-#line 4698 "fe/idl.ypp" /* yacc.c:1646 */
+ case 411:
+#line 4741 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | '('
idl_global->set_parse_state (IDL_GlobalData::PS_OpSqSeen);
}
-#line 7314 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7492 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 394:
-#line 4704 "fe/idl.ypp" /* yacc.c:1646 */
+ case 412:
+#line 4746 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_parameter ')'
idl_global->set_parse_state (IDL_GlobalData::PS_OpQsSeen);
}
-#line 7323 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7500 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 396:
-#line 4715 "fe/idl.ypp" /* yacc.c:1646 */
+ case 414:
+#line 4756 "fe/idl.ypp" /* yacc.c:1651 */
{
-// parameters : parameters ','
idl_global->set_parse_state (IDL_GlobalData::PS_OpParCommaSeen);
}
-#line 7332 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7508 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 399:
-#line 4725 "fe/idl.ypp" /* yacc.c:1646 */
+ case 417:
+#line 4765 "fe/idl.ypp" /* yacc.c:1651 */
{
-// parameter : direction
idl_global->set_parse_state (IDL_GlobalData::PS_OpParDirSeen);
}
-#line 7341 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7516 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 400:
-#line 4730 "fe/idl.ypp" /* yacc.c:1646 */
+ case 418:
+#line 4769 "fe/idl.ypp" /* yacc.c:1651 */
{
-// param_type_spec
idl_global->set_parse_state (IDL_GlobalData::PS_OpParTypeSeen);
}
-#line 7350 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7524 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 401:
-#line 4735 "fe/idl.ypp" /* yacc.c:1646 */
+ case 419:
+#line 4773 "fe/idl.ypp" /* yacc.c:1651 */
{
-// declarator
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Argument *a = 0;
idl_global->set_parse_state (IDL_GlobalData::PS_OpParDeclSeen);
@@ -7390,27 +7563,23 @@ yyreduce:
delete (yyvsp[0].deval);
(yyvsp[0].deval) = 0;
}
-#line 7394 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7567 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 402:
-#line 4778 "fe/idl.ypp" /* yacc.c:1646 */
+ case 420:
+#line 4815 "fe/idl.ypp" /* yacc.c:1651 */
{
-// param_type_spec : base_type_spec
(yyval.dcval) =
idl_global->scopes ().bottom ()->lookup_primitive_type (
(yyvsp[0].etval)
);
}
-#line 7406 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7578 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 405:
-#line 4788 "fe/idl.ypp" /* yacc.c:1646 */
+ case 423:
+#line 4824 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | string_type_spec
-// | wstring_type_spec
-// | scoped_name
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Decl *d = 0;
UTL_ScopedName *n = (yyvsp[0].idlist);
@@ -7513,209 +7682,187 @@ yyreduce:
(yyval.dcval) = d;
}
-#line 7517 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7686 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 406:
-#line 4898 "fe/idl.ypp" /* yacc.c:1646 */
+ case 424:
+#line 4931 "fe/idl.ypp" /* yacc.c:1651 */
{
-// direction : IDL_IN
(yyval.dival) = AST_Argument::dir_IN;
}
-#line 7526 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7694 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 407:
-#line 4903 "fe/idl.ypp" /* yacc.c:1646 */
+ case 425:
+#line 4935 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_OUT
(yyval.dival) = AST_Argument::dir_OUT;
}
-#line 7535 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7702 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 408:
-#line 4908 "fe/idl.ypp" /* yacc.c:1646 */
+ case 426:
+#line 4939 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_INOUT
(yyval.dival) = AST_Argument::dir_INOUT;
}
-#line 7544 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7710 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 409:
-#line 4916 "fe/idl.ypp" /* yacc.c:1646 */
+ case 427:
+#line 4946 "fe/idl.ypp" /* yacc.c:1651 */
{
-// opt_raises : IDL_RAISES
idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseSeen);
}
-#line 7553 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7718 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 410:
-#line 4921 "fe/idl.ypp" /* yacc.c:1646 */
+ case 428:
+#line 4950 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '('
idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseSqSeen);
}
-#line 7562 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7726 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 411:
-#line 4927 "fe/idl.ypp" /* yacc.c:1646 */
+ case 429:
+#line 4955 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_scoped_name ')'
idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseQsSeen);
(yyval.nlval) = (yyvsp[-1].nlval);
}
-#line 7572 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7735 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 412:
-#line 4933 "fe/idl.ypp" /* yacc.c:1646 */
+ case 430:
+#line 4960 "fe/idl.ypp" /* yacc.c:1651 */
{
(yyval.nlval) = 0;
-/* | EMPTY */
}
-#line 7581 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7743 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 413:
-#line 4941 "fe/idl.ypp" /* yacc.c:1646 */
+ case 431:
+#line 4967 "fe/idl.ypp" /* yacc.c:1651 */
{
-// opt_getraises : IDL_GETRAISES
idl_global->set_parse_state (IDL_GlobalData::PS_OpGetRaiseSeen);
}
-#line 7590 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7751 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 414:
-#line 4946 "fe/idl.ypp" /* yacc.c:1646 */
+ case 432:
+#line 4971 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '('
idl_global->set_parse_state (IDL_GlobalData::PS_OpGetRaiseSqSeen);
}
-#line 7599 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7759 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 415:
-#line 4952 "fe/idl.ypp" /* yacc.c:1646 */
+ case 433:
+#line 4976 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_scoped_name ')'
idl_global->set_parse_state (IDL_GlobalData::PS_OpGetRaiseQsSeen);
(yyval.nlval) = (yyvsp[-1].nlval);
}
-#line 7609 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7768 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 416:
-#line 4958 "fe/idl.ypp" /* yacc.c:1646 */
+ case 434:
+#line 4981 "fe/idl.ypp" /* yacc.c:1651 */
{
(yyval.nlval) = 0;
-/* | EMPTY */
}
-#line 7618 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7776 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 417:
-#line 4966 "fe/idl.ypp" /* yacc.c:1646 */
+ case 435:
+#line 4988 "fe/idl.ypp" /* yacc.c:1651 */
{
-// opt_setraises : IDL_SETRAISES
idl_global->set_parse_state (IDL_GlobalData::PS_OpSetRaiseSeen);
}
-#line 7627 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7784 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 418:
-#line 4971 "fe/idl.ypp" /* yacc.c:1646 */
+ case 436:
+#line 4992 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '('
idl_global->set_parse_state (IDL_GlobalData::PS_OpSetRaiseSqSeen);
}
-#line 7636 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7792 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 419:
-#line 4977 "fe/idl.ypp" /* yacc.c:1646 */
+ case 437:
+#line 4997 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_scoped_name ')'
idl_global->set_parse_state (IDL_GlobalData::PS_OpSetRaiseQsSeen);
(yyval.nlval) = (yyvsp[-1].nlval);
}
-#line 7646 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7801 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 420:
-#line 4983 "fe/idl.ypp" /* yacc.c:1646 */
+ case 438:
+#line 5002 "fe/idl.ypp" /* yacc.c:1651 */
{
(yyval.nlval) = 0;
-/* | EMPTY */
}
-#line 7655 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7809 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 421:
-#line 4991 "fe/idl.ypp" /* yacc.c:1646 */
+ case 439:
+#line 5009 "fe/idl.ypp" /* yacc.c:1651 */
{
-// opt_context : IDL_CONTEXT
idl_global->set_parse_state (IDL_GlobalData::PS_OpContextSeen);
}
-#line 7664 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7817 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 422:
-#line 4996 "fe/idl.ypp" /* yacc.c:1646 */
+ case 440:
+#line 5013 "fe/idl.ypp" /* yacc.c:1651 */
{
idl_global->set_parse_state (IDL_GlobalData::PS_OpContextSqSeen);
-// '('
}
-#line 7673 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7825 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 423:
-#line 5002 "fe/idl.ypp" /* yacc.c:1646 */
+ case 441:
+#line 5018 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_string_literal ')'
idl_global->set_parse_state (IDL_GlobalData::PS_OpContextQsSeen);
(yyval.slval) = (yyvsp[-1].slval);
}
-#line 7683 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7834 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 424:
-#line 5008 "fe/idl.ypp" /* yacc.c:1646 */
+ case 442:
+#line 5023 "fe/idl.ypp" /* yacc.c:1651 */
{
-/* | EMPTY */
(yyval.slval) = 0;
}
-#line 7692 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7842 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 425:
-#line 5016 "fe/idl.ypp" /* yacc.c:1646 */
+ case 443:
+#line 5030 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_string_literal : IDL_STRING_LITERAL string_literals
ACE_NEW_RETURN ((yyval.slval),
UTL_StrList ((yyvsp[-1].sval),
(yyvsp[0].slval)),
1);
}
-#line 7704 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7853 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 426:
-#line 5028 "fe/idl.ypp" /* yacc.c:1646 */
+ case 444:
+#line 5041 "fe/idl.ypp" /* yacc.c:1651 */
{
-// string_literals : string_literals ','
idl_global->set_parse_state (IDL_GlobalData::PS_OpContextCommaSeen);
}
-#line 7713 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7861 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 427:
-#line 5033 "fe/idl.ypp" /* yacc.c:1646 */
+ case 445:
+#line 5045 "fe/idl.ypp" /* yacc.c:1651 */
{
-// IDL_STRING_LITERAL
UTL_StrList *sl = 0;
ACE_NEW_RETURN (sl,
UTL_StrList ((yyvsp[0].sval),
@@ -7732,22 +7879,20 @@ yyreduce:
(yyval.slval) = (yyvsp[-3].slval);
}
}
-#line 7736 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7883 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 428:
-#line 5052 "fe/idl.ypp" /* yacc.c:1646 */
+ case 446:
+#line 5063 "fe/idl.ypp" /* yacc.c:1651 */
{
-/* | EMPTY */
(yyval.slval) = 0;
}
-#line 7745 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7891 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 429:
-#line 5060 "fe/idl.ypp" /* yacc.c:1646 */
+ case 447:
+#line 5070 "fe/idl.ypp" /* yacc.c:1651 */
{
-// typeid_dcl : IDL_TYPEID scoped_name IDL_STRING_LITERAL
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Decl *d =
s->lookup_by_name ((yyvsp[-1].idlist));
@@ -7771,13 +7916,12 @@ yyreduce:
delete (yyvsp[0].sval);
(yyvsp[0].sval) = 0;
}
-#line 7775 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7920 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 430:
-#line 5089 "fe/idl.ypp" /* yacc.c:1646 */
+ case 448:
+#line 5098 "fe/idl.ypp" /* yacc.c:1651 */
{
-// typeprefix_dcl : IDL_TYPEPREFIX scoped_name IDL_STRING_LITERAL
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Decl *d = ScopeAsDecl (s);
@@ -7810,13 +7954,12 @@ yyreduce:
delete (yyvsp[0].sval);
(yyvsp[0].sval) = 0;
}
-#line 7814 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7958 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 433:
-#line 5133 "fe/idl.ypp" /* yacc.c:1646 */
+ case 451:
+#line 5141 "fe/idl.ypp" /* yacc.c:1651 */
{
-// component_forward_decl : IDL_COMPONENT defining_id
UTL_Scope *s = idl_global->scopes ().top_non_null ();
UTL_ScopedName n ((yyvsp[0].idval),
0);
@@ -7839,13 +7982,12 @@ yyreduce:
delete (yyvsp[0].idval);
(yyvsp[0].idval) = 0;
}
-#line 7843 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 7986 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 434:
-#line 5161 "fe/idl.ypp" /* yacc.c:1646 */
+ case 452:
+#line 5168 "fe/idl.ypp" /* yacc.c:1651 */
{
-// component_decl : component_header
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Component *c = 0;
@@ -7883,31 +8025,28 @@ yyreduce:
*/
idl_global->scopes ().push (c);
}
-#line 7887 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8029 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 435:
-#line 5201 "fe/idl.ypp" /* yacc.c:1646 */
+ case 453:
+#line 5207 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '{'
idl_global->set_parse_state (IDL_GlobalData::PS_ComponentSqSeen);
}
-#line 7896 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8037 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 436:
-#line 5206 "fe/idl.ypp" /* yacc.c:1646 */
+ case 454:
+#line 5211 "fe/idl.ypp" /* yacc.c:1651 */
{
-// component_exports
idl_global->set_parse_state (IDL_GlobalData::PS_ComponentBodySeen);
}
-#line 7905 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8045 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 437:
-#line 5211 "fe/idl.ypp" /* yacc.c:1646 */
+ case 455:
+#line 5215 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_ComponentQsSeen);
/*
@@ -7915,31 +8054,28 @@ yyreduce:
*/
idl_global->scopes ().pop ();
}
-#line 7919 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8058 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 438:
-#line 5225 "fe/idl.ypp" /* yacc.c:1646 */
+ case 456:
+#line 5228 "fe/idl.ypp" /* yacc.c:1651 */
{
-// component_header: IDL_COMPONENT defining_id
idl_global->set_parse_state (IDL_GlobalData::PS_ComponentIDSeen);
}
-#line 7928 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8066 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 439:
-#line 5230 "fe/idl.ypp" /* yacc.c:1646 */
+ case 457:
+#line 5232 "fe/idl.ypp" /* yacc.c:1651 */
{
-// component_inheritance_spec
idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
}
-#line 7937 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8074 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 440:
-#line 5235 "fe/idl.ypp" /* yacc.c:1646 */
+ case 458:
+#line 5236 "fe/idl.ypp" /* yacc.c:1651 */
{
-// supports_spec
idl_global->set_parse_state (IDL_GlobalData::PS_SupportSpecSeen);
/*
@@ -7972,166 +8108,148 @@ yyreduce:
(yyvsp[-2].idlist) = 0;
}
}
-#line 7976 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8112 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 441:
-#line 5273 "fe/idl.ypp" /* yacc.c:1646 */
+ case 459:
+#line 5273 "fe/idl.ypp" /* yacc.c:1651 */
{
-// component_inheritance_spec : ':'
idl_global->set_parse_state (IDL_GlobalData::PS_InheritColonSeen);
}
-#line 7985 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8120 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 442:
-#line 5278 "fe/idl.ypp" /* yacc.c:1646 */
+ case 460:
+#line 5277 "fe/idl.ypp" /* yacc.c:1651 */
{
-// scoped_name
(yyval.idlist) = (yyvsp[0].idlist);
}
-#line 7994 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8128 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 443:
-#line 5283 "fe/idl.ypp" /* yacc.c:1646 */
+ case 461:
+#line 5281 "fe/idl.ypp" /* yacc.c:1651 */
{
-/* | EMPTY */
(yyval.idlist) = 0;
}
-#line 8003 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8136 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 446:
-#line 5296 "fe/idl.ypp" /* yacc.c:1646 */
+ case 464:
+#line 5293 "fe/idl.ypp" /* yacc.c:1651 */
{
-// component_export : provides_decl
idl_global->set_parse_state (IDL_GlobalData::PS_ProvidesDeclSeen);
}
-#line 8012 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8144 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 447:
-#line 5301 "fe/idl.ypp" /* yacc.c:1646 */
+ case 465:
+#line 5297 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
-#line 8021 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8152 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 448:
-#line 5306 "fe/idl.ypp" /* yacc.c:1646 */
+ case 466:
+#line 5301 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | uses_decl
idl_global->set_parse_state (IDL_GlobalData::PS_UsesDeclSeen);
}
-#line 8030 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8160 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 449:
-#line 5311 "fe/idl.ypp" /* yacc.c:1646 */
+ case 467:
+#line 5305 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
-#line 8039 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8168 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 450:
-#line 5316 "fe/idl.ypp" /* yacc.c:1646 */
+ case 468:
+#line 5309 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | emits_decl
idl_global->set_parse_state (IDL_GlobalData::PS_EmitsDeclSeen);
}
-#line 8048 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8176 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 451:
-#line 5321 "fe/idl.ypp" /* yacc.c:1646 */
+ case 469:
+#line 5313 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
-#line 8057 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8184 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 452:
-#line 5326 "fe/idl.ypp" /* yacc.c:1646 */
+ case 470:
+#line 5317 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | publishes_decl
idl_global->set_parse_state (IDL_GlobalData::PS_PublishesDeclSeen);
}
-#line 8066 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8192 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 453:
-#line 5331 "fe/idl.ypp" /* yacc.c:1646 */
+ case 471:
+#line 5321 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
-#line 8075 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8200 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 454:
-#line 5336 "fe/idl.ypp" /* yacc.c:1646 */
+ case 472:
+#line 5325 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | consumes_decl
idl_global->set_parse_state (IDL_GlobalData::PS_ConsumesDeclSeen);
}
-#line 8084 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8208 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 455:
-#line 5341 "fe/idl.ypp" /* yacc.c:1646 */
+ case 473:
+#line 5329 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
-#line 8093 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8216 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 456:
-#line 5346 "fe/idl.ypp" /* yacc.c:1646 */
+ case 474:
+#line 5333 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | attribute
idl_global->set_parse_state (IDL_GlobalData::PS_AttrDeclSeen);
}
-#line 8102 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8224 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 457:
-#line 5351 "fe/idl.ypp" /* yacc.c:1646 */
+ case 475:
+#line 5337 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
-#line 8111 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8232 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 458:
-#line 5356 "fe/idl.ypp" /* yacc.c:1646 */
+ case 476:
+#line 5341 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | extended_port_decl
idl_global->set_parse_state (IDL_GlobalData::PS_ExtendedPortDeclSeen);
}
-#line 8120 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8240 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 459:
-#line 5361 "fe/idl.ypp" /* yacc.c:1646 */
+ case 477:
+#line 5345 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
-#line 8129 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8248 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 460:
-#line 5368 "fe/idl.ypp" /* yacc.c:1646 */
+ case 478:
+#line 5351 "fe/idl.ypp" /* yacc.c:1651 */
{
-// provides_decl : IDL_PROVIDES interface_type id
UTL_Scope *s = idl_global->scopes ().top_non_null ();
bool so_far_so_good = true;
AST_Decl::NodeType nt = AST_Decl::NT_type;
@@ -8217,24 +8335,22 @@ yyreduce:
delete (yyvsp[0].idval);
(yyvsp[0].idval) = 0;
}
-#line 8221 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8339 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 461:
-#line 5459 "fe/idl.ypp" /* yacc.c:1646 */
+ case 479:
+#line 5441 "fe/idl.ypp" /* yacc.c:1651 */
{
-// interface_type : scoped_name
// Lookups and checking are done where the 'interface_type'
// token is used, in 'provides_decl' and 'uses_decl'.
(yyval.idlist) = (yyvsp[0].idlist);
}
-#line 8232 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8349 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 462:
-#line 5466 "fe/idl.ypp" /* yacc.c:1646 */
+ case 480:
+#line 5447 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_OBJECT
Identifier *corba_id = 0;
ACE_NEW_RETURN (corba_id,
@@ -8256,13 +8372,12 @@ yyreduce:
conc_name),
1);
}
-#line 8260 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8376 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 463:
-#line 5492 "fe/idl.ypp" /* yacc.c:1646 */
+ case 481:
+#line 5472 "fe/idl.ypp" /* yacc.c:1651 */
{
-// uses_decl : uses_opt_multiple interface_type id
UTL_Scope *s = idl_global->scopes ().top_non_null ();
bool so_far_so_good = true;
AST_Decl::NodeType nt = AST_Decl::NT_type;
@@ -8364,42 +8479,38 @@ yyreduce:
delete (yyvsp[0].idval);
(yyvsp[0].idval) = 0;
}
-#line 8368 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8483 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 464:
-#line 5599 "fe/idl.ypp" /* yacc.c:1646 */
+ case 482:
+#line 5578 "fe/idl.ypp" /* yacc.c:1651 */
{
-// uses_opt_multiple : IDL_USES opt_multiple
// We use this extra rule here to use in both uses_decl and
// extended_uses_decl, so the LALR(1) parser can avoid conflicts.
(yyval.bval) = (yyvsp[0].bval);
}
-#line 8379 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8493 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 465:
-#line 5609 "fe/idl.ypp" /* yacc.c:1646 */
+ case 483:
+#line 5587 "fe/idl.ypp" /* yacc.c:1651 */
{
-// opt_multiple : IDL_MULTIPLE
(yyval.bval) = true;
}
-#line 8388 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8501 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 466:
-#line 5614 "fe/idl.ypp" /* yacc.c:1646 */
+ case 484:
+#line 5591 "fe/idl.ypp" /* yacc.c:1651 */
{
-/* | EMPTY */
(yyval.bval) = false;
}
-#line 8397 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8509 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 467:
-#line 5621 "fe/idl.ypp" /* yacc.c:1646 */
+ case 485:
+#line 5597 "fe/idl.ypp" /* yacc.c:1651 */
{
-// emits_decl : IDL_EMITS scoped_name id
UTL_Scope *s = idl_global->scopes ().top_non_null ();
bool so_far_so_good = true;
AST_Decl::NodeType nt = AST_Decl::NT_type;
@@ -8468,13 +8579,12 @@ yyreduce:
delete (yyvsp[0].idval);
(yyvsp[0].idval) = 0;
}
-#line 8472 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8583 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 468:
-#line 5694 "fe/idl.ypp" /* yacc.c:1646 */
+ case 486:
+#line 5669 "fe/idl.ypp" /* yacc.c:1651 */
{
-// publishes_decl : IDL_PUBLISHES scoped_name id
UTL_Scope *s = idl_global->scopes ().top_non_null ();
bool so_far_so_good = true;
AST_Decl::NodeType nt = AST_Decl::NT_type;
@@ -8543,13 +8653,12 @@ yyreduce:
delete (yyvsp[0].idval);
(yyvsp[0].idval) = 0;
}
-#line 8547 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8657 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 469:
-#line 5767 "fe/idl.ypp" /* yacc.c:1646 */
+ case 487:
+#line 5741 "fe/idl.ypp" /* yacc.c:1651 */
{
-// consumes_decl : IDL_CONSUMES scoped_name id
UTL_Scope *s = idl_global->scopes ().top_non_null ();
bool so_far_so_good = true;
AST_Decl::NodeType nt = AST_Decl::NT_type;
@@ -8618,13 +8727,12 @@ yyreduce:
delete (yyvsp[0].idval);
(yyvsp[0].idval) = 0;
}
-#line 8622 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8731 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 470:
-#line 5841 "fe/idl.ypp" /* yacc.c:1646 */
+ case 488:
+#line 5814 "fe/idl.ypp" /* yacc.c:1651 */
{
-// home_decl : home_header
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Home *h = 0;
@@ -8660,79 +8768,71 @@ yyreduce:
*/
idl_global->scopes ().push (h);
}
-#line 8664 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8772 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 471:
-#line 5879 "fe/idl.ypp" /* yacc.c:1646 */
+ case 489:
+#line 5851 "fe/idl.ypp" /* yacc.c:1651 */
{
-// home_body
/*
* Done with this component - pop it off the scopes stack.
*/
idl_global->scopes ().pop ();
}
-#line 8676 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8783 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 472:
-#line 5890 "fe/idl.ypp" /* yacc.c:1646 */
+ case 490:
+#line 5861 "fe/idl.ypp" /* yacc.c:1651 */
{
-// home_header : IDL_HOME
idl_global->set_parse_state (IDL_GlobalData::PS_HomeSeen);
}
-#line 8685 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8791 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 473:
-#line 5895 "fe/idl.ypp" /* yacc.c:1646 */
+ case 491:
+#line 5865 "fe/idl.ypp" /* yacc.c:1651 */
{
-// defining_id
idl_global->set_parse_state (IDL_GlobalData::PS_HomeIDSeen);
}
-#line 8694 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8799 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 474:
-#line 5900 "fe/idl.ypp" /* yacc.c:1646 */
+ case 492:
+#line 5869 "fe/idl.ypp" /* yacc.c:1651 */
{
-// home_inheritance_spec
idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
}
-#line 8703 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8807 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 475:
-#line 5905 "fe/idl.ypp" /* yacc.c:1646 */
+ case 493:
+#line 5873 "fe/idl.ypp" /* yacc.c:1651 */
{
-// supports_spec
idl_global->set_parse_state (IDL_GlobalData::PS_SupportSpecSeen);
}
-#line 8712 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8815 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 476:
-#line 5910 "fe/idl.ypp" /* yacc.c:1646 */
+ case 494:
+#line 5877 "fe/idl.ypp" /* yacc.c:1651 */
{
-// IDL_MANAGES
idl_global->set_parse_state (IDL_GlobalData::PS_ManagesSeen);
}
-#line 8721 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8823 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 477:
-#line 5915 "fe/idl.ypp" /* yacc.c:1646 */
+ case 495:
+#line 5881 "fe/idl.ypp" /* yacc.c:1651 */
{
-// scoped_name
idl_global->set_parse_state (IDL_GlobalData::PS_ManagesIDSeen);
}
-#line 8730 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8831 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 478:
-#line 5920 "fe/idl.ypp" /* yacc.c:1646 */
+ case 496:
+#line 5885 "fe/idl.ypp" /* yacc.c:1651 */
{
-// primary_key_spec
idl_global->set_parse_state (IDL_GlobalData::PS_PrimaryKeySpecSeen);
/*
@@ -8777,121 +8877,108 @@ yyreduce:
(yyvsp[-6].nlval) = 0;
}
}
-#line 8781 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8881 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 479:
-#line 5970 "fe/idl.ypp" /* yacc.c:1646 */
+ case 497:
+#line 5934 "fe/idl.ypp" /* yacc.c:1651 */
{
-// home_inheritance_spec ':'
idl_global->set_parse_state (IDL_GlobalData::PS_InheritColonSeen);
}
-#line 8790 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8889 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 480:
-#line 5975 "fe/idl.ypp" /* yacc.c:1646 */
+ case 498:
+#line 5938 "fe/idl.ypp" /* yacc.c:1651 */
{
-// scoped_name
(yyval.idlist) = (yyvsp[0].idlist);
}
-#line 8799 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8897 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 481:
-#line 5980 "fe/idl.ypp" /* yacc.c:1646 */
+ case 499:
+#line 5942 "fe/idl.ypp" /* yacc.c:1651 */
{
-/* | EMPTY */
(yyval.idlist) = 0;
}
-#line 8808 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8905 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 482:
-#line 5989 "fe/idl.ypp" /* yacc.c:1646 */
+ case 500:
+#line 5950 "fe/idl.ypp" /* yacc.c:1651 */
{
-// primary_key_spec : IDL_PRIMARYKEY scoped_name
(yyval.idlist) = (yyvsp[0].idlist);
}
-#line 8817 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8913 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 483:
-#line 5994 "fe/idl.ypp" /* yacc.c:1646 */
+ case 501:
+#line 5954 "fe/idl.ypp" /* yacc.c:1651 */
{
-/* | EMPTY */
(yyval.idlist) = 0;
}
-#line 8826 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8921 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 484:
-#line 6002 "fe/idl.ypp" /* yacc.c:1646 */
+ case 502:
+#line 5961 "fe/idl.ypp" /* yacc.c:1651 */
{
-// home_body : '{'
idl_global->set_parse_state (IDL_GlobalData::PS_HomeSqSeen);
}
-#line 8835 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8929 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 485:
-#line 6007 "fe/idl.ypp" /* yacc.c:1646 */
+ case 503:
+#line 5965 "fe/idl.ypp" /* yacc.c:1651 */
{
-// home_exports
idl_global->set_parse_state (IDL_GlobalData::PS_HomeBodySeen);
}
-#line 8844 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8937 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 486:
-#line 6012 "fe/idl.ypp" /* yacc.c:1646 */
+ case 504:
+#line 5969 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_HomeQsSeen);
}
-#line 8853 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8945 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 490:
-#line 6026 "fe/idl.ypp" /* yacc.c:1646 */
+ case 508:
+#line 5982 "fe/idl.ypp" /* yacc.c:1651 */
{
-// home_export : factory_decl
idl_global->set_parse_state (IDL_GlobalData::PS_FactoryDeclSeen);
}
-#line 8862 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8953 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 491:
-#line 6031 "fe/idl.ypp" /* yacc.c:1646 */
+ case 509:
+#line 5986 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
-#line 8871 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8961 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 492:
-#line 6036 "fe/idl.ypp" /* yacc.c:1646 */
+ case 510:
+#line 5990 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | finder_decl
idl_global->set_parse_state (IDL_GlobalData::PS_FinderDeclSeen);
}
-#line 8880 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8969 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 493:
-#line 6041 "fe/idl.ypp" /* yacc.c:1646 */
+ case 511:
+#line 5994 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
-#line 8889 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 8977 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 494:
-#line 6050 "fe/idl.ypp" /* yacc.c:1646 */
+ case 512:
+#line 6002 "fe/idl.ypp" /* yacc.c:1651 */
{
-// factory_decl : IDL_FACTORY defining_id
UTL_Scope *s = idl_global->scopes ().top_non_null ();
UTL_ScopedName n ((yyvsp[0].idval),
0);
@@ -8913,22 +9000,20 @@ yyreduce:
*/
idl_global->scopes ().push (f);
}
-#line 8917 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9004 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 495:
-#line 6074 "fe/idl.ypp" /* yacc.c:1646 */
+ case 513:
+#line 6025 "fe/idl.ypp" /* yacc.c:1651 */
{
-// init_parameter_list
idl_global->set_parse_state (IDL_GlobalData::PS_OpParsCompleted);
}
-#line 8926 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9012 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 496:
-#line 6079 "fe/idl.ypp" /* yacc.c:1646 */
+ case 514:
+#line 6029 "fe/idl.ypp" /* yacc.c:1651 */
{
-// opt_raises
UTL_Scope *s = idl_global->scopes ().top_non_null ();
idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseCompleted);
@@ -8945,13 +9030,12 @@ yyreduce:
*/
idl_global->scopes ().pop ();
}
-#line 8949 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9034 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 497:
-#line 6102 "fe/idl.ypp" /* yacc.c:1646 */
+ case 515:
+#line 6051 "fe/idl.ypp" /* yacc.c:1651 */
{
-// finder_decl : IDL_FINDER defining_id
UTL_Scope *s = idl_global->scopes ().top_non_null ();
UTL_ScopedName n ((yyvsp[0].idval),
0);
@@ -8977,22 +9061,20 @@ yyreduce:
*/
idl_global->scopes ().push (f);
}
-#line 8981 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9065 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 498:
-#line 6130 "fe/idl.ypp" /* yacc.c:1646 */
+ case 516:
+#line 6078 "fe/idl.ypp" /* yacc.c:1651 */
{
-// init_parameter_list
idl_global->set_parse_state (IDL_GlobalData::PS_OpParsCompleted);
}
-#line 8990 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9073 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 499:
-#line 6135 "fe/idl.ypp" /* yacc.c:1646 */
+ case 517:
+#line 6082 "fe/idl.ypp" /* yacc.c:1651 */
{
-// opt_raises
UTL_Scope *s = idl_global->scopes ().top_non_null ();
idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseCompleted);
@@ -9009,13 +9091,12 @@ yyreduce:
*/
idl_global->scopes ().pop ();
}
-#line 9013 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9095 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 505:
-#line 6169 "fe/idl.ypp" /* yacc.c:1646 */
+ case 523:
+#line 6115 "fe/idl.ypp" /* yacc.c:1651 */
{
-// event_concrete_forward_decl : IDL_EVENTTYPE defining_id
UTL_Scope *s = idl_global->scopes ().top_non_null ();
UTL_ScopedName n ((yyvsp[0].idval),
0);
@@ -9037,13 +9118,12 @@ yyreduce:
delete (yyvsp[0].idval);
(yyvsp[0].idval) = 0;
}
-#line 9041 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9122 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 506:
-#line 6198 "fe/idl.ypp" /* yacc.c:1646 */
+ case 524:
+#line 6143 "fe/idl.ypp" /* yacc.c:1651 */
{
-// event_abs_forward_decl : IDL_ABSTRACT IDL_EVENTTYPE defining_id
UTL_Scope *s = idl_global->scopes ().top_non_null ();
UTL_ScopedName n ((yyvsp[0].idval),
0);
@@ -9065,13 +9145,12 @@ yyreduce:
delete (yyvsp[0].idval);
(yyvsp[0].idval) = 0;
}
-#line 9069 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9149 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 507:
-#line 6226 "fe/idl.ypp" /* yacc.c:1646 */
+ case 525:
+#line 6170 "fe/idl.ypp" /* yacc.c:1651 */
{
-// event_abs_decl : event_abs_header event_rest_of_header
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_EventType *e = 0;
AST_Interface *i = 0;
@@ -9114,31 +9193,28 @@ yyreduce:
delete (yyvsp[-1].idval);
(yyvsp[-1].idval) = 0;
}
-#line 9118 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9197 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 508:
-#line 6271 "fe/idl.ypp" /* yacc.c:1646 */
+ case 526:
+#line 6214 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '{'
idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeSqSeen);
}
-#line 9127 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9205 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 509:
-#line 6276 "fe/idl.ypp" /* yacc.c:1646 */
+ case 527:
+#line 6218 "fe/idl.ypp" /* yacc.c:1651 */
{
-// exports
idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeBodySeen);
}
-#line 9136 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9213 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 510:
-#line 6281 "fe/idl.ypp" /* yacc.c:1646 */
+ case 528:
+#line 6222 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeQsSeen);
/*
@@ -9146,22 +9222,20 @@ yyreduce:
*/
idl_global->scopes ().pop ();
}
-#line 9150 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9226 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 511:
-#line 6296 "fe/idl.ypp" /* yacc.c:1646 */
+ case 529:
+#line 6236 "fe/idl.ypp" /* yacc.c:1651 */
{
-// event_abs_header : IDL_ABSTRACT IDL_EVENTTYPE defining_id
(yyval.idval) = (yyvsp[0].idval);
}
-#line 9159 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9234 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 512:
-#line 6306 "fe/idl.ypp" /* yacc.c:1646 */
+ case 530:
+#line 6245 "fe/idl.ypp" /* yacc.c:1651 */
{
-// event_custom_header : IDL_CUSTOM IDL_EVENTTYPE defining_id
idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeIDSeen);
ACE_DEBUG ((LM_DEBUG,
@@ -9173,33 +9247,30 @@ yyreduce:
ACE_TEXT (" custom yet\n")));
(yyval.idval) = 0;
}
-#line 9177 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9251 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 513:
-#line 6324 "fe/idl.ypp" /* yacc.c:1646 */
+ case 531:
+#line 6262 "fe/idl.ypp" /* yacc.c:1651 */
{
-// event_plain_header : IDL_EVENTTYPE defining_id
idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeIDSeen);
(yyval.idval) = (yyvsp[0].idval);
}
-#line 9188 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9261 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 514:
-#line 6334 "fe/idl.ypp" /* yacc.c:1646 */
+ case 532:
+#line 6271 "fe/idl.ypp" /* yacc.c:1651 */
{
-// event_rest_of_header : inheritance_spec
idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
}
-#line 9197 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9269 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 515:
-#line 6339 "fe/idl.ypp" /* yacc.c:1646 */
+ case 533:
+#line 6275 "fe/idl.ypp" /* yacc.c:1651 */
{
-// supports_spec
idl_global->set_parse_state (IDL_GlobalData::PS_SupportSpecSeen);
ACE_NEW_RETURN ((yyval.vhval),
@@ -9227,13 +9298,12 @@ yyreduce:
(yyvsp[-2].nlval) = 0;
}
}
-#line 9231 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9302 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 516:
-#line 6373 "fe/idl.ypp" /* yacc.c:1646 */
+ case 534:
+#line 6308 "fe/idl.ypp" /* yacc.c:1651 */
{
-// event_decl : event_header event_rest_of_header
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_EventType *e = 0;
AST_Interface *i = 0;
@@ -9281,31 +9351,28 @@ yyreduce:
*/
idl_global->scopes ().push (e);
}
-#line 9285 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9355 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 517:
-#line 6423 "fe/idl.ypp" /* yacc.c:1646 */
+ case 535:
+#line 6357 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '{'
idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeSqSeen);
}
-#line 9294 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9363 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 518:
-#line 6428 "fe/idl.ypp" /* yacc.c:1646 */
+ case 536:
+#line 6361 "fe/idl.ypp" /* yacc.c:1651 */
{
-// value_elements
idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeBodySeen);
}
-#line 9303 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9371 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 519:
-#line 6433 "fe/idl.ypp" /* yacc.c:1646 */
+ case 537:
+#line 6365 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeQsSeen);
/*
@@ -9313,127 +9380,112 @@ yyreduce:
*/
idl_global->scopes ().pop ();
}
-#line 9317 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9384 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 520:
-#line 6446 "fe/idl.ypp" /* yacc.c:1646 */
+ case 538:
+#line 6377 "fe/idl.ypp" /* yacc.c:1651 */
{
-// event_header : event_custom_header
(yyval.idval) = (yyvsp[0].idval);
}
-#line 9326 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9392 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 521:
-#line 6451 "fe/idl.ypp" /* yacc.c:1646 */
+ case 539:
+#line 6381 "fe/idl.ypp" /* yacc.c:1651 */
{
-// event_header : event_plain_header
(yyval.idval) = (yyvsp[0].idval);
}
-#line 9335 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9400 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 522:
-#line 6459 "fe/idl.ypp" /* yacc.c:1646 */
+ case 540:
+#line 6388 "fe/idl.ypp" /* yacc.c:1651 */
{
-// formal_parameter_type : IDL_TYPENAME
(yyval.ntval) = AST_Decl::NT_type;
}
-#line 9344 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9408 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 523:
-#line 6464 "fe/idl.ypp" /* yacc.c:1646 */
+ case 541:
+#line 6392 "fe/idl.ypp" /* yacc.c:1651 */
{
-// IDL_STRUCT
(yyval.ntval) = AST_Decl::NT_struct;
}
-#line 9353 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9416 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 524:
-#line 6469 "fe/idl.ypp" /* yacc.c:1646 */
+ case 542:
+#line 6396 "fe/idl.ypp" /* yacc.c:1651 */
{
-// IDL_UNION
(yyval.ntval) = AST_Decl::NT_union;
}
-#line 9362 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9424 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 525:
-#line 6474 "fe/idl.ypp" /* yacc.c:1646 */
+ case 543:
+#line 6400 "fe/idl.ypp" /* yacc.c:1651 */
{
-// IDL_EVENTTYPE
(yyval.ntval) = AST_Decl::NT_eventtype;
}
-#line 9371 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9432 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 526:
-#line 6479 "fe/idl.ypp" /* yacc.c:1646 */
+ case 544:
+#line 6404 "fe/idl.ypp" /* yacc.c:1651 */
{
-// IDL_SEQUENCE
(yyval.ntval) = AST_Decl::NT_sequence;
}
-#line 9380 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9440 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 527:
-#line 6484 "fe/idl.ypp" /* yacc.c:1646 */
+ case 545:
+#line 6408 "fe/idl.ypp" /* yacc.c:1651 */
{
-// IDL_INTERFACE
(yyval.ntval) = AST_Decl::NT_interface;
}
-#line 9389 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9448 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 528:
-#line 6489 "fe/idl.ypp" /* yacc.c:1646 */
+ case 546:
+#line 6412 "fe/idl.ypp" /* yacc.c:1651 */
{
-// IDL_VALUETYPE
(yyval.ntval) = AST_Decl::NT_valuetype;
}
-#line 9398 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9456 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 529:
-#line 6494 "fe/idl.ypp" /* yacc.c:1646 */
+ case 547:
+#line 6416 "fe/idl.ypp" /* yacc.c:1651 */
{
-// IDL_ENUM
(yyval.ntval) = AST_Decl::NT_enum;
}
-#line 9407 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9464 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 530:
-#line 6499 "fe/idl.ypp" /* yacc.c:1646 */
+ case 548:
+#line 6420 "fe/idl.ypp" /* yacc.c:1651 */
{
-// IDL_EXCEPTION
(yyval.ntval) = AST_Decl::NT_except;
}
-#line 9416 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9472 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 531:
-#line 6504 "fe/idl.ypp" /* yacc.c:1646 */
+ case 549:
+#line 6424 "fe/idl.ypp" /* yacc.c:1651 */
{
-// IDL_CONST const_type
(yyval.ntval) = AST_Decl::NT_const;
t_param_const_type = (yyvsp[0].etval);
}
-#line 9426 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9481 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 532:
-#line 6513 "fe/idl.ypp" /* yacc.c:1646 */
+ case 550:
+#line 6432 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_formal_parameter : formal_parameter formal_parameters
if ((yyvsp[0].plval) == 0)
{
- ACE_NEW_RETURN ((yyvsp[0].plval),
- FE_Utils::T_PARAMLIST_INFO,
- 1);
+ ACE_NEW_RETURN ((yyvsp[0].plval), FE_Utils::T_PARAMLIST_INFO, 1);
}
(yyvsp[0].plval)->enqueue_head (*(yyvsp[-1].pival));
@@ -9457,51 +9509,37 @@ yyreduce:
(yyval.plval) = (yyvsp[0].plval);
}
-#line 9461 "fe/idl.tab.cpp" /* yacc.c:1646 */
- break;
-
- case 533:
-#line 6547 "fe/idl.ypp" /* yacc.c:1646 */
- {
-// formal_parameters : formal_parameters ','
- // Maybe add a new parse state to set here.
- }
-#line 9470 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9513 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 534:
-#line 6552 "fe/idl.ypp" /* yacc.c:1646 */
+ case 551:
+#line 6463 "fe/idl.ypp" /* yacc.c:1651 */
{
-// formal_parameter
- if ((yyvsp[-3].plval) == 0)
+ if ((yyvsp[-2].plval) == 0)
{
- ACE_NEW_RETURN ((yyvsp[-3].plval),
- FE_Utils::T_PARAMLIST_INFO,
- 1);
+ ACE_NEW_RETURN ((yyvsp[-2].plval), FE_Utils::T_PARAMLIST_INFO, 1);
}
- (yyvsp[-3].plval)->enqueue_tail (*(yyvsp[0].pival));
- (yyval.plval) = (yyvsp[-3].plval);
+ (yyvsp[-2].plval)->enqueue_tail (*(yyvsp[0].pival));
+ (yyval.plval) = (yyvsp[-2].plval);
delete (yyvsp[0].pival);
(yyvsp[0].pival) = 0;
}
-#line 9490 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9530 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 535:
-#line 6568 "fe/idl.ypp" /* yacc.c:1646 */
+ case 552:
+#line 6476 "fe/idl.ypp" /* yacc.c:1651 */
{
-// /* EMPTY */
(yyval.plval) = 0;
}
-#line 9499 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9538 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 536:
-#line 6576 "fe/idl.ypp" /* yacc.c:1646 */
+ case 553:
+#line 6483 "fe/idl.ypp" /* yacc.c:1651 */
{
-// formal_parameter : formal_parameter_type IDENTIFIER
ACE_NEW_RETURN ((yyval.pival),
FE_Utils::T_Param_Info,
@@ -9525,11 +9563,11 @@ yyreduce:
tao_enum_constant_decl = 0;
}
}
-#line 9529 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9567 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 537:
-#line 6602 "fe/idl.ypp" /* yacc.c:1646 */
+ case 554:
+#line 6508 "fe/idl.ypp" /* yacc.c:1651 */
{
ACE_NEW_RETURN ((yyval.pival),
FE_Utils::T_Param_Info,
@@ -9544,30 +9582,22 @@ yyreduce:
ACE::strdelete ((yyvsp[0].strval));
(yyvsp[0].strval) = 0;
}
-#line 9548 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9586 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 538:
-#line 6620 "fe/idl.ypp" /* yacc.c:1646 */
+ case 555:
+#line 6526 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_formal_parameter_name : formal_parameter_name formal_parameter_names
- ACE_NEW_RETURN ((yyval.slval),
- UTL_StrList ((yyvsp[-1].sval),
- (yyvsp[0].slval)),
- 1);
+ ACE_NEW_RETURN ((yyval.slval), UTL_StrList ((yyvsp[-1].sval), (yyvsp[0].slval)), 1);
}
-#line 9560 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9594 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 539:
-#line 6631 "fe/idl.ypp" /* yacc.c:1646 */
+ case 556:
+#line 6533 "fe/idl.ypp" /* yacc.c:1651 */
{
-// formal_parameter_names : formal_parameter_names ',' formal_parameter_name
UTL_StrList *sl = 0;
- ACE_NEW_RETURN (sl,
- UTL_StrList ((yyvsp[0].sval),
- 0),
- 1);
+ ACE_NEW_RETURN (sl, UTL_StrList ((yyvsp[0].sval), 0), 1);
if ((yyvsp[-2].slval) == 0)
{
@@ -9579,42 +9609,38 @@ yyreduce:
(yyval.slval) = (yyvsp[-2].slval);
}
}
-#line 9583 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9613 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 540:
-#line 6650 "fe/idl.ypp" /* yacc.c:1646 */
+ case 557:
+#line 6548 "fe/idl.ypp" /* yacc.c:1651 */
{
-// /* EMPTY */
(yyval.slval) = 0;
}
-#line 9592 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9621 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 541:
-#line 6658 "fe/idl.ypp" /* yacc.c:1646 */
+ case 558:
+#line 6555 "fe/idl.ypp" /* yacc.c:1651 */
{
-// formal_parameter_name : IDENTIFIER
ACE_NEW_RETURN ((yyval.sval),
UTL_String ((yyvsp[0].strval), true),
1);
}
-#line 9603 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9631 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 542:
-#line 6668 "fe/idl.ypp" /* yacc.c:1646 */
+ case 559:
+#line 6564 "fe/idl.ypp" /* yacc.c:1651 */
{
-// porttype_decl : IDL_PORTTYPE
idl_global->set_parse_state (IDL_GlobalData::PS_PorttypeSeen);
}
-#line 9612 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9639 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 543:
-#line 6673 "fe/idl.ypp" /* yacc.c:1646 */
+ case 560:
+#line 6568 "fe/idl.ypp" /* yacc.c:1651 */
{
-// annotations IDENTIFIER
idl_global->set_parse_state (IDL_GlobalData::PS_PorttypeIDSeen);
UTL_Scope *s = idl_global->scopes ().top_non_null ();
@@ -9631,116 +9657,103 @@ yyreduce:
// Push it on the scopes stack.
idl_global->scopes ().push (p);
}
-#line 9635 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9661 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 544:
-#line 6692 "fe/idl.ypp" /* yacc.c:1646 */
+ case 561:
+#line 6586 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '{'
idl_global->set_parse_state (IDL_GlobalData::PS_PorttypeSqSeen);
}
-#line 9644 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9669 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 545:
-#line 6697 "fe/idl.ypp" /* yacc.c:1646 */
+ case 562:
+#line 6590 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_port_export
idl_global->set_parse_state (IDL_GlobalData::PS_PorttypeBodySeen);
}
-#line 9653 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9677 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 546:
-#line 6702 "fe/idl.ypp" /* yacc.c:1646 */
+ case 563:
+#line 6594 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_PorttypeQsSeen);
// Done with this port type - pop it off the scopes stack.
idl_global->scopes ().pop ();
}
-#line 9665 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9688 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 547:
-#line 6713 "fe/idl.ypp" /* yacc.c:1646 */
+ case 564:
+#line 6604 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_port_export : port_export port_exports
}
-#line 9673 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9695 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 548:
-#line 6720 "fe/idl.ypp" /* yacc.c:1646 */
+ case 565:
+#line 6610 "fe/idl.ypp" /* yacc.c:1651 */
{
-// port_exports : port_exports port_export
}
-#line 9681 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9702 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 549:
-#line 6724 "fe/idl.ypp" /* yacc.c:1646 */
+ case 566:
+#line 6613 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | /* EMPTY */
}
-#line 9689 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9709 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 550:
-#line 6731 "fe/idl.ypp" /* yacc.c:1646 */
+ case 567:
+#line 6619 "fe/idl.ypp" /* yacc.c:1651 */
{
-// port_export : provides_decl
}
-#line 9697 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9716 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 551:
-#line 6735 "fe/idl.ypp" /* yacc.c:1646 */
+ case 568:
+#line 6622 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
}
-#line 9705 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9723 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 552:
-#line 6739 "fe/idl.ypp" /* yacc.c:1646 */
+ case 569:
+#line 6625 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | uses_decl
}
-#line 9713 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9730 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 553:
-#line 6743 "fe/idl.ypp" /* yacc.c:1646 */
+ case 570:
+#line 6628 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
}
-#line 9721 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9737 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 554:
-#line 6747 "fe/idl.ypp" /* yacc.c:1646 */
+ case 571:
+#line 6631 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | attribute
idl_global->set_parse_state (IDL_GlobalData::PS_AttrDeclSeen);
}
-#line 9730 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9745 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 555:
-#line 6752 "fe/idl.ypp" /* yacc.c:1646 */
+ case 572:
+#line 6635 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
}
-#line 9738 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9752 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 556:
-#line 6759 "fe/idl.ypp" /* yacc.c:1646 */
+ case 573:
+#line 6641 "fe/idl.ypp" /* yacc.c:1651 */
{
-// extended_port_decl : IDL_PORT scoped_name IDENTIFIER
idl_global->set_parse_state (IDL_GlobalData::PS_ExtendedPortDeclSeen);
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Decl *d =
@@ -9808,13 +9821,12 @@ yyreduce:
delete (yyvsp[-1].idlist);
(yyvsp[-1].idlist) = 0;
}
-#line 9812 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9825 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 557:
-#line 6829 "fe/idl.ypp" /* yacc.c:1646 */
+ case 574:
+#line 6710 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | IDL_MIRRORPORT scoped_name IDENTIFIER
idl_global->set_parse_state (IDL_GlobalData::PS_MirrorPortDeclSeen);
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Decl *d =
@@ -9860,13 +9872,12 @@ yyreduce:
delete (yyvsp[-1].idlist);
(yyvsp[-1].idlist) = 0;
}
-#line 9864 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9876 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 558:
-#line 6880 "fe/idl.ypp" /* yacc.c:1646 */
+ case 575:
+#line 6760 "fe/idl.ypp" /* yacc.c:1651 */
{
-// at_least_one_actual_parameter : annotations actual_parameter actual_parameters
if ((yyvsp[0].alval) == 0)
{
ACE_NEW_RETURN ((yyvsp[0].alval),
@@ -9877,13 +9888,12 @@ yyreduce:
(yyvsp[0].alval)->enqueue_head ((yyvsp[-1].dcval));
(yyval.alval) = (yyvsp[0].alval);
}
-#line 9881 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9892 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 559:
-#line 6896 "fe/idl.ypp" /* yacc.c:1646 */
+ case 576:
+#line 6775 "fe/idl.ypp" /* yacc.c:1651 */
{
-// actual_parameters : actual_parameters ',' annotations actual_parameter
if ((yyvsp[-3].alval) == 0)
{
ACE_NEW_RETURN ((yyvsp[-3].alval),
@@ -9894,22 +9904,20 @@ yyreduce:
(yyvsp[-3].alval)->enqueue_tail ((yyvsp[0].dcval));
(yyval.alval) = (yyvsp[-3].alval);
}
-#line 9898 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9908 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 560:
-#line 6909 "fe/idl.ypp" /* yacc.c:1646 */
+ case 577:
+#line 6787 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | /* EMPTY */
(yyval.alval) = 0;
}
-#line 9907 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9916 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 561:
-#line 6917 "fe/idl.ypp" /* yacc.c:1646 */
+ case 578:
+#line 6794 "fe/idl.ypp" /* yacc.c:1651 */
{
-// actual_parameter : expression
// To avoid grammar conflicts with this LALR(1) parser,
// we take advantage of the fact that an expression can
// be a scoped name. At that lower level, we create an
@@ -9964,31 +9972,28 @@ yyreduce:
0);
}
}
-#line 9968 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9976 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 563:
-#line 6981 "fe/idl.ypp" /* yacc.c:1646 */
+ case 580:
+#line 6857 "fe/idl.ypp" /* yacc.c:1651 */
{
-// connector_header : IDL_CONNECTOR
idl_global->set_parse_state (IDL_GlobalData::PS_ConnectorSeen);
}
-#line 9977 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9984 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 564:
-#line 6986 "fe/idl.ypp" /* yacc.c:1646 */
+ case 581:
+#line 6861 "fe/idl.ypp" /* yacc.c:1651 */
{
-// annotations IDENTIFIER
idl_global->set_parse_state (IDL_GlobalData::PS_ConnectorIDSeen);
}
-#line 9986 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 9992 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 565:
-#line 6991 "fe/idl.ypp" /* yacc.c:1646 */
+ case 582:
+#line 6865 "fe/idl.ypp" /* yacc.c:1651 */
{
-// component_inheritance_spec
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Connector *parent = 0;
bool so_far_so_good = true;
@@ -10039,113 +10044,102 @@ yyreduce:
idl_global->scopes ().push (c);
}
}
-#line 10043 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 10048 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 566:
-#line 7047 "fe/idl.ypp" /* yacc.c:1646 */
+ case 583:
+#line 6920 "fe/idl.ypp" /* yacc.c:1651 */
{
-// connector_body " '{'
idl_global->set_parse_state (IDL_GlobalData::PS_ConnectorSqSeen);
}
-#line 10052 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 10056 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 567:
-#line 7052 "fe/idl.ypp" /* yacc.c:1646 */
+ case 584:
+#line 6924 "fe/idl.ypp" /* yacc.c:1651 */
{
-// connector_exports
idl_global->set_parse_state (IDL_GlobalData::PS_ConnectorBodySeen);
}
-#line 10061 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 10064 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 568:
-#line 7057 "fe/idl.ypp" /* yacc.c:1646 */
+ case 585:
+#line 6928 "fe/idl.ypp" /* yacc.c:1651 */
{
-// '}
idl_global->set_parse_state (IDL_GlobalData::PS_ConnectorQsSeen);
// Done with this connector - pop it off the scope stack.
idl_global->scopes ().pop ();
}
-#line 10073 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 10075 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 571:
-#line 7073 "fe/idl.ypp" /* yacc.c:1646 */
+ case 588:
+#line 6943 "fe/idl.ypp" /* yacc.c:1651 */
{
-// connector_export : provides_decl
idl_global->set_parse_state (IDL_GlobalData::PS_ProvidesDeclSeen);
}
-#line 10082 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 10083 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 572:
-#line 7078 "fe/idl.ypp" /* yacc.c:1646 */
+ case 589:
+#line 6947 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
-#line 10091 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 10091 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 573:
-#line 7083 "fe/idl.ypp" /* yacc.c:1646 */
+ case 590:
+#line 6951 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | uses_decl
idl_global->set_parse_state (IDL_GlobalData::PS_UsesDeclSeen);
}
-#line 10100 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 10099 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 574:
-#line 7088 "fe/idl.ypp" /* yacc.c:1646 */
+ case 591:
+#line 6955 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
-#line 10109 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 10107 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 575:
-#line 7093 "fe/idl.ypp" /* yacc.c:1646 */
+ case 592:
+#line 6959 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | attribute
idl_global->set_parse_state (IDL_GlobalData::PS_AttrDeclSeen);
}
-#line 10118 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 10115 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 576:
-#line 7098 "fe/idl.ypp" /* yacc.c:1646 */
+ case 593:
+#line 6963 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
-#line 10127 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 10123 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 577:
-#line 7103 "fe/idl.ypp" /* yacc.c:1646 */
+ case 594:
+#line 6967 "fe/idl.ypp" /* yacc.c:1651 */
{
-// | extended_port_decl
idl_global->set_parse_state (IDL_GlobalData::PS_ExtendedPortDeclSeen);
}
-#line 10136 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 10131 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
- case 578:
-#line 7108 "fe/idl.ypp" /* yacc.c:1646 */
+ case 595:
+#line 6971 "fe/idl.ypp" /* yacc.c:1651 */
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
-#line 10145 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 10139 "fe/idl.tab.cpp" /* yacc.c:1651 */
break;
-#line 10149 "fe/idl.tab.cpp" /* yacc.c:1646 */
+#line 10143 "fe/idl.tab.cpp" /* yacc.c:1651 */
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
@@ -10373,7 +10367,7 @@ yyreturn:
#endif
return yyresult;
}
-#line 7114 "fe/idl.ypp" /* yacc.c:1906 */
+#line 6976 "fe/idl.ypp" /* yacc.c:1910 */
/* programs */
diff --git a/TAO/TAO_IDL/fe/idl.tab.hpp b/TAO/TAO_IDL/fe/idl.tab.hpp
index a14c0d7cc86..7e6713cd4ec 100644
--- a/TAO/TAO_IDL/fe/idl.tab.hpp
+++ b/TAO/TAO_IDL/fe/idl.tab.hpp
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.0.2. */
+/* A Bison parser, made by GNU Bison 3.1. */
/* Bison interface for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -127,16 +127,18 @@ extern int tao_yydebug;
IDL_LEFT_SHIFT = 337,
IDL_RIGHT_SHIFT = 338,
IDL_WCHAR_LITERAL = 339,
- IDL_WSTRING_LITERAL = 340
+ IDL_WSTRING_LITERAL = 340,
+ IDL_ANNOTATION_DECL = 341,
+ IDL_ANNOTATION_SYMBOL = 342
};
#endif
/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE YYSTYPE;
+
union YYSTYPE
{
-#line 152 "fe/idl.ypp" /* yacc.c:1909 */
+#line 158 "fe/idl.ypp" /* yacc.c:1913 */
AST_Decl *dcval; /* Decl value */
UTL_StrList *slval; /* String list */
@@ -173,9 +175,18 @@ union YYSTYPE
FE_Utils::T_Param_Info *pival; /* Template interface param */
FE_Utils::T_PARAMLIST_INFO *plval; /* List of template params */
FE_Utils::T_ARGLIST *alval; /* List of template args */
-
-#line 178 "fe/idl.tab.hpp" /* yacc.c:1909 */
+ AST_Annotation_Appl *annotation_val;
+ AST_Annotation_Appls *annotations_val;
+ AST_Annotation_Appl::Param *annotation_param_val;
+ AST_Annotation_Appl::Params *annotation_params_val;
+ AST_Annotation_Decl *annotation_decl_val;
+ AST_Decls *decls_val;
+ Decl_Annotations_Pair *decl_annotations_pair_val;
+
+#line 187 "fe/idl.tab.hpp" /* yacc.c:1913 */
};
+
+typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1
#endif
diff --git a/TAO/TAO_IDL/fe/idl.ypp b/TAO/TAO_IDL/fe/idl.ypp
index 0fb4ac1ac93..923357f130c 100644
--- a/TAO/TAO_IDL/fe/idl.ypp
+++ b/TAO/TAO_IDL/fe/idl.ypp
@@ -62,8 +62,9 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
*/
-/*
- * idl.ypp - YACC grammar for IDL 3.x
+/**
+ * \file idl.ypp
+ * \brief Bison grammar for IDL
*/
/* Declarations */
@@ -120,6 +121,10 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
#include "ast_visitor_tmpl_module_inst.h"
#include "ast_visitor_tmpl_module_ref.h"
#include "ast_visitor_context.h"
+#include "ast_annotation_appl.h"
+#include "ast_union_branch.h"
+#include "ast_enum_val.h"
+#include "ast_annotation_member.h"
#include "fe_declarator.h"
#include "fe_interface_header.h"
@@ -139,9 +144,10 @@ extern "C" int tao_yywrap (void);
extern char tao_yytext[];
extern int tao_yyleng;
AST_Enum *tao_enum_constant_decl = 0;
+AST_String *tao_string_decl = 0;
AST_Expression::ExprType t_param_const_type = AST_Expression::EV_none;
#define TAO_YYDEBUG_LEXER_TEXT (tao_yytext[tao_yyleng] = '\0', tao_yytext)
-// Force the pretty debugging code to compile.
+// Compile Optional Tracing Output for Parser, can be enabled with --bison-trace
#define YYDEBUG 1
%}
@@ -185,6 +191,13 @@ AST_Expression::ExprType t_param_const_type = AST_Expression::EV_none;
FE_Utils::T_Param_Info *pival; /* Template interface param */
FE_Utils::T_PARAMLIST_INFO *plval; /* List of template params */
FE_Utils::T_ARGLIST *alval; /* List of template args */
+ AST_Annotation_Appl *annotation_val;
+ AST_Annotation_Appls *annotations_val;
+ AST_Annotation_Appl::Param *annotation_param_val;
+ AST_Annotation_Appl::Params *annotation_params_val;
+ AST_Annotation_Decl *annotation_decl_val;
+ AST_Decls *decls_val;
+ Decl_Annotations_Pair *decl_annotations_pair_val;
}
/*
@@ -281,6 +294,9 @@ AST_Expression::ExprType t_param_const_type = AST_Expression::EV_none;
%token <wcval> IDL_WCHAR_LITERAL
%token <wsval> IDL_WSTRING_LITERAL
+%token IDL_ANNOTATION_DECL
+%token IDL_ANNOTATION_SYMBOL
+
/*
* These are production names:
*/
@@ -288,9 +304,10 @@ AST_Expression::ExprType t_param_const_type = AST_Expression::EV_none;
%type <dcval> type_spec simple_type_spec constructed_type_spec
%type <dcval> template_type_spec sequence_type_spec string_type_spec
%type <dcval> struct_type enum_type switch_type_spec union_type
-%type <dcval> array_declarator op_type_spec seq_head wstring_type_spec
+%type <dcval> array_declarator op_type_spec wstring_type_spec
%type <dcval> param_type_spec type_dcl type_declarator actual_parameter
%type <dcval> fixed_type_spec
+%type <dcval> definition fixed_definition module const_dcl struct_forward_type
%type <idlist> scoped_name interface_type component_inheritance_spec
%type <idlist> home_inheritance_spec primary_key_spec module_header
@@ -320,7 +337,7 @@ AST_Expression::ExprType t_param_const_type = AST_Expression::EV_none;
%type <exval> expression const_expr or_expr xor_expr and_expr shift_expr
%type <exval> add_expr mult_expr unary_expr primary_expr literal
-%type <exval> positive_int_expr array_dim
+%type <exval> positive_int_expr array_dim annotation_member_default
%type <ulval> case_label
@@ -329,6 +346,7 @@ AST_Expression::ExprType t_param_const_type = AST_Expression::EV_none;
%type <etval> const_type integer_type char_type boolean_type
%type <etval> floating_pt_type fixed_type any_type signed_int
%type <etval> unsigned_int base_type_spec octet_type object_type
+%type <etval> annotation_member_type
%type <dival> direction
@@ -346,12 +364,21 @@ AST_Expression::ExprType t_param_const_type = AST_Expression::EV_none;
%type <ntval> formal_parameter_type
%type <pival> formal_parameter
-
%type <plval> formal_parameters at_least_one_formal_parameter
%type <sval> formal_parameter_name
%type <alval> actual_parameters at_least_one_actual_parameter
+
+%type <annotations_val> at_least_one_annotation annotations_maybe
+%type <annotation_val> annotation_appl
+%type <annotation_params_val> annotation_appl_params_maybe annotation_appl_params
+%type <annotation_params_val> named_annotation_appl_params more_named_annotation_appl_params
+%type <annotation_param_val> named_annotation_appl_param
+%type <decl_annotations_pair_val> seq_head
+
+%type <decls_val> member_i;
+%type <vival> visibility;
%%
/*
@@ -360,181 +387,190 @@ AST_Expression::ExprType t_param_const_type = AST_Expression::EV_none;
start : definitions ;
definitions
- : definitions annotations definition
- | /* EMPTY */
+ : at_least_one_definition
+ | %empty
+ ;
+
+at_least_one_definition
+ /*
+ * This is broken up into 2 rules to avoid a grammer ambiguity caused
+ * by annotations which causes shift/reduce conflicts in bison.
+ */
+ : definitions at_least_one_annotation definition
+ {
+ AST_Decl *d = $3;
+ if (d)
+ {
+ d->annotation_appls ($2);
+ }
+ else
+ {
+ idl_global->err ()-> unsupported_warning(
+ "Annotating this type of definition is not supported");
+ }
+ }
+ | definitions definition
+ {
+ }
;
definition
: fixed_definition
{
+ $$ = $1;
}
| template_module ';'
{
+ $$ = 0;
}
| template_module_inst ';'
{
+ $$ = 0;
}
;
-at_least_one_definition
- : definitions annotations definition
- ;
-
fixed_definition
- :
- /* TODO:
- annotation_dcl
+ : annotation_dcl
{
idl_global->set_parse_state (IDL_GlobalData::PS_AnnotationDeclSeen);
}
- | */
- type_dcl
+ ';'
+ {
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ $$ = 0;
+ }
+ | type_dcl
{
-// fixed_definition : type_dcl
idl_global->set_parse_state (IDL_GlobalData::PS_TypeDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ $$ = $1;
}
| typeid_dcl
{
-// | typeid_dcl
idl_global->set_parse_state (IDL_GlobalData::PS_TypeIdDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ $$ = 0;
}
| typeprefix_dcl
{
-// | typeprefix_dcl
idl_global->set_parse_state (IDL_GlobalData::PS_TypePrefixDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ $$ = 0;
}
| const_dcl
{
-// | const_dcl
idl_global->set_parse_state (IDL_GlobalData::PS_ConstDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ $$ = $1;
}
| exception
{
-// | exception
idl_global->set_parse_state (IDL_GlobalData::PS_ExceptDeclSeen);
}
- ';'
+ ';'
{
-// ';'
- idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ $$ = 0;
}
| interface_def
{
-// | interface_def
idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ $$ = 0;
}
| module
{
-// | module
idl_global->set_parse_state (IDL_GlobalData::PS_ModuleDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ $$ = $1;
}
| value_def
{
-// | value_def
idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ $$ = 0;
}
| component
{
-// | component
idl_global->set_parse_state (IDL_GlobalData::PS_ComponentDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ $$ = 0;
}
| home_decl
{
-// | home_decl
idl_global->set_parse_state (IDL_GlobalData::PS_HomeDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ $$ = 0;
}
| event
{
-// | event
idl_global->set_parse_state (IDL_GlobalData::PS_EventDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ $$ = 0;
}
| porttype_decl
{
-// | porttype_decl
idl_global->set_parse_state (IDL_GlobalData::PS_PorttypeDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ $$ = 0;
}
| connector_decl
{
-// | connector_decl
idl_global->set_parse_state (IDL_GlobalData::PS_ConnectorDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
+ $$ = 0;
}
| error
{
-// | error
idl_global->err()->syntax_error (idl_global->parse_state());
}
';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
yyerrok;
+ $$ = 0;
}
;
module_header
: IDL_MODULE
{
-// module_header : IDL_MODULE
idl_global->set_parse_state (IDL_GlobalData::PS_ModuleSeen);
}
scoped_name
@@ -546,7 +582,6 @@ module_header
module
: module_header
{
-// module : module_header
idl_global->set_parse_state (IDL_GlobalData::PS_ModuleIDSeen);
// The module_header rule is common to template module, fixed
@@ -569,8 +604,7 @@ module
*/
if (s != 0)
{
- m = idl_global->gen ()->create_module (s,
- $1);
+ m = idl_global->gen ()->create_module (s, $1);
(void) s->fe_add_module (m);
}
@@ -582,26 +616,26 @@ module
* Push it on the stack
*/
idl_global->scopes ().push (m);
+
+ $<dcval>$ = m;
}
'{'
{
-// '{'
- idl_global->set_parse_state (IDL_GlobalData::PS_ModuleSqSeen);
+ idl_global->set_parse_state (IDL_GlobalData::PS_ModuleSqSeen);
}
at_least_one_definition
{
-// at_least_one_definition
idl_global->set_parse_state (IDL_GlobalData::PS_ModuleBodySeen);
}
'}'
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_ModuleQsSeen);
/*
* Finished with this module - pop it from the scope stack.
*/
idl_global->scopes ().pop ();
+ $$ = $<dcval>2;
}
;
@@ -615,7 +649,6 @@ template_module_header
template_module
: template_module_header
{
-// template_module : template_module_header
// The module_header rule is common to template module, fixed
// module and instantiated template module. In the last
// case, a fully scoped name is allowed, but here we
@@ -640,7 +673,6 @@ template_module
}
'>'
{
-// '>'
idl_global->set_parse_state (IDL_GlobalData::PS_TmplModuleParamsSeen);
AST_Template_Module *tm =
@@ -679,7 +711,6 @@ template_module
}
'}'
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_TmplModuleQsSeen);
/*
@@ -702,8 +733,8 @@ at_least_one_tpl_definition
;
tpl_definitions
- : tpl_definitions annotations tpl_definition
- | /* EMPTY */
+ : tpl_definitions tpl_definition
+ | %empty
;
tpl_definition
@@ -714,19 +745,16 @@ tpl_definition
template_module_ref
: IDL_ALIAS scoped_name
{
-// template_module_ref : IDL_ALIAS scoped_name
idl_global->set_parse_state (
IDL_GlobalData::PS_ModuleRefSeen);
}
'<' at_least_one_formal_parameter_name '>'
{
-// '<' at_least_one_formal_parameter_name '>'
idl_global->set_parse_state (
IDL_GlobalData::PS_ModuleRefParamsSeen);
}
defining_id
{
-// defining_id
idl_global->set_parse_state (
IDL_GlobalData::PS_ModuleRefIDSeen);
@@ -808,19 +836,16 @@ template_module_ref
template_module_inst
: template_module_header
{
-// template_module_inst : template_module_header
idl_global->set_parse_state (
IDL_GlobalData::PS_InstModuleSeen);
}
at_least_one_actual_parameter '>'
{
-// at_least_one_actual_parameter '>'
idl_global->set_parse_state (
IDL_GlobalData::PS_InstModuleArgsSeen);
}
defining_id
{
-// defining_id
idl_global->set_parse_state (
IDL_GlobalData::PS_InstModuleIDSeen);
@@ -891,7 +916,6 @@ interface_def
interface :
interface_header
{
-// interface : interface_header
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Interface *i = 0;
@@ -930,17 +954,14 @@ interface :
}
'{'
{
-// '{'
idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceSqSeen);
}
exports
{
-// exports
idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceBodySeen);
}
'}'
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceQsSeen);
/*
@@ -953,12 +974,10 @@ interface :
interface_decl:
IDL_INTERFACE
{
-// interface_decl : IDL_INTERFACE
idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceSeen);
}
defining_id
{
-// defining_id
idl_global->set_parse_state (IDL_GlobalData::PS_InterfaceIDSeen);
$$ = $3;
}
@@ -967,7 +986,6 @@ interface_decl:
interface_header :
interface_decl inheritance_spec
{
-// interface_header : interface_decl inheritance_spec
idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
if ($2 != 0 && $2->truncatable ())
@@ -1005,7 +1023,6 @@ interface_header :
|
IDL_LOCAL interface_decl inheritance_spec
{
-// | IDL_LOCAL interface_decl inheritance_spec
idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
/*
@@ -1036,7 +1053,6 @@ interface_header :
|
IDL_ABSTRACT interface_decl inheritance_spec
{
-// | IDL_ABSTRACT interface_decl inheritance_spec
idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
/*
@@ -1069,18 +1085,15 @@ interface_header :
inheritance_spec
: ':' opt_truncatable
{
-// inheritance_spec : ':' opt_truncatable
idl_global->set_parse_state (IDL_GlobalData::PS_InheritColonSeen);
}
at_least_one_scoped_name
{
-// at_least_one_scoped_name
$4->truncatable ($2);
$$ = $4;
}
- | /* EMPTY */
+ | %empty
{
-/* | EMPTY */
$$ = 0;
}
;
@@ -1095,14 +1108,7 @@ value_def
valuetype
: IDL_CUSTOM value_concrete_decl
{
-// valuetype : IDL_CUSTOM value_concrete_decl
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("error in %C line %d\n"),
- idl_global->filename ()->get_string (),
- idl_global->lineno ()));
- ACE_DEBUG ((LM_DEBUG,
- ACE_TEXT ("Sorry, I (TAO_IDL) can't handle")
- ACE_TEXT (" custom yet\n")));
+ idl_global->err ()->unsupported_error ("custom is not supported");
}
| value_concrete_decl
;
@@ -1110,7 +1116,6 @@ valuetype
value_concrete_decl :
value_header
{
-// value_concrete_decl : value_header
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_ValueType *v = 0;
AST_Interface *i = 0;
@@ -1154,17 +1159,14 @@ value_concrete_decl :
}
'{'
{
-// '{'
idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeSqSeen);
}
value_elements
{
-// value_elements
idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeBodySeen);
}
'}'
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeQsSeen);
AST_ValueType *vt =
@@ -1188,7 +1190,6 @@ value_abs_decl :
IDL_ABSTRACT
value_header
{
-// value_abs_decl : IDL_ABSTRACT value_header
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_ValueType *v = 0;
AST_Interface *i = 0;
@@ -1232,17 +1233,14 @@ value_abs_decl :
}
'{'
{
-// '{'
idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeSqSeen);
}
exports
{
-// exports
idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeBodySeen);
}
'}'
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeQsSeen);
/*
@@ -1256,12 +1254,10 @@ value_header :
value_decl
inheritance_spec
{
-// value_header : value_decl inheritance_spec
idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
}
supports_spec
{
-// supports_spec
idl_global->set_parse_state (IDL_GlobalData::PS_SupportSpecSeen);
UTL_ScopedName *sn = 0;
@@ -1296,12 +1292,10 @@ value_header :
value_decl
: IDL_VALUETYPE
{
-// value_decl : IDL_VALUETYPE
idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeSeen);
}
defining_id
{
-// defining_id
idl_global->set_parse_state (IDL_GlobalData::PS_ValueTypeIDSeen);
$$ = $3;
}
@@ -1310,12 +1304,10 @@ value_decl
opt_truncatable :
IDL_TRUNCATABLE
{
-// opt_truncatable : IDL_TRUNCATABLE
$$ = true;
}
- | /* EMPTY */
+ | %empty
{
-/* | EMPTY */
$$ = false;
}
;
@@ -1324,10 +1316,9 @@ supports_spec :
IDL_SUPPORTS
at_least_one_scoped_name
{
-// supports_spec : IDL_SUPPORTS at_least_one_scoped_name
$$ = $2;
}
- | /* EMPTY */
+ | %empty
{
/* | EMPTY */
$$ = 0;
@@ -1338,7 +1329,6 @@ value_forward_decl :
IDL_ABSTRACT
value_decl
{
-// value_forward_decl : IDL_ABSTRACT value_decl
UTL_Scope *s = idl_global->scopes ().top_non_null ();
UTL_ScopedName n ($2,
0);
@@ -1363,7 +1353,6 @@ value_forward_decl :
|
value_decl
{
-// | value_decl
UTL_Scope *s = idl_global->scopes ().top_non_null ();
UTL_ScopedName n ($1,
0);
@@ -1390,7 +1379,6 @@ value_forward_decl :
value_box_decl
: value_decl type_spec /* in this order %!?*/
{
-// value_box_decl : value_decl type_spec
idl_global->set_parse_state (IDL_GlobalData::PS_ValueBoxDeclSeen);
UTL_Scope *s = idl_global->scopes ().top_non_null ();
@@ -1454,123 +1442,113 @@ value_box_decl
value_elements
: value_elements value_element
- | /* EMPTY */
+ | %empty
;
value_element
: state_member
| export
| init_decl
- ';'
+ ';'
;
-state_member
+visibility
: IDL_PUBLIC
{
-// state_member : IDL_PUBLIC
- /* is $0 to member_i */
- $<vival>$ = AST_Field::vis_PUBLIC;
- }
- member_i
- {
-// member_i
+ $$ = AST_Field::vis_PUBLIC;
}
| IDL_PRIVATE
{
-// IDL_PRIVATE
- /* is $0 to member_i */
- $<vival>$ = AST_Field::vis_PRIVATE;
+ $$ = AST_Field::vis_PRIVATE;
}
- member_i
+ ;
+
+state_member
+ : visibility member_i
{
-// member_i
+ if ($2)
+ {
+ AST_Decls &decls = *$2;
+ for (size_t i = 0; i < decls.size (); i++)
+ {
+ AST_Field * field = dynamic_cast<AST_Field*>(decls[i]);
+ if (field)
+ {
+ field->visibility ($1);
+ }
+ }
+ }
}
;
exports
: exports export
- | /* EMPTY */
+ | %empty
;
export
: type_dcl
{
-// export : type_dcl
idl_global->set_parse_state (IDL_GlobalData::PS_TypeDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
| typeid_dcl
{
-// | typeid_dcl
idl_global->set_parse_state (IDL_GlobalData::PS_TypeIdDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
| typeprefix_dcl
{
-// | typeprefix_dcl
idl_global->set_parse_state (IDL_GlobalData::PS_TypePrefixDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
| const_dcl
{
-// | const_dcl
idl_global->set_parse_state (IDL_GlobalData::PS_ConstDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state(IDL_GlobalData::PS_NoState);
}
| exception
{
-// | exception
idl_global->set_parse_state (IDL_GlobalData::PS_ExceptDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
| attribute
{
-// | attribute
idl_global->set_parse_state (IDL_GlobalData::PS_AttrDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
| operation
{
-// | operation
idl_global->set_parse_state (IDL_GlobalData::PS_OpDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
| error
{
-// | error
idl_global->err()->syntax_error (idl_global->parse_state());
}
';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
yyerrok;
}
@@ -1579,7 +1557,6 @@ export
at_least_one_scoped_name :
scoped_name scoped_names
{
-// at_least_one_scoped_name : scoped_name scoped_names
ACE_NEW_RETURN ($<nlval>$,
UTL_NameList ($1,
$2),
@@ -1591,12 +1568,10 @@ scoped_names
: scoped_names
','
{
-// scoped_names : scoped_names ','
idl_global->set_parse_state (IDL_GlobalData::PS_SNListCommaSeen);
}
scoped_name
{
-// scoped_name
idl_global->set_parse_state (IDL_GlobalData::PS_ScopedNameSeen);
UTL_NameList *nl = 0;
@@ -1615,9 +1590,8 @@ scoped_names
$<nlval>$ = $1;
}
}
- | /* EMPTY */
+ | %empty
{
-/* | EMPTY */
$<nlval>$ = 0;
}
;
@@ -1625,7 +1599,6 @@ scoped_names
scoped_name
: id
{
-// scoped_name : id
idl_global->set_parse_state (IDL_GlobalData::PS_SN_IDSeen);
ACE_NEW_RETURN ($$,
@@ -1635,12 +1608,10 @@ scoped_name
}
| IDL_SCOPE_DELIMITOR
{
-// | IDL_SCOPE_DELIMITOR
idl_global->set_parse_state (IDL_GlobalData::PS_ScopeDelimSeen);
}
id
{
-// id
idl_global->set_parse_state (IDL_GlobalData::PS_SN_IDSeen);
Identifier *id = 0;
@@ -1662,7 +1633,6 @@ scoped_name
| scoped_name
IDL_SCOPE_DELIMITOR
{
-// | scoped_name IDL_SCOPE_DELIMITOR
idl_global->set_parse_state (IDL_GlobalData::PS_ScopeDelimSeen);
// This cleans up all the non-global "::"s in scoped names.
@@ -1673,7 +1643,6 @@ scoped_name
}
id
{
-// id
idl_global->set_parse_state (IDL_GlobalData::PS_SN_IDSeen);
UTL_IdList *sn = 0;
@@ -1688,7 +1657,6 @@ scoped_name
id : IDENTIFIER
{
-// id: IDENTIFIER
ACE_NEW_RETURN ($$,
Identifier ($1),
1);
@@ -1697,25 +1665,21 @@ id : IDENTIFIER
}
;
-defining_id : annotations IDENTIFIER
+defining_id : IDENTIFIER
{
/* defining_id is a defining identifier
whereas id is usually a reference to a defining identifier */
- ACE_NEW_RETURN ($$,
- Identifier ($2),
- 1);
- ACE::strdelete ($2);
- $2 = 0;
+ ACE_NEW_RETURN ($$, Identifier ($1), 1);
+ ACE::strdelete ($1);
+ $1 = 0;
}
;
interface_forward :
interface_decl
{
-// interface_forward : interface_decl
UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ($1,
- 0);
+ UTL_ScopedName n ($1, 0);
if (ACE_OS::strcmp ($1->get_string (),
"TypeCode") == 0
@@ -1758,7 +1722,6 @@ interface_forward :
|
IDL_LOCAL interface_decl
{
-// | IDL_LOCAL interface_decl
UTL_Scope *s = idl_global->scopes ().top_non_null ();
UTL_ScopedName n ($2,
0);
@@ -1786,7 +1749,6 @@ interface_forward :
|
IDL_ABSTRACT interface_decl
{
-// | IDL_ABSTRACT interface_decl
UTL_Scope *s = idl_global->scopes ().top_non_null ();
UTL_ScopedName n ($2,
0);
@@ -1816,29 +1778,25 @@ interface_forward :
const_dcl :
IDL_CONST
{
-// const_dcl : IDL_CONST
idl_global->set_parse_state (IDL_GlobalData::PS_ConstSeen);
}
const_type
{
-// const_type
idl_global->set_parse_state (IDL_GlobalData::PS_ConstTypeSeen);
}
defining_id
{
-// defining_id
idl_global->set_parse_state (IDL_GlobalData::PS_ConstIDSeen);
}
'='
{
-// '='
idl_global->set_parse_state (IDL_GlobalData::PS_ConstAssignSeen);
}
expression
{
-// expression
- UTL_ScopedName n ($5,
- 0);
+ $$ = 0;
+ UTL_ScopedName n ($5, 0);
+
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Constant *c = 0;
idl_global->set_parse_state (IDL_GlobalData::PS_ConstExprSeen);
@@ -1849,28 +1807,24 @@ const_dcl :
*/
if ($9 != 0 && s != 0)
{
- AST_Param_Holder *param_holder =
- $9->param_holder ();
+ AST_Param_Holder *param_holder = $9->param_holder ();
AST_Expression::AST_ExprValue *result =
- $9->check_and_coerce ($3,
- tao_enum_constant_decl);
+ $9->check_and_coerce ($3, tao_enum_constant_decl);
tao_enum_constant_decl = 0;
// If the expression is a template parameter place
// holder, 'result' will be 0, but it's ok.
if (result == 0 && param_holder == 0)
{
- idl_global->err ()->coercion_error ($9,
- $3);
+ idl_global->err ()->coercion_error ($9, $3);
$9->destroy ();
delete $9;
$9 = 0;
}
else
{
- AST_Expression::ExprType et =
- $3;
+ AST_Expression::ExprType et = $3;
if (param_holder != 0
&& et != param_holder->info ()->const_type_)
@@ -1880,23 +1834,19 @@ const_dcl :
}
else
{
- c =
- idl_global->gen ()->create_constant (
- $3,
- $9,
- &n);
-
+ c = idl_global->gen ()->create_constant ($3, $9, &n);
(void) s->fe_add_constant (c);
+ $$ = c;
}
}
- $5->destroy ();
- delete $5;
- $5 = 0;
-
delete result;
result = 0;
}
+
+ $5->destroy ();
+ delete $5;
+ $5 = 0;
}
;
@@ -1909,24 +1859,14 @@ const_type
| fixed_type
| string_type_spec
{
-// const_type
-// : integer_type
-// | char_type
-// | octet_type
-// | boolean_type
-// | floating_pt_type
-// | fixed_type
-// | string_type_spec
$$ = AST_Expression::EV_string;
}
| wstring_type_spec
{
-// | wstring_type_spec
$$ = AST_Expression::EV_wstring;
}
| scoped_name
{
-// | scoped_name
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_PredefinedType *c = 0;
AST_Typedef *t = 0;
@@ -1960,19 +1900,19 @@ const_type
{
c = AST_PredefinedType::narrow_from_decl (d);
- $<etval>$ = FE_Utils::PredefinedTypeToExprType (c->pt ());
+ $$ = FE_Utils::PredefinedTypeToExprType (c->pt ());
}
else if (d->node_type () == AST_Decl::NT_string)
{
- $<etval>$ = AST_Expression::EV_string;
+ $$ = AST_Expression::EV_string;
}
else if (d->node_type () == AST_Decl::NT_wstring)
{
- $<etval>$ = AST_Expression::EV_wstring;
+ $$ = AST_Expression::EV_wstring;
}
else if (d->node_type () == AST_Decl::NT_enum)
{
- $<etval>$ = AST_Expression::EV_enum;
+ $$ = AST_Expression::EV_enum;
tao_enum_constant_decl =
AST_Enum::narrow_from_decl (d);
}
@@ -2000,8 +1940,6 @@ const_expr : or_expr ;
or_expr : xor_expr
| or_expr '|' xor_expr
{
-// or_expr : xor_expr
-// | or_expr '|' xor_expr
$$ =
idl_global->gen ()->create_expr (
AST_Expression::EC_or,
@@ -2015,8 +1953,6 @@ xor_expr
: and_expr
| xor_expr '^' and_expr
{
-// xor_expr : and_expr
-// | xor_expr '^' and_expr
$$ =
idl_global->gen ()->create_expr (
AST_Expression::EC_xor,
@@ -2030,7 +1966,6 @@ and_expr
: shift_expr
| and_expr '&' shift_expr
{
-// and_expr : shift_expr | and_expr '&' shift_expr
$$ =
idl_global->gen ()->create_expr (
AST_Expression::EC_and,
@@ -2044,7 +1979,6 @@ shift_expr
: add_expr
| shift_expr IDL_LEFT_SHIFT add_expr
{
-// shift_expr : add_expr | shift_expr IDL_LEFT_SHIFT add_expr
$$ =
idl_global->gen ()->create_expr (
AST_Expression::EC_left,
@@ -2054,7 +1988,6 @@ shift_expr
}
| shift_expr IDL_RIGHT_SHIFT add_expr
{
-// | shift_expr IDL_RIGHT_SHIFT add_expr
$$ =
idl_global->gen ()->create_expr (
AST_Expression::EC_right,
@@ -2068,7 +2001,6 @@ add_expr
: mult_expr
| add_expr '+' mult_expr
{
-// add_expr : mult_expr | add_expr '+' mult_expr
$$ =
idl_global->gen ()->create_expr (
AST_Expression::EC_add,
@@ -2078,7 +2010,6 @@ add_expr
}
| add_expr '-' mult_expr
{
-// | add_expr '-' mult_expr
$$ =
idl_global->gen ()->create_expr (
AST_Expression::EC_minus,
@@ -2092,7 +2023,6 @@ mult_expr
: unary_expr
| mult_expr '*' unary_expr
{
-// mult_expr : unary_expr | mult_expr '*' unary_expr
$$ =
idl_global->gen ()->create_expr (
AST_Expression::EC_mul,
@@ -2102,7 +2032,6 @@ mult_expr
}
| mult_expr '/' unary_expr
{
-// | mult_expr '/' unary_expr
$$ =
idl_global->gen ()->create_expr (
AST_Expression::EC_div,
@@ -2112,7 +2041,6 @@ mult_expr
}
| mult_expr '%' unary_expr
{
-// | mult_expr '%' unary_expr
$$ =
idl_global->gen ()->create_expr (
AST_Expression::EC_mod,
@@ -2126,7 +2054,6 @@ unary_expr
: primary_expr
| '+' primary_expr
{
-// unary_expr : primary_expr | '+' primary_expr
$$ =
idl_global->gen ()->create_expr (
AST_Expression::EC_u_plus,
@@ -2136,7 +2063,6 @@ unary_expr
}
| '-' primary_expr
{
-// | '-' primary_expr
$$ =
idl_global->gen()->create_expr (
AST_Expression::EC_u_minus,
@@ -2146,7 +2072,6 @@ unary_expr
}
| '~' primary_expr
{
-// | '~' primary_expr
$$ =
idl_global->gen()->create_expr (
AST_Expression::EC_bit_neg,
@@ -2159,20 +2084,23 @@ unary_expr
primary_expr
: scoped_name
{
-// primary_expr : scoped_name
/*
* An expression which is a scoped name is not resolved now,
* but only when it is evaluated (such as when it is assigned
* as a constant value).
*/
+ AST_Expression *expr = 0;
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Decl *d =
s->lookup_by_name ($1);
if (d == 0)
{
- idl_global->err ()->lookup_error ($1);
- return 1;
+ if (!idl_global->ignore_lookup_errors_)
+ {
+ idl_global->err ()->lookup_error ($1);
+ return 1;
+ }
}
else if (d->node_type () == AST_Decl::NT_const)
{
@@ -2188,8 +2116,7 @@ primary_expr
AST_Constant *c =
AST_Constant::narrow_from_decl (d);
- $<exval>$ =
- idl_global->gen ()->create_expr (
+ expr = idl_global->gen ()->create_expr (
c->constant_value (),
c->et ());
}
@@ -2199,11 +2126,16 @@ primary_expr
// passed in this constructor, so we copy it
// and destroy it below no matter which case
// is followed.
- $<exval>$ =
- idl_global->gen ()->create_expr (
+ expr = idl_global->gen ()->create_expr (
$1->copy ());
+ if (d->node_type () == AST_Decl::NT_enum_val)
+ {
+ AST_EnumVal *enumval = AST_EnumVal::narrow_from_decl (d);
+ expr->enum_parent (enumval->enum_parent ());
+ }
}
+ $<exval>$ = expr;
$1->destroy ();
delete $1;
$1 = 0;
@@ -2211,8 +2143,6 @@ primary_expr
| literal
| '(' const_expr ')'
{
-// | literal
-// | '(' const_expr ')'
$$ = $2;
}
;
@@ -2220,18 +2150,15 @@ primary_expr
literal
: IDL_INTEGER_LITERAL
{
-// literal : IDL_INTEGER_LITERAL
$$ = idl_global->gen ()->create_expr ($1);
}
| IDL_UINTEGER_LITERAL
{
-// | IDL_UINTEGER_LITERAL
$$ =
idl_global->gen ()->create_expr ($1);
}
| IDL_STRING_LITERAL
{
-// | IDL_STRING_LITERAL
$$ = idl_global->gen ()->create_expr ($1);
$1->destroy ();
delete $1;
@@ -2239,17 +2166,14 @@ literal
}
| IDL_WSTRING_LITERAL
{
-// | IDL_WSTRING_LITERAL
$$ = idl_global->gen ()->create_expr ($1);
}
| IDL_CHARACTER_LITERAL
{
-// | IDL_CHARACTER_LITERAL
$$ = idl_global->gen ()->create_expr ($1);
}
| IDL_WCHAR_LITERAL
{
-// | IDL_WCHAR_LITERAL
ACE_OutputCDR::from_wchar wc ($1);
$$ = idl_global->gen ()->create_expr (wc);
}
@@ -2259,17 +2183,14 @@ literal
}
| IDL_FLOATING_PT_LITERAL
{
-// | IDL_FLOATING_PT_LITERAL
$$ = idl_global->gen ()->create_expr ($1);
}
| IDL_TRUETOK
{
-// | IDL_TRUETOK
$$ = idl_global->gen ()->create_expr (true);
}
| IDL_FALSETOK
{
-// | IDL_FALSETOK
$$ = idl_global->gen ()->create_expr (false);
}
;
@@ -2277,7 +2198,6 @@ literal
positive_int_expr :
const_expr
{
-// positive_int_expr : const_expr
int good_expression = 1;
$1->evaluate (AST_Expression::EK_positive_int);
AST_Expression::AST_ExprValue *ev = $1->ev ();
@@ -2343,69 +2263,302 @@ positive_int_expr :
}
;
-/* Annotations
- TODO: actions
- TODO: annotation_dcl and friends
- */
+annotation_dcl
+ : IDL_ANNOTATION_DECL defining_id '{'
+ {
+ if (idl_global->idl_version_ < IDL_VERSION_4)
+ {
+ idl_global->err ()->idl_version_error (
+ "Annotations are an IDL4 feature");
+ }
-annotations
- : annotations annotation_appl
- | /* EMPTY */
+ Identifier *id = $2;
+ UTL_ScopedName name (id, 0);
+ AST_Annotation_Decl::escape_name (&name);
+ AST_Annotation_Decl *annotation_decl = idl_global->gen ()->
+ create_annotation_decl (&name);
+ idl_global->scopes ().top_non_null ()->
+ fe_add_annotation_decl (annotation_decl);
+ idl_global->scopes ().push (annotation_decl);
+ }
+ annotation_body '}'
+ {
+ Identifier *id = $2;
+ idl_global->scopes ().pop ();
+ id->destroy ();
+ delete id;
+ }
+ ;
+
+annotation_body
+ : annotation_body annotation_statement
+ | %empty
+ ;
+
+annotation_statement
+ : annotation_member
+ | const_dcl ';'
+ | enum_type ';'
+ | IDL_TYPEDEF
+ {
+ idl_global->set_parse_state (IDL_GlobalData::PS_TypedefSeen);
+ idl_global->in_typedef (true);
+ }
+ type_declarator ';'
+ ;
+
+annotation_member_type
+ : const_type
+ | any_type
+ ;
+
+annotation_member
+ : annotation_member_type defining_id annotation_member_default ';'
+ {
+ UTL_Scope *scope = idl_global->scopes ().top_non_null ();
+ UTL_Scope *root = idl_global->scopes ().bottom ();
+
+ AST_Expression::ExprType type = $1;
+ Identifier *name = $2;
+ UTL_ScopedName scoped_name (name, 0);
+ AST_Expression *default_value = $3;
+
+ AST_Decl * type_obj;
+ switch (type)
+ {
+ case AST_Expression::EV_string:
+ case AST_Expression::EV_wstring:
+ type_obj = tao_string_decl;
+ break;
+ case AST_Expression::EV_enum:
+ type_obj = tao_enum_constant_decl;
+ break;
+ default:
+ type_obj = root->lookup_primitive_type (type);
+ }
+
+ FE_Declarator *declarator = new FE_Declarator (
+ &scoped_name, FE_Declarator::FD_simple, 0);
+ AST_Annotation_Member *member = idl_global->gen ()->
+ create_annotation_member (
+ type, declarator->compose (type_obj), declarator->name ());
+ scope->fe_add_annotation_member (member);
+
+ if (default_value)
+ {
+ // Check if types are compatible, else report error
+ AST_Expression::AST_ExprValue *result =
+ default_value->check_and_coerce (type, tao_enum_constant_decl);
+ tao_enum_constant_decl = 0;
+ if (result)
+ {
+ member->value (default_value);
+ }
+ else
+ {
+ idl_global->err ()->coercion_error (default_value, type);
+ }
+ delete result;
+ }
+ }
+ ;
+
+annotation_member_default
+ : IDL_DEFAULT const_expr
+ {
+ $$ = $2;
+ }
+ | %empty
+ {
+ $$ = 0;
+ }
+ ;
+
+at_least_one_annotation
+ : annotations_maybe annotation_appl
+ {
+ AST_Annotation_Appls *annotations = $1;
+ AST_Annotation_Appl *annotation = $2;
+ if (annotation)
+ {
+ annotations->push_back (annotation);
+ }
+ $$ = annotations;
+ }
+ ;
+
+annotations_maybe
+ : annotations_maybe annotation_appl
+ {
+ AST_Annotation_Appls *annotations = $1;
+ AST_Annotation_Appl *annotation = $2;
+ if (annotation)
+ {
+ annotations->push_back (annotation);
+ }
+ $$ = annotations;
+ }
+ | %empty
+ {
+ $$ = new AST_Annotation_Appls ();
+ }
;
annotation_appl
- : '@' scoped_name '(' annotation_appl_params ')'
- | '@' scoped_name
+ : IDL_ANNOTATION_SYMBOL scoped_name
+ {
+ if (idl_global->idl_version_ < IDL_VERSION_4)
+ {
+ idl_global->err ()->idl_version_error (
+ "Annotations are an IDL4 feature");
+ }
+
+ AST_Annotation_Decl *decl = 0;
+ UTL_ScopedName *name = $2;
+ AST_Annotation_Decl::escape_name (name);
+
+ // Check for Matching Annotation Declaration
+ AST_Decl *d = idl_global->scopes ().top_non_null ()->
+ lookup_by_name (name);
+ if (d)
+ {
+ decl = AST_Annotation_Decl::narrow_from_decl (d);
+ if (decl)
+ {
+ idl_global->scopes ().push (decl);
+ }
+ }
+ else
+ {
+ Identifier &id = *name->last_component ();
+ switch (idl_global->unknown_annotations_)
+ {
+ default:
+ case IDL_GlobalData::UNKNOWN_ANNOTATIONS_WARN_ONCE:
+ if (idl_global->unknown_annotations_seen_.insert (id) == 1)
+ {
+ break;
+ }
+ idl_global->err ()->lookup_warning (name);
+ break;
+ case IDL_GlobalData::UNKNOWN_ANNOTATIONS_WARN_ALL:
+ idl_global->err ()->lookup_warning (name);
+ break;
+ case IDL_GlobalData::UNKNOWN_ANNOTATIONS_ERROR:
+ idl_global->err ()->lookup_error (name);
+ break;
+ case IDL_GlobalData::UNKNOWN_ANNOTATIONS_IGNORE:
+ break;
+ }
+
+ // Ignore lookup errors for parameter values that might depend
+ // on constants or enums from the annotation declaration.
+ idl_global->ignore_lookup_errors_ = true;
+ }
+
+ $<annotation_decl_val>$ = decl;
+ }
+ annotation_appl_params_maybe
+ {
+ idl_global->ignore_lookup_errors_ = false;
+ AST_Annotation_Appl *appl = 0;
+ UTL_ScopedName *name = $2;
+ AST_Annotation_Decl *decl = $<annotation_decl_val>3;
+ AST_Annotation_Appl::Params *params = $4;
+
+ if (decl)
+ {
+ appl = idl_global->gen ()->create_annotation_appl (name, params);
+ appl->apply_from (decl);
+ idl_global->scopes ().pop ();
+ }
+
+ $$ = appl;
+ }
+ ;
+
+annotation_appl_params_maybe
+ : '(' annotation_appl_params ')'
+ {
+ $$ = $2;
+ }
+ | %empty
+ {
+ $$ = 0;
+ }
;
annotation_appl_params
: const_expr
- | at_least_one_annotation_appl_param
+ {
+ AST_Annotation_Appl::Params *params = new AST_Annotation_Appl::Params;
+ AST_Annotation_Appl::Param *param = new AST_Annotation_Appl::Param;
+ param->id = 0;
+ param->expr = $1;
+ params->push (param);
+ $$ = params;
+ }
+ | named_annotation_appl_params
+ {
+ $$ = $1;
+ }
;
-at_least_one_annotation_appl_param :
- annotation_appl_param annotation_appl_named_params
- ;
+named_annotation_appl_params
+ : named_annotation_appl_param more_named_annotation_appl_params
+ {
+ AST_Annotation_Appl::Params *params = $2;
+ params->push ($1);
+ $$ = params;
+ }
-annotation_appl_named_params
- : annotation_appl_named_params ',' annotation_appl_param
- | /* EMPTY */
+more_named_annotation_appl_params
+ : ',' named_annotation_appl_param more_named_annotation_appl_params
+ {
+ AST_Annotation_Appl::Params *params = $3;
+ params->push ($2);
+ $$ = params;
+ }
+ | %empty
+ {
+ $$ = new AST_Annotation_Appl::Params;
+ }
;
-annotation_appl_param
- : IDENTIFIER '=' const_expr
+named_annotation_appl_param
+ : id '=' const_expr
+ {
+ AST_Annotation_Appl::Param *param = new AST_Annotation_Appl::Param;
+ param->id = $1;
+ param->expr = $3;
+ $$ = param;
+ }
;
type_dcl
: IDL_TYPEDEF
{
-// type_dcl : IDL_TYPEDEF
idl_global->set_parse_state (IDL_GlobalData::PS_TypedefSeen);
idl_global->in_typedef (true);
}
type_declarator
{
-// type_declarator
- $$ = 0;
+ $$ = $3;
}
| struct_type
{
-// | struct_type
- $$ = 0;
+ $$ = $1;
}
| union_type
{
-// | union_type
- $$ = 0;
+ $$ = $1;
}
| enum_type
{
-// | enum_type
- $$ = 0;
+ $$ = $1;
}
| IDL_NATIVE simple_declarator
{
-// | IDL_NATIVE simple_declarator
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Native *node = 0;
idl_global->set_parse_state (IDL_GlobalData::PS_NativeSeen);
@@ -2432,7 +2585,6 @@ type_dcl
}
| constructed_forward_type_spec
{
-// | constructed_forward_type_spec
$$ = 0;
}
;
@@ -2440,12 +2592,10 @@ type_dcl
type_declarator :
type_spec
{
-// type_declarator : type_spec
idl_global->set_parse_state (IDL_GlobalData::PS_TypeSpecSeen);
}
at_least_one_declarator
{
-// at_least_one_declarator
UTL_Scope *s = idl_global->scopes ().top_non_null ();
FE_Declarator *d = 0;
AST_Typedef *t = 0;
@@ -2506,6 +2656,8 @@ type_declarator :
delete $3;
$3 = 0;
}
+
+ $$ = t;
}
;
@@ -2517,7 +2669,6 @@ type_spec
simple_type_spec
: base_type_spec
{
-// simple_type_spec : base_type_spec
$$ =
idl_global->scopes ().bottom ()->lookup_primitive_type (
$1
@@ -2526,8 +2677,6 @@ simple_type_spec
| template_type_spec
| scoped_name
{
-// | template_type_spec
-// | scoped_name
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Decl *d = 0;
@@ -2583,7 +2732,6 @@ constructed_forward_type_spec
at_least_one_declarator :
declarator declarators
{
-// at_least_one_declarator : declarator declarators
ACE_NEW_RETURN ($$,
UTL_DeclList ($1,
$2),
@@ -2595,12 +2743,10 @@ declarators
: declarators
','
{
-// declarators : declarators ','
idl_global->set_parse_state (IDL_GlobalData::PS_DeclsCommaSeen);
}
declarator
{
-// declarator
idl_global->set_parse_state (IDL_GlobalData::PS_DeclsDeclSeen);
UTL_DeclList *dl = 0;
@@ -2619,9 +2765,8 @@ declarators
$<dlval>$ = $1;
}
}
- | /* EMPTY */
+ | %empty
{
-/* | EMPTY */
$<dlval>$ = 0;
}
;
@@ -2634,7 +2779,6 @@ declarator
at_least_one_simple_declarator :
simple_declarator simple_declarators
{
-// at_least_one_simple_declarator : simple_declarator simple_declarators
ACE_NEW_RETURN ($<dlval>$,
UTL_DeclList ($1,
$2),
@@ -2646,12 +2790,10 @@ simple_declarators
: simple_declarators
','
{
-// simple_declarators : simple_declarators ','
idl_global->set_parse_state (IDL_GlobalData::PS_DeclsCommaSeen);
}
simple_declarator
{
-// simple_declarator
idl_global->set_parse_state (IDL_GlobalData::PS_DeclsDeclSeen);
UTL_DeclList *dl = 0;
@@ -2670,9 +2812,8 @@ simple_declarators
$<dlval>$ = $1;
}
}
- | /* EMPTY */
+ | %empty
{
-/* | EMPTY */
$<dlval>$ = 0;
}
;
@@ -2680,7 +2821,6 @@ simple_declarators
simple_declarator :
defining_id
{
-// simple_declarator : defining_id
UTL_ScopedName *sn = 0;
ACE_NEW_RETURN (sn,
UTL_ScopedName ($1,
@@ -2697,7 +2837,6 @@ simple_declarator :
complex_declarator :
array_declarator
{
-// complex_declarator : array_declarator
UTL_ScopedName *sn = 0;
ACE_NEW_RETURN (sn,
UTL_ScopedName (
@@ -2721,17 +2860,14 @@ integer_type
signed_int
: IDL_LONG
{
-// signed_int : IDL_LONG
$$ = AST_Expression::EV_long;
}
| IDL_LONG IDL_LONG
{
-// | IDL_LONG IDL_LONG
$$ = AST_Expression::EV_longlong;
}
| IDL_SHORT
{
-// | IDL_SHORT
$$ = AST_Expression::EV_short;
}
;
@@ -2739,17 +2875,14 @@ signed_int
unsigned_int
: IDL_UNSIGNED IDL_LONG
{
-// unsigned_int : IDL_UNSIGNED IDL_LONG
$$ = AST_Expression::EV_ulong;
}
| IDL_UNSIGNED IDL_LONG IDL_LONG
{
-// | IDL_UNSIGNED IDL_LONG IDL_LONG
$$ = AST_Expression::EV_ulonglong;
}
| IDL_UNSIGNED IDL_SHORT
{
-// | IDL_UNSIGNED IDL_SHORT
$$ = AST_Expression::EV_ushort;
}
;
@@ -2757,17 +2890,14 @@ unsigned_int
floating_pt_type
: IDL_DOUBLE
{
-// floating_pt_type : IDL_DOUBLE
$$ = AST_Expression::EV_double;
}
| IDL_FLOAT
{
-// | IDL_FLOAT
$$ = AST_Expression::EV_float;
}
| IDL_LONG IDL_DOUBLE
{
-// | IDL_LONG IDL_DOUBLE
$$ = AST_Expression::EV_longdouble;
}
;
@@ -2775,7 +2905,6 @@ floating_pt_type
fixed_type
: IDL_FIXED
{
-// fixed_type : IDL_FIXED
$$ = AST_Expression::EV_fixed;
}
;
@@ -2783,12 +2912,10 @@ fixed_type
char_type
: IDL_CHAR
{
-// char_type : IDL_CHAR
$$ = AST_Expression::EV_char;
}
| IDL_WCHAR
{
-// | IDL_WCHAR
$$ = AST_Expression::EV_wchar;
}
;
@@ -2796,7 +2923,6 @@ char_type
octet_type
: IDL_OCTET
{
-// octet_type : IDL_OCTET
$$ = AST_Expression::EV_octet;
}
;
@@ -2804,7 +2930,6 @@ octet_type
boolean_type
: IDL_BOOLEAN
{
-// boolean_type : IDL_BOOLEAN
$$ = AST_Expression::EV_bool;
}
;
@@ -2812,7 +2937,6 @@ boolean_type
any_type
: IDL_ANY
{
-// any_type : IDL_ANY
$$ = AST_Expression::EV_any;
}
;
@@ -2820,7 +2944,6 @@ any_type
object_type
: IDL_OBJECT
{
-// object_type : IDL_OBJECT
$$ = AST_Expression::EV_object;
}
;
@@ -2828,12 +2951,10 @@ object_type
struct_decl :
IDL_STRUCT
{
-// struct_decl : IDL_STRUCT
idl_global->set_parse_state (IDL_GlobalData::PS_StructSeen);
}
defining_id
{
-// defining_id
idl_global->set_parse_state (IDL_GlobalData::PS_StructIDSeen);
$$ = $3;
}
@@ -2843,10 +2964,8 @@ struct_decl :
struct_type
: struct_decl
{
-// struct_type : struct_header
UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ($1,
- 0);
+ UTL_ScopedName n ($1, 0);
AST_Structure *d = 0;
/*
@@ -2861,8 +2980,7 @@ struct_type
s->is_local (),
s->is_abstract ()
);
- AST_Structure::fwd_redefinition_helper (d,
- s);
+ AST_Structure::fwd_redefinition_helper (d, s);
(void) s->fe_add_structure (d);
}
@@ -2877,17 +2995,14 @@ struct_type
}
'{'
{
-// '{'
idl_global->set_parse_state (IDL_GlobalData::PS_StructSqSeen);
}
at_least_one_member
{
-// at_least_one_member
idl_global->set_parse_state (IDL_GlobalData::PS_StructBodySeen);
}
'}'
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_StructQsSeen);
/*
@@ -2904,56 +3019,57 @@ at_least_one_member : member members ;
members
: members member
- | /* EMPTY */
+ | %empty
;
-member :
+member
+ : annotations_maybe member_i
{
-// member :
- /* is $0 to member_i */
- $<vival>$ = AST_Field::vis_NA;
+ if ($1)
+ {
+ AST_Decls &decls = *$2;
+ for (size_t i = 0; i < decls.size (); i++)
+ {
+ decls[i]->annotation_appls ($1);
+ }
+ }
}
- member_i
;
member_i :
- annotations
type_spec
{
-// member_i : type_spec
idl_global->set_parse_state (IDL_GlobalData::PS_MemberTypeSeen);
}
at_least_one_declarator
{
-// at_least_one_declarator
idl_global->set_parse_state (IDL_GlobalData::PS_MemberDeclsSeen);
}
- ';'
+ ';'
{
-// ';'
UTL_Scope *s = idl_global->scopes ().top_non_null ();
FE_Declarator *d = 0;
AST_Field *f = 0;
idl_global->set_parse_state (IDL_GlobalData::PS_MemberDeclsCompleted);
+ AST_Decls *members = 0;
/*
* Check for illegal recursive use of type.
*/
- if ($2 != 0
- && AST_illegal_recursive_type ($2))
+ if ($1 != 0
+ && AST_illegal_recursive_type ($1))
{
idl_global->err ()->error1 (UTL_Error::EIDL_RECURSIVE_TYPE,
- $2);
+ $1);
}
/*
* Create a node representing a struct or exception member
* Add it to the enclosing scope.
*/
- else if (s != 0
- && $2 != 0
- && $4 != 0)
+ else if (s && $1 && $3)
{
- for (UTL_DecllistActiveIterator l ($4);
+ members = new AST_Decls;
+ for (UTL_DecllistActiveIterator l ($3);
!l.is_done ();
l.next ())
{
@@ -2964,36 +3080,31 @@ member_i :
continue;
}
- AST_Type *tp = d->compose ($2);
+ AST_Type *tp = d->compose ($1);
if (tp == 0)
{
continue;
}
- /* $0 denotes Visibility, must be on yacc reduction stack. */
- f =
- idl_global->gen ()->create_field (
- tp,
- d->name (),
- $<vival>0
- );
+ f = idl_global->gen ()->create_field (tp, d->name ());
+ members->push_back (f);
(void) s->fe_add_field (f);
}
}
- $4->destroy ();
- delete $4;
- $4 = 0;
+ $3->destroy ();
+ delete $3;
+ $3 = 0;
+
+ $$ = members;
}
| error
{
-// | error
idl_global->err()->syntax_error (idl_global->parse_state ());
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
yyerrok;
}
@@ -3002,12 +3113,10 @@ member_i :
union_decl :
IDL_UNION
{
-// union_decl : IDL_UNION
idl_global->set_parse_state (IDL_GlobalData::PS_UnionSeen);
}
defining_id
{
-// defining_id
idl_global->set_parse_state (IDL_GlobalData::PS_UnionIDSeen);
$$ = $3;
}
@@ -3016,15 +3125,12 @@ union_decl :
union_type
: union_decl IDL_SWITCH
{
-// union_type : union_decl IDL_SWITCH
idl_global->set_parse_state (IDL_GlobalData::PS_SwitchSeen);
}
'('
{
-// '('
UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ($1,
- 0);
+ UTL_ScopedName n ($1, 0);
AST_Union *u = 0;
idl_global->set_parse_state (IDL_GlobalData::PS_SwitchOpenParSeen);
@@ -3040,8 +3146,7 @@ union_type
s->is_abstract ());
AST_Structure *st = AST_Structure::narrow_from_decl (u);
- AST_Structure::fwd_redefinition_helper (st,
- s);
+ AST_Structure::fwd_redefinition_helper (st, s);
u = AST_Union::narrow_from_decl (st);
(void) s->fe_add_union (u);
}
@@ -3055,14 +3160,12 @@ union_type
* Don't delete $1 yet; we'll need it a bit later.
*/
}
- switch_type_spec
+ annotations_maybe switch_type_spec
{
-// switch_type_spec
idl_global->set_parse_state (IDL_GlobalData::PS_SwitchTypeSeen);
}
')'
{
-// ')'
/*
* The top of the scopes must be an empty union we added after we
* encountered 'union <id> switch ('. Now we are ready to add a
@@ -3073,22 +3176,20 @@ union_type
idl_global->scopes ().pop ();
UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ($1,
- 0);
+ UTL_ScopedName n ($1, 0);
idl_global->set_parse_state (IDL_GlobalData::PS_SwitchCloseParSeen);
/*
* Create a node representing a union.
*/
- if ($6 != 0
- && s != 0)
+ if ($7 != 0 && s != 0)
{
AST_ConcreteType *tp =
- AST_ConcreteType::narrow_from_decl ($6);
+ AST_ConcreteType::narrow_from_decl ($7);
if (tp == 0)
{
- idl_global->err ()->not_a_type ($6);
+ idl_global->err ()->not_a_type ($7);
}
else
{
@@ -3098,10 +3199,12 @@ union_type
&n,
s->is_local (),
s->is_abstract ());
+
/* Narrow the enclosing scope. */
AST_Union *e = AST_Union::narrow_from_scope (top);
e->redefine (u);
+ e->disc_annotations ($6); // Set Discriminator Annotations
u->destroy ();
delete u;
@@ -3119,17 +3222,14 @@ union_type
}
'{'
{
-// '{'
idl_global->set_parse_state (IDL_GlobalData::PS_UnionSqSeen);
}
at_least_one_case_branch
{
-// at_least_one_case_branch
idl_global->set_parse_state (IDL_GlobalData::PS_UnionBodySeen);
}
'}'
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_UnionQsSeen);
/*
@@ -3149,7 +3249,6 @@ union_type
switch_type_spec :
integer_type
{
-// switch_type_spec : integer_type
$$ =
idl_global->scopes ().bottom ()->lookup_primitive_type (
$1
@@ -3157,7 +3256,6 @@ switch_type_spec :
}
| char_type
{
-// | char_type
/* wchars are not allowed. */
if ($1 == AST_Expression::EV_wchar)
{
@@ -3171,7 +3269,6 @@ switch_type_spec :
}
| octet_type
{
-// | octet_type
/* octets are not allowed. */
idl_global->err ()->error0 (UTL_Error::EIDL_DISC_TYPE);
$$ =
@@ -3181,7 +3278,6 @@ switch_type_spec :
}
| boolean_type
{
-// | boolean_type
$$ =
idl_global->scopes ().bottom ()->lookup_primitive_type (
$1
@@ -3190,8 +3286,6 @@ switch_type_spec :
| enum_type
| scoped_name
{
-// | enum_type
-// | scoped_name
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Decl *d = 0;
AST_PredefinedType *p = 0;
@@ -3287,7 +3381,10 @@ switch_type_spec :
$1 = 0;
/* If we don't return here, we'll crash later.*/
- return 1;
+ if (!idl_global->ignore_lookup_errors_)
+ {
+ return 1;
+ }
}
$1->destroy ();
@@ -3300,23 +3397,20 @@ at_least_one_case_branch : case_branch case_branches ;
case_branches
: case_branches case_branch
- | /* empty */
+ | %empty
;
case_branch :
at_least_one_case_label
{
-// case_branch : at_least_one_case_label
idl_global->set_parse_state (IDL_GlobalData::PS_UnionLabelSeen);
}
- annotations element_spec
+ annotations_maybe element_spec
{
-// annotations element_spec
idl_global->set_parse_state (IDL_GlobalData::PS_UnionElemSeen);
}
- ';'
+ ';'
{
-// ';'
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_UnionBranch *b = 0;
AST_Field *f = $4;
@@ -3326,9 +3420,7 @@ case_branch :
* Create several nodes representing branches of a union.
* Add them to the enclosing scope (the union scope)
*/
- if (s != 0
- && $1 != 0
- && $4 != 0)
+ if (s != 0 && $1 != 0 && $4 != 0)
{
b =
idl_global->gen ()->create_union_branch (
@@ -3336,6 +3428,7 @@ case_branch :
f->field_type (),
f->name ()
);
+ b->annotation_appls ($3);
(void) s->fe_add_union_branch (b);
// f has passed its field type to the union branch,
@@ -3347,12 +3440,10 @@ case_branch :
}
| error
{
-// | error
idl_global->err()->syntax_error (idl_global->parse_state());
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
yyerrok;
}
@@ -3361,7 +3452,6 @@ case_branch :
at_least_one_case_label :
case_label case_labels
{
-// at_least_one_case_label : case_label case_labels
ACE_NEW_RETURN ($<llval>$,
UTL_LabelList ($1,
$2),
@@ -3370,12 +3460,11 @@ at_least_one_case_label :
;
case_labels
- : case_labels annotations case_label
+ : case_labels case_label
{
-// case_labels : case_labels annotations case_label
UTL_LabelList *ll = 0;
ACE_NEW_RETURN (ll,
- UTL_LabelList ($3,
+ UTL_LabelList ($2,
0),
1);
@@ -3389,9 +3478,8 @@ case_labels
$<llval>$ = $1;
}
}
- | /* EMPTY */
+ | %empty
{
-/* | EMPTY */
$<llval>$ = 0;
}
;
@@ -3399,12 +3487,10 @@ case_labels
case_label
: IDL_DEFAULT
{
-// case_label : IDL_DEFAULT
idl_global->set_parse_state (IDL_GlobalData::PS_DefaultSeen);
}
':'
{
-// ':'
idl_global->set_parse_state (IDL_GlobalData::PS_LabelColonSeen);
$$ = idl_global->gen ()->create_union_label (
@@ -3414,7 +3500,6 @@ case_label
}
| IDL_CASE
{
-// | IDL_CASE
idl_global->set_parse_state (IDL_GlobalData::PS_CaseSeen);
}
const_expr
@@ -3423,7 +3508,6 @@ case_label
}
':'
{
-// const_expr
idl_global->set_parse_state (IDL_GlobalData::PS_LabelColonSeen);
$$ = idl_global->gen()->create_union_label (
@@ -3436,12 +3520,10 @@ case_label
element_spec :
type_spec
{
-// element_spec : type_spec
idl_global->set_parse_state (IDL_GlobalData::PS_UnionElemTypeSeen);
}
declarator
{
-// declarator
idl_global->set_parse_state (IDL_GlobalData::PS_UnionElemDeclSeen);
/*
@@ -3489,7 +3571,6 @@ element_spec :
struct_forward_type
: struct_decl
{
-// struct_forward_type : struct_decl
UTL_Scope *s = idl_global->scopes ().top_non_null ();
UTL_ScopedName n ($1,
0);
@@ -3507,13 +3588,14 @@ struct_forward_type
$1->destroy ();
delete $1;
$1 = 0;
+
+ $$ = d;
}
;
union_forward_type
: union_decl
{
-// union_forward_type : union_decl
UTL_Scope *s = idl_global->scopes ().top_non_null ();
UTL_ScopedName n ($1,
0);
@@ -3537,15 +3619,12 @@ union_forward_type
enum_type :
IDL_ENUM
{
-// enum_type : IDL_ENUM
idl_global->set_parse_state (IDL_GlobalData::PS_EnumSeen);
}
defining_id
{
-// defining_id
UTL_Scope *s = idl_global->scopes ().top_non_null ();
- UTL_ScopedName n ($3,
- 0);
+ UTL_ScopedName n ($3, 0);
AST_Enum *e = 0;
idl_global->set_parse_state (IDL_GlobalData::PS_EnumIDSeen);
@@ -3575,17 +3654,14 @@ enum_type :
}
'{'
{
-// '{'
idl_global->set_parse_state (IDL_GlobalData::PS_EnumSqSeen);
}
at_least_one_enumerator
{
-// at_least_one_enumerator
idl_global->set_parse_state (IDL_GlobalData::PS_EnumBodySeen);
}
'}'
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_EnumQsSeen);
/*
@@ -3611,23 +3687,20 @@ enumerators
: enumerators
','
{
-// enumerators : enumerators ','
idl_global->set_parse_state (IDL_GlobalData::PS_EnumCommaSeen);
}
enumerator
- | /* EMPTY */
+ | %empty
;
enumerator :
- annotations IDENTIFIER
+ annotations_maybe IDENTIFIER
{
-// enumerator : annotations IDENTIFIER
UTL_Scope *s = idl_global->scopes ().top_non_null ();
Identifier id ($2);
ACE::strdelete ($2);
$2 = 0;
- UTL_ScopedName n (&id,
- 0);
+ UTL_ScopedName n (&id, 0);
AST_EnumVal *e = 0;
AST_Enum *c = 0;
@@ -3646,6 +3719,8 @@ enumerator :
c->next_enum_val (),
&n
);
+ e->enum_parent (c);
+ e->annotation_appls ($1);
}
(void) s->fe_add_enum_val (e);
@@ -3657,19 +3732,27 @@ sequence_type_spec
: seq_head
','
{
-// sequence_type_spec : seq_head ','
idl_global->set_parse_state (IDL_GlobalData::PS_SequenceCommaSeen);
}
positive_int_expr
{
-// positive_int_expr
idl_global->set_parse_state (IDL_GlobalData::PS_SequenceExprSeen);
}
'>'
{
-// '>'
idl_global->set_parse_state (IDL_GlobalData::PS_SequenceQsSeen);
+ AST_Sequence *seq = 0;
+ Decl_Annotations_Pair *seq_head = $1;
+ AST_Decl *type = 0;
+ AST_Annotation_Appls *type_annotations = 0;
+ if (seq_head)
+ {
+ type = seq_head->decl;
+ type_annotations = seq_head->annotations;
+ }
+ delete seq_head;
+
/*
* Remove sequence marker from scopes stack.
*/
@@ -3702,15 +3785,10 @@ sequence_type_spec
{
idl_global->err ()->coercion_error ($4,
AST_Expression::EV_ulong);
- $<dcval>$ = 0;
- }
- else if (0 == $1)
- {
- $<dcval>$ = 0;
}
- else
+ else if (type)
{
- AST_Type *tp = AST_Type::narrow_from_decl ($1);
+ AST_Type *tp = AST_Type::narrow_from_decl (type);
if (0 == tp)
{
@@ -3722,7 +3800,7 @@ sequence_type_spec
UTL_ScopedName sn (&id,
0);
- $$ =
+ seq =
idl_global->gen ()->create_sequence (
$4,
tp,
@@ -3730,6 +3808,7 @@ sequence_type_spec
s->is_local (),
s->is_abstract ()
);
+ seq->base_type_annotations (type_annotations);
if (!idl_global->in_typedef ()
&& !idl_global->anon_silent ())
@@ -3741,13 +3820,24 @@ sequence_type_spec
delete ev;
ev = 0;
+ $$ = seq;
}
| seq_head
'>'
{
-// | seq_head '>'
idl_global->set_parse_state (IDL_GlobalData::PS_SequenceQsSeen);
+ AST_Sequence *seq = 0;
+ Decl_Annotations_Pair *seq_head = $1;
+ AST_Decl *type = 0;
+ AST_Annotation_Appls *type_annotations = 0;
+ if (seq_head)
+ {
+ type = seq_head->decl;
+ type_annotations = seq_head->annotations;
+ }
+ delete seq_head;
+
/*
* Remove sequence marker from scopes stack.
*/
@@ -3761,13 +3851,9 @@ sequence_type_spec
/*
* Create a node representing a sequence.
*/
- if ($1 == 0)
+ if (type)
{
- $$ = 0;
- }
- else
- {
- AST_Type *tp = AST_Type::narrow_from_decl ($1);
+ AST_Type *tp = AST_Type::narrow_from_decl (type);
if (tp == 0)
{
@@ -3779,7 +3865,7 @@ sequence_type_spec
UTL_ScopedName sn (&id, 0);
ACE_CDR::ULong bound = 0UL;
- $$ =
+ seq =
idl_global->gen ()->create_sequence (
idl_global->gen ()->create_expr (
bound,
@@ -3790,6 +3876,7 @@ sequence_type_spec
s->is_local (),
s->is_abstract ()
);
+ seq->base_type_annotations (type_annotations);
if (!idl_global->in_typedef ()
&& !idl_global->anon_silent ())
@@ -3798,13 +3885,14 @@ sequence_type_spec
}
}
}
+
+ $$ = seq;
}
;
seq_head :
IDL_SEQUENCE
{
-// seq_head : IDL_SEQUENCE
idl_global->set_parse_state (IDL_GlobalData::PS_SequenceSeen);
/*
@@ -3814,14 +3902,15 @@ seq_head :
}
'<'
{
-// '<'
idl_global->set_parse_state (IDL_GlobalData::PS_SequenceSqSeen);
}
- simple_type_spec
+ annotations_maybe simple_type_spec
{
-// simple_type_spec
idl_global->set_parse_state (IDL_GlobalData::PS_SequenceTypeSeen);
- $$ = $5;
+ Decl_Annotations_Pair *seq_head = new Decl_Annotations_Pair;
+ seq_head->decl = $6;
+ seq_head->annotations = $5;
+ $$ = seq_head;
}
;
@@ -3837,17 +3926,14 @@ string_type_spec
: string_head
'<'
{
-// string_type_spec : string_head '<'
idl_global->set_parse_state (IDL_GlobalData::PS_StringSqSeen);
}
positive_int_expr
{
-// positive_int_expr
idl_global->set_parse_state (IDL_GlobalData::PS_StringExprSeen);
}
'>'
{
-// '>'
idl_global->set_parse_state (IDL_GlobalData::PS_StringQsSeen);
/*
@@ -3868,21 +3954,21 @@ string_type_spec
}
else
{
- $$ = idl_global->gen ()->create_string ($4);
+ tao_string_decl = idl_global->gen ()->create_string ($4);
+
/*
* Add this AST_String to the types defined in the global scope.
*/
- (void) idl_global->root ()->fe_add_string (
- AST_String::narrow_from_decl (
- $$
- )
- );
+ idl_global->root ()->fe_add_string (
+ AST_String::narrow_from_decl (
+ tao_string_decl));
- if (!idl_global->in_typedef ()
- && !idl_global->anon_silent ())
+ if (!idl_global->in_typedef () && !idl_global->anon_silent ())
{
idl_global->err ()->anonymous_type_diagnostic ();
}
+
+ $$ = tao_string_decl;
}
delete ev;
@@ -3890,33 +3976,32 @@ string_type_spec
}
| string_head
{
-// | string_head
idl_global->set_parse_state (IDL_GlobalData::PS_StringCompleted);
+
/*
* Create a node representing a string.
*/
ACE_CDR::ULong bound = 0UL;
-
- $$ =
+ tao_string_decl =
idl_global->gen ()->create_string (
idl_global->gen ()->create_expr (bound,
AST_Expression::EV_ulong)
);
+
/*
* Add this AST_String to the types defined in the global scope.
*/
- (void) idl_global->root ()->fe_add_string (
- AST_String::narrow_from_decl (
- $$
- )
- );
+ idl_global->root ()->fe_add_string (
+ AST_String::narrow_from_decl (
+ tao_string_decl));
+
+ $$ = tao_string_decl;
}
;
string_head :
IDL_STRING
{
-// string_head : IDL_STRING
idl_global->set_parse_state (IDL_GlobalData::PS_StringSeen);
}
;
@@ -3925,17 +4010,14 @@ wstring_type_spec
: wstring_head
'<'
{
-// wstring_type_spec : wstring_head '<'
idl_global->set_parse_state (IDL_GlobalData::PS_StringSqSeen);
}
positive_int_expr
{
-// positive_int_expr
idl_global->set_parse_state (IDL_GlobalData::PS_StringExprSeen);
}
'>'
{
-// '>'
idl_global->set_parse_state (IDL_GlobalData::PS_StringQsSeen);
/*
@@ -3950,49 +4032,51 @@ wstring_type_spec
}
else
{
- $$ = idl_global->gen ()->create_wstring ($4);
+ AST_String *string = idl_global->gen ()->create_wstring ($4);
+
/*
* Add this AST_String to the types defined in the global scope.
*/
- (void) idl_global->root ()->fe_add_string (
- AST_String::narrow_from_decl ($$)
- );
+ idl_global->root ()->fe_add_string (
+ AST_String::narrow_from_decl (
+ string));
- if (!idl_global->in_typedef ()
- && !idl_global->anon_silent ())
+ if (!idl_global->in_typedef () && !idl_global->anon_silent ())
{
idl_global->err ()->anonymous_type_diagnostic ();
}
+
+ $$ = string;
}
}
| wstring_head
{
-// | wstring_head
idl_global->set_parse_state (IDL_GlobalData::PS_StringCompleted);
/*
* Create a node representing a wstring.
*/
ACE_CDR::ULong bound = 0UL;
-
- $$ =
+ AST_String *string =
idl_global->gen ()->create_wstring (
idl_global->gen ()->create_expr (bound,
AST_Expression::EV_ulong)
);
+
/*
* Add this AST_String to the types defined in the global scope.
*/
- (void) idl_global->root ()->fe_add_string (
- AST_String::narrow_from_decl ($$)
- );
+ idl_global->root ()->fe_add_string (
+ AST_String::narrow_from_decl (
+ string));
+
+ $$ = string;
}
;
wstring_head :
IDL_WSTRING
{
-// wstring_head : IDL_WSTRING
idl_global->set_parse_state (IDL_GlobalData::PS_StringSeen);
}
;
@@ -4000,34 +4084,32 @@ wstring_head :
array_declarator :
defining_id
{
-// array_declarator : defining_id
idl_global->set_parse_state (IDL_GlobalData::PS_ArrayIDSeen);
}
- at_least_one_array_dim
+ annotations_maybe at_least_one_array_dim
{
-// at_least_one_array_dim
idl_global->set_parse_state (IDL_GlobalData::PS_ArrayCompleted);
+ AST_Array *array = 0;
+ AST_Annotation_Appls *base_type_annotations = $3;
+ UTL_ExprList *array_dims = $4;
+
/*
* Create a node representing an array.
*/
- if ($3 != 0)
+ if (array_dims)
{
UTL_ScopedName sn ($1,
0);
- $$ =
+ array =
idl_global->gen ()->create_array (
&sn,
- $3->length (),
- $3,
+ array_dims->length (),
+ array_dims,
0,
0
);
-
- $3->destroy ();
- delete $3;
- $3 = 0;
-
+ array->base_type_annotations (base_type_annotations);
sn.destroy ();
if (!idl_global->in_typedef ()
@@ -4036,14 +4118,18 @@ array_declarator :
idl_global->err ()->anonymous_type_diagnostic ();
}
}
+
+ array_dims->destroy ();
+ delete array_dims;
+
+ $$ = array;
}
;
at_least_one_array_dim :
array_dim array_dims
{
-// at_least_one_array_dim : array_dim array_dims
- ACE_NEW_RETURN ($<elval>$,
+ ACE_NEW_RETURN ($$,
UTL_ExprList ($1,
$2),
1);
@@ -4053,7 +4139,6 @@ at_least_one_array_dim :
array_dims
: array_dims array_dim
{
-// array_dims : array_dims array_dim
UTL_ExprList *el = 0;
ACE_NEW_RETURN (el,
UTL_ExprList ($2,
@@ -4062,35 +4147,31 @@ array_dims
if ($1 == 0)
{
- $<elval>$ = el;
+ $$ = el;
}
else
{
$1->nconc (el);
- $<elval>$ = $1;
+ $$ = $1;
}
}
- | /* EMPTY */
+ | %empty
{
-/* | EMPTY */
- $<elval>$ = 0;
+ $$ = 0;
}
;
array_dim :
'['
{
-// array_dim : '['
idl_global->set_parse_state (IDL_GlobalData::PS_DimSqSeen);
}
positive_int_expr
{
-// positive_int_expr
idl_global->set_parse_state (IDL_GlobalData::PS_DimExprSeen);
}
']'
{
-// ']'
idl_global->set_parse_state (IDL_GlobalData::PS_DimQsSeen);
/*
@@ -4153,27 +4234,22 @@ attribute
attribute_readonly :
IDL_READONLY
{
-// attribute_readonly : IDL_READONLY
idl_global->set_parse_state (IDL_GlobalData::PS_AttrROSeen);
}
IDL_ATTRIBUTE
{
-// IDL_ATTRIBUTE
idl_global->set_parse_state (IDL_GlobalData::PS_AttrSeen);
}
param_type_spec
{
-// param_type_spec
idl_global->set_parse_state (IDL_GlobalData::PS_AttrTypeSeen);
}
at_least_one_simple_declarator
{
-// at_least_one_simple_declarator
idl_global->set_parse_state (IDL_GlobalData::PS_AttrDeclsSeen);
}
opt_raises
{
-// opt_raises
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Attribute *a = 0;
FE_Declarator *d = 0;
@@ -4237,27 +4313,22 @@ attribute_readonly :
attribute_readwrite :
IDL_ATTRIBUTE
{
-// attribute_readwrite : IDL_ATTRIBUTE
idl_global->set_parse_state (IDL_GlobalData::PS_AttrSeen);
}
param_type_spec
{
-// param_type_spec
idl_global->set_parse_state (IDL_GlobalData::PS_AttrTypeSeen);
}
at_least_one_simple_declarator
{
-// at_least_one_simple_declarator
idl_global->set_parse_state (IDL_GlobalData::PS_AttrDeclsSeen);
}
opt_getraises
{
-// opt_getraises
idl_global->set_parse_state (IDL_GlobalData::PS_OpGetRaiseCompleted);
}
opt_setraises
{
-// opt_setraises
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Attribute *a = 0;
FE_Declarator *d = 0;
@@ -4330,12 +4401,10 @@ attribute_readwrite :
exception :
IDL_EXCEPTION
{
-// exception : IDL_EXCEPTION
idl_global->set_parse_state (IDL_GlobalData::PS_ExceptSeen);
}
defining_id
{
-// defining_id
UTL_Scope *s = idl_global->scopes ().top_non_null ();
UTL_ScopedName n ($3,
0);
@@ -4365,17 +4434,14 @@ exception :
}
'{'
{
-// '{'
idl_global->set_parse_state (IDL_GlobalData::PS_ExceptSqSeen);
}
members
{
-// members
idl_global->set_parse_state (IDL_GlobalData::PS_ExceptBodySeen);
}
'}'
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_ExceptQsSeen);
/*
* Done with this exception. Pop its scope from the scope stack.
@@ -4388,12 +4454,10 @@ operation :
opt_op_attribute
op_type_spec
{
-// operation : opt_op_attribute op_type_spec
idl_global->set_parse_state (IDL_GlobalData::PS_OpTypeSeen);
}
- annotations IDENTIFIER
+ annotations_maybe IDENTIFIER
{
-// annotations IDENTIFIER
UTL_Scope *s = idl_global->scopes ().top_non_null ();
Identifier id ($5);
ACE::strdelete ($5);
@@ -4458,17 +4522,14 @@ operation :
}
parameter_list
{
-// parameter_list
idl_global->set_parse_state (IDL_GlobalData::PS_OpParsCompleted);
}
opt_raises
{
-// opt_raises
idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseCompleted);
}
opt_context
{
-// opt_context
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Operation *o = 0;
idl_global->set_parse_state (IDL_GlobalData::PS_OpCompleted);
@@ -4501,19 +4562,16 @@ operation :
opt_op_attribute
: IDL_ONEWAY
{
-// opt_op_attribute : IDL_ONEWAY
idl_global->set_parse_state (IDL_GlobalData::PS_OpAttrSeen);
$$ = AST_Operation::OP_oneway;
}
| IDL_IDEMPOTENT
{
-// | IDL_IDEMPOTENT
idl_global->set_parse_state (IDL_GlobalData::PS_OpAttrSeen);
$$ = AST_Operation::OP_idempotent;
}
- | /* EMPTY */
+ | %empty
{
-/* | EMPTY */
$$ = AST_Operation::OP_noflags;
}
;
@@ -4522,7 +4580,6 @@ op_type_spec
: param_type_spec
| IDL_VOID
{
-// op_type_spec : param_type_spec | IDL_VOID
$$ =
idl_global->scopes ().bottom ()->lookup_primitive_type (
AST_Expression::EV_void
@@ -4533,13 +4590,11 @@ op_type_spec
init_decl
: IDL_FACTORY
{
-// init_decl : IDL_FACTORY
//@@ PS_FactorySeen?
idl_global->set_parse_state (IDL_GlobalData::PS_OpTypeSeen);
}
- annotations IDENTIFIER
+ annotations_maybe IDENTIFIER
{
-// annotations IDENTIFIER
UTL_Scope *s = idl_global->scopes ().top_non_null ();
if (s->is_abstract ())
@@ -4581,12 +4636,10 @@ init_decl
}
init_parameter_list
{
-// init_parameter_list
idl_global->set_parse_state (IDL_GlobalData::PS_OpParsCompleted);
}
opt_raises
{
-// opt_raises
idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseCompleted);
if ($8 != 0)
@@ -4603,23 +4656,19 @@ init_decl
init_parameter_list
: '('
{
-// init_parameter_list : '('
idl_global->set_parse_state (IDL_GlobalData::PS_OpSqSeen);
}
')'
{
-// ')'
idl_global->set_parse_state (IDL_GlobalData::PS_OpQsSeen);
}
| '('
{
-// | '('
idl_global->set_parse_state (IDL_GlobalData::PS_OpSqSeen);
}
at_least_one_in_parameter
')'
{
-// at_least_one_in_parameter ')'
idl_global->set_parse_state (IDL_GlobalData::PS_OpQsSeen);
}
;
@@ -4630,27 +4679,23 @@ in_parameters
: in_parameters
','
{
-// in_parameters : in_parameters ','
idl_global->set_parse_state (IDL_GlobalData::PS_OpParCommaSeen);
}
in_parameter
- | /* EMPTY */
+ | %empty
;
in_parameter :
IDL_IN
{
-// in_parameter : IDL_IN
idl_global->set_parse_state (IDL_GlobalData::PS_OpParDirSeen);
}
param_type_spec
{
-// param_type_spec
idl_global->set_parse_state (IDL_GlobalData::PS_OpParTypeSeen);
}
declarator
{
-// declarator
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Argument *a = 0;
idl_global->set_parse_state (IDL_GlobalData::PS_OpParDeclSeen);
@@ -4686,23 +4731,19 @@ in_parameter :
parameter_list
: '('
{
-// parameter_list : '('
idl_global->set_parse_state (IDL_GlobalData::PS_OpSqSeen);
}
')'
{
-// ')'
idl_global->set_parse_state (IDL_GlobalData::PS_OpQsSeen);
}
| '('
{
-// | '('
idl_global->set_parse_state (IDL_GlobalData::PS_OpSqSeen);
}
at_least_one_parameter
')'
{
-// at_least_one_parameter ')'
idl_global->set_parse_state (IDL_GlobalData::PS_OpQsSeen);
}
;
@@ -4713,27 +4754,23 @@ parameters
: parameters
','
{
-// parameters : parameters ','
idl_global->set_parse_state (IDL_GlobalData::PS_OpParCommaSeen);
}
parameter
- | /* EMPTY */
+ | %empty
;
parameter :
direction
{
-// parameter : direction
idl_global->set_parse_state (IDL_GlobalData::PS_OpParDirSeen);
}
param_type_spec
{
-// param_type_spec
idl_global->set_parse_state (IDL_GlobalData::PS_OpParTypeSeen);
}
declarator
{
-// declarator
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Argument *a = 0;
idl_global->set_parse_state (IDL_GlobalData::PS_OpParDeclSeen);
@@ -4776,7 +4813,6 @@ parameter :
param_type_spec
: base_type_spec
{
-// param_type_spec : base_type_spec
$$ =
idl_global->scopes ().bottom ()->lookup_primitive_type (
$1
@@ -4786,9 +4822,6 @@ param_type_spec
| wstring_type_spec
| scoped_name
{
-// | string_type_spec
-// | wstring_type_spec
-// | scoped_name
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Decl *d = 0;
UTL_ScopedName *n = $1;
@@ -4896,17 +4929,14 @@ param_type_spec
direction
: IDL_IN
{
-// direction : IDL_IN
$$ = AST_Argument::dir_IN;
}
| IDL_OUT
{
-// | IDL_OUT
$$ = AST_Argument::dir_OUT;
}
| IDL_INOUT
{
-// | IDL_INOUT
$$ = AST_Argument::dir_INOUT;
}
;
@@ -4914,99 +4944,83 @@ direction
opt_raises
: IDL_RAISES
{
-// opt_raises : IDL_RAISES
idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseSeen);
}
'('
{
-// '('
idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseSqSeen);
}
at_least_one_scoped_name
')'
{
-// at_least_one_scoped_name ')'
idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseQsSeen);
$$ = $5;
}
- | /* EMPTY */
+ | %empty
{
$$ = 0;
-/* | EMPTY */
}
;
opt_getraises
: IDL_GETRAISES
{
-// opt_getraises : IDL_GETRAISES
idl_global->set_parse_state (IDL_GlobalData::PS_OpGetRaiseSeen);
}
'('
{
-// '('
idl_global->set_parse_state (IDL_GlobalData::PS_OpGetRaiseSqSeen);
}
at_least_one_scoped_name
')'
{
-// at_least_one_scoped_name ')'
idl_global->set_parse_state (IDL_GlobalData::PS_OpGetRaiseQsSeen);
$$ = $5;
}
- | /* EMPTY */
+ | %empty
{
$$ = 0;
-/* | EMPTY */
}
;
opt_setraises
: IDL_SETRAISES
{
-// opt_setraises : IDL_SETRAISES
idl_global->set_parse_state (IDL_GlobalData::PS_OpSetRaiseSeen);
}
'('
{
-// '('
idl_global->set_parse_state (IDL_GlobalData::PS_OpSetRaiseSqSeen);
}
at_least_one_scoped_name
')'
{
-// at_least_one_scoped_name ')'
idl_global->set_parse_state (IDL_GlobalData::PS_OpSetRaiseQsSeen);
$$ = $5;
}
- | /* EMPTY */
+ | %empty
{
$$ = 0;
-/* | EMPTY */
}
;
opt_context
: IDL_CONTEXT
{
-// opt_context : IDL_CONTEXT
idl_global->set_parse_state (IDL_GlobalData::PS_OpContextSeen);
}
'('
{
idl_global->set_parse_state (IDL_GlobalData::PS_OpContextSqSeen);
-// '('
}
at_least_one_string_literal
')'
{
-// at_least_one_string_literal ')'
idl_global->set_parse_state (IDL_GlobalData::PS_OpContextQsSeen);
$$ = $5;
}
- | /* EMPTY */
+ | %empty
{
-/* | EMPTY */
$$ = 0;
}
;
@@ -5014,7 +5028,6 @@ opt_context
at_least_one_string_literal :
IDL_STRING_LITERAL string_literals
{
-// at_least_one_string_literal : IDL_STRING_LITERAL string_literals
ACE_NEW_RETURN ($<slval>$,
UTL_StrList ($1,
$2),
@@ -5026,12 +5039,10 @@ string_literals
: string_literals
','
{
-// string_literals : string_literals ','
idl_global->set_parse_state (IDL_GlobalData::PS_OpContextCommaSeen);
}
IDL_STRING_LITERAL
{
-// IDL_STRING_LITERAL
UTL_StrList *sl = 0;
ACE_NEW_RETURN (sl,
UTL_StrList ($4,
@@ -5048,9 +5059,8 @@ string_literals
$<slval>$ = $1;
}
}
- | /* EMPTY */
+ | %empty
{
-/* | EMPTY */
$$ = 0;
}
;
@@ -5058,7 +5068,6 @@ string_literals
typeid_dcl
: IDL_TYPEID scoped_name IDL_STRING_LITERAL
{
-// typeid_dcl : IDL_TYPEID scoped_name IDL_STRING_LITERAL
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Decl *d =
s->lookup_by_name ($2);
@@ -5087,7 +5096,6 @@ typeid_dcl
typeprefix_dcl
: IDL_TYPEPREFIX scoped_name IDL_STRING_LITERAL
{
-// typeprefix_dcl : IDL_TYPEPREFIX scoped_name IDL_STRING_LITERAL
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Decl *d = ScopeAsDecl (s);
@@ -5131,7 +5139,6 @@ component_forward_decl :
IDL_COMPONENT
defining_id
{
-// component_forward_decl : IDL_COMPONENT defining_id
UTL_Scope *s = idl_global->scopes ().top_non_null ();
UTL_ScopedName n ($2,
0);
@@ -5159,7 +5166,6 @@ component_forward_decl :
component_decl :
component_header
{
-// component_decl : component_header
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Component *c = 0;
@@ -5199,17 +5205,14 @@ component_decl :
}
'{'
{
-// '{'
idl_global->set_parse_state (IDL_GlobalData::PS_ComponentSqSeen);
}
component_exports
{
-// component_exports
idl_global->set_parse_state (IDL_GlobalData::PS_ComponentBodySeen);
}
'}'
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_ComponentQsSeen);
/*
@@ -5223,17 +5226,14 @@ component_header :
IDL_COMPONENT
defining_id
{
-// component_header: IDL_COMPONENT defining_id
idl_global->set_parse_state (IDL_GlobalData::PS_ComponentIDSeen);
}
component_inheritance_spec
{
-// component_inheritance_spec
idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
}
supports_spec
{
-// supports_spec
idl_global->set_parse_state (IDL_GlobalData::PS_SupportSpecSeen);
/*
@@ -5271,102 +5271,84 @@ component_header :
component_inheritance_spec
: ':'
{
-// component_inheritance_spec : ':'
idl_global->set_parse_state (IDL_GlobalData::PS_InheritColonSeen);
}
scoped_name
{
-// scoped_name
$<idlist>$ = $3;
}
- | /* EMPTY */
+ | %empty
{
-/* | EMPTY */
$$ = 0;
}
;
component_exports
: component_exports component_export
- | /* EMPTY */
+ | %empty
;
component_export
: provides_decl
{
-// component_export : provides_decl
idl_global->set_parse_state (IDL_GlobalData::PS_ProvidesDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
| uses_decl
{
-// | uses_decl
idl_global->set_parse_state (IDL_GlobalData::PS_UsesDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
| emits_decl
{
-// | emits_decl
idl_global->set_parse_state (IDL_GlobalData::PS_EmitsDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
| publishes_decl
{
-// | publishes_decl
idl_global->set_parse_state (IDL_GlobalData::PS_PublishesDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
| consumes_decl
{
-// | consumes_decl
idl_global->set_parse_state (IDL_GlobalData::PS_ConsumesDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
| attribute
{
-// | attribute
idl_global->set_parse_state (IDL_GlobalData::PS_AttrDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
| extended_port_decl
{
-// | extended_port_decl
idl_global->set_parse_state (IDL_GlobalData::PS_ExtendedPortDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
;
provides_decl : IDL_PROVIDES interface_type id
{
-// provides_decl : IDL_PROVIDES interface_type id
UTL_Scope *s = idl_global->scopes ().top_non_null ();
bool so_far_so_good = true;
AST_Decl::NodeType nt = AST_Decl::NT_type;
@@ -5457,14 +5439,12 @@ provides_decl : IDL_PROVIDES interface_type id
interface_type
: scoped_name
{
-// interface_type : scoped_name
// Lookups and checking are done where the 'interface_type'
// token is used, in 'provides_decl' and 'uses_decl'.
$$ = $1;
}
| IDL_OBJECT
{
-// | IDL_OBJECT
Identifier *corba_id = 0;
ACE_NEW_RETURN (corba_id,
@@ -5490,7 +5470,6 @@ interface_type
uses_decl : uses_opt_multiple interface_type id
{
-// uses_decl : uses_opt_multiple interface_type id
UTL_Scope *s = idl_global->scopes ().top_non_null ();
bool so_far_so_good = true;
AST_Decl::NodeType nt = AST_Decl::NT_type;
@@ -5597,7 +5576,6 @@ uses_decl : uses_opt_multiple interface_type id
uses_opt_multiple
: IDL_USES opt_multiple
{
-// uses_opt_multiple : IDL_USES opt_multiple
// We use this extra rule here to use in both uses_decl and
// extended_uses_decl, so the LALR(1) parser can avoid conflicts.
$$ = $2;
@@ -5607,19 +5585,16 @@ uses_opt_multiple
opt_multiple
: IDL_MULTIPLE
{
-// opt_multiple : IDL_MULTIPLE
$$ = true;
}
- | /* EMPTY */
+ | %empty
{
-/* | EMPTY */
$$ = false;
}
;
emits_decl : IDL_EMITS scoped_name id
{
-// emits_decl : IDL_EMITS scoped_name id
UTL_Scope *s = idl_global->scopes ().top_non_null ();
bool so_far_so_good = true;
AST_Decl::NodeType nt = AST_Decl::NT_type;
@@ -5692,7 +5667,6 @@ emits_decl : IDL_EMITS scoped_name id
publishes_decl : IDL_PUBLISHES scoped_name id
{
-// publishes_decl : IDL_PUBLISHES scoped_name id
UTL_Scope *s = idl_global->scopes ().top_non_null ();
bool so_far_so_good = true;
AST_Decl::NodeType nt = AST_Decl::NT_type;
@@ -5765,7 +5739,6 @@ publishes_decl : IDL_PUBLISHES scoped_name id
consumes_decl : IDL_CONSUMES scoped_name id
{
-// consumes_decl : IDL_CONSUMES scoped_name id
UTL_Scope *s = idl_global->scopes ().top_non_null ();
bool so_far_so_good = true;
AST_Decl::NodeType nt = AST_Decl::NT_type;
@@ -5839,7 +5812,6 @@ consumes_decl : IDL_CONSUMES scoped_name id
home_decl :
home_header
{
-// home_decl : home_header
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Home *h = 0;
@@ -5877,7 +5849,6 @@ home_decl :
}
home_body
{
-// home_body
/*
* Done with this component - pop it off the scopes stack.
*/
@@ -5888,37 +5859,30 @@ home_decl :
home_header :
IDL_HOME
{
-// home_header : IDL_HOME
idl_global->set_parse_state (IDL_GlobalData::PS_HomeSeen);
}
defining_id
{
-// defining_id
idl_global->set_parse_state (IDL_GlobalData::PS_HomeIDSeen);
}
home_inheritance_spec
{
-// home_inheritance_spec
idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
}
supports_spec
{
-// supports_spec
idl_global->set_parse_state (IDL_GlobalData::PS_SupportSpecSeen);
}
IDL_MANAGES
{
-// IDL_MANAGES
idl_global->set_parse_state (IDL_GlobalData::PS_ManagesSeen);
}
scoped_name
{
-// scoped_name
idl_global->set_parse_state (IDL_GlobalData::PS_ManagesIDSeen);
}
primary_key_spec
{
-// primary_key_spec
idl_global->set_parse_state (IDL_GlobalData::PS_PrimaryKeySpecSeen);
/*
@@ -5968,17 +5932,14 @@ home_header :
home_inheritance_spec
: ':'
{
-// home_inheritance_spec ':'
idl_global->set_parse_state (IDL_GlobalData::PS_InheritColonSeen);
}
scoped_name
{
-// scoped_name
$<idlist>$ = $3;
}
- | /* EMPTY */
+ | %empty
{
-/* | EMPTY */
$$ = 0;
}
;
@@ -5987,12 +5948,10 @@ primary_key_spec
: IDL_PRIMARYKEY
scoped_name
{
-// primary_key_spec : IDL_PRIMARYKEY scoped_name
$$ = $2;
}
- | /* EMPTY */
+ | %empty
{
-/* | EMPTY */
$$ = 0;
}
;
@@ -6000,46 +5959,39 @@ primary_key_spec
home_body :
'{'
{
-// home_body : '{'
idl_global->set_parse_state (IDL_GlobalData::PS_HomeSqSeen);
}
home_exports
{
-// home_exports
idl_global->set_parse_state (IDL_GlobalData::PS_HomeBodySeen);
}
'}'
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_HomeQsSeen);
}
;
home_exports
: home_exports home_export
- | /* EMPTY */
+ | %empty
;
home_export
: export
| factory_decl
{
-// home_export : factory_decl
idl_global->set_parse_state (IDL_GlobalData::PS_FactoryDeclSeen);
}
- ';'
+ ';'
{
-// | ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
| finder_decl
{
-// | finder_decl
idl_global->set_parse_state (IDL_GlobalData::PS_FinderDeclSeen);
}
- ';'
+ ';'
{
-// | ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
;
@@ -6048,7 +6000,6 @@ factory_decl :
IDL_FACTORY
defining_id
{
-// factory_decl : IDL_FACTORY defining_id
UTL_Scope *s = idl_global->scopes ().top_non_null ();
UTL_ScopedName n ($2,
0);
@@ -6072,12 +6023,10 @@ factory_decl :
}
init_parameter_list
{
-// init_parameter_list
idl_global->set_parse_state (IDL_GlobalData::PS_OpParsCompleted);
}
opt_raises
{
-// opt_raises
UTL_Scope *s = idl_global->scopes ().top_non_null ();
idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseCompleted);
@@ -6100,7 +6049,6 @@ finder_decl :
IDL_FINDER
defining_id
{
-// finder_decl : IDL_FINDER defining_id
UTL_Scope *s = idl_global->scopes ().top_non_null ();
UTL_ScopedName n ($2,
0);
@@ -6128,12 +6076,10 @@ finder_decl :
}
init_parameter_list
{
-// init_parameter_list
idl_global->set_parse_state (IDL_GlobalData::PS_OpParsCompleted);
}
opt_raises
{
-// opt_raises
UTL_Scope *s = idl_global->scopes ().top_non_null ();
idl_global->set_parse_state (IDL_GlobalData::PS_OpRaiseCompleted);
@@ -6167,7 +6113,6 @@ event_concrete_forward_decl :
IDL_EVENTTYPE
defining_id
{
-// event_concrete_forward_decl : IDL_EVENTTYPE defining_id
UTL_Scope *s = idl_global->scopes ().top_non_null ();
UTL_ScopedName n ($2,
0);
@@ -6196,7 +6141,6 @@ event_abs_forward_decl :
IDL_EVENTTYPE
defining_id
{
-// event_abs_forward_decl : IDL_ABSTRACT IDL_EVENTTYPE defining_id
UTL_Scope *s = idl_global->scopes ().top_non_null ();
UTL_ScopedName n ($3,
0);
@@ -6224,7 +6168,6 @@ event_abs_decl :
event_abs_header
event_rest_of_header
{
-// event_abs_decl : event_abs_header event_rest_of_header
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_EventType *e = 0;
AST_Interface *i = 0;
@@ -6269,17 +6212,14 @@ event_abs_decl :
}
'{'
{
-// '{'
idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeSqSeen);
}
exports
{
-// exports
idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeBodySeen);
}
'}'
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeQsSeen);
/*
@@ -6294,7 +6234,6 @@ event_abs_header :
IDL_EVENTTYPE
defining_id
{
-// event_abs_header : IDL_ABSTRACT IDL_EVENTTYPE defining_id
$$ = $3;
}
;
@@ -6304,7 +6243,6 @@ event_custom_header :
IDL_EVENTTYPE
defining_id
{
-// event_custom_header : IDL_CUSTOM IDL_EVENTTYPE defining_id
idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeIDSeen);
ACE_DEBUG ((LM_DEBUG,
@@ -6322,7 +6260,6 @@ event_plain_header :
IDL_EVENTTYPE
defining_id
{
-// event_plain_header : IDL_EVENTTYPE defining_id
idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeIDSeen);
$$ = $2;
@@ -6332,12 +6269,10 @@ event_plain_header :
event_rest_of_header :
inheritance_spec
{
-// event_rest_of_header : inheritance_spec
idl_global->set_parse_state (IDL_GlobalData::PS_InheritSpecSeen);
}
supports_spec
{
-// supports_spec
idl_global->set_parse_state (IDL_GlobalData::PS_SupportSpecSeen);
ACE_NEW_RETURN ($<vhval>$,
@@ -6371,7 +6306,6 @@ event_decl :
event_header
event_rest_of_header
{
-// event_decl : event_header event_rest_of_header
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_EventType *e = 0;
AST_Interface *i = 0;
@@ -6421,17 +6355,14 @@ event_decl :
}
'{'
{
-// '{'
idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeSqSeen);
}
value_elements
{
-// value_elements
idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeBodySeen);
}
'}'
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_EventTypeQsSeen);
/*
@@ -6444,12 +6375,10 @@ event_decl :
event_header
: event_custom_header
{
-// event_header : event_custom_header
$$ = $1;
}
| event_plain_header
{
-// event_header : event_plain_header
$$ = $1;
}
;
@@ -6457,52 +6386,42 @@ event_header
formal_parameter_type
: IDL_TYPENAME
{
-// formal_parameter_type : IDL_TYPENAME
$<ntval>$ = AST_Decl::NT_type;
}
| IDL_STRUCT
{
-// IDL_STRUCT
$<ntval>$ = AST_Decl::NT_struct;
}
| IDL_UNION
{
-// IDL_UNION
$<ntval>$ = AST_Decl::NT_union;
}
| IDL_EVENTTYPE
{
-// IDL_EVENTTYPE
$<ntval>$ = AST_Decl::NT_eventtype;
}
| IDL_SEQUENCE
{
-// IDL_SEQUENCE
$<ntval>$ = AST_Decl::NT_sequence;
}
| IDL_INTERFACE
{
-// IDL_INTERFACE
$<ntval>$ = AST_Decl::NT_interface;
}
| IDL_VALUETYPE
{
-// IDL_VALUETYPE
$<ntval>$ = AST_Decl::NT_valuetype;
}
| IDL_ENUM
{
-// IDL_ENUM
$<ntval>$ = AST_Decl::NT_enum;
}
| IDL_EXCEPTION
{
-// IDL_EXCEPTION
$<ntval>$ = AST_Decl::NT_except;
}
| IDL_CONST const_type
{
-// IDL_CONST const_type
$<ntval>$ = AST_Decl::NT_const;
t_param_const_type = $2;
}
@@ -6511,12 +6430,9 @@ formal_parameter_type
at_least_one_formal_parameter
: formal_parameter formal_parameters
{
-// at_least_one_formal_parameter : formal_parameter formal_parameters
if ($2 == 0)
{
- ACE_NEW_RETURN ($2,
- FE_Utils::T_PARAMLIST_INFO,
- 1);
+ ACE_NEW_RETURN ($2, FE_Utils::T_PARAMLIST_INFO, 1);
}
$2->enqueue_head (*$1);
@@ -6538,59 +6454,49 @@ at_least_one_formal_parameter
return 1;
}
- $<plval>$ = $2;
+ $$ = $2;
}
;
formal_parameters
- : formal_parameters ','
- {
-// formal_parameters : formal_parameters ','
- // Maybe add a new parse state to set here.
- }
- formal_parameter
+ : formal_parameters ',' formal_parameter
{
-// formal_parameter
if ($1 == 0)
{
- ACE_NEW_RETURN ($1,
- FE_Utils::T_PARAMLIST_INFO,
- 1);
+ ACE_NEW_RETURN ($1, FE_Utils::T_PARAMLIST_INFO, 1);
}
- $1->enqueue_tail (*$4);
- $<plval>$ = $1;
+ $1->enqueue_tail (*$3);
+ $$ = $1;
- delete $4;
- $4 = 0;
+ delete $3;
+ $3 = 0;
}
- | /* EMPTY */
+ | %empty
{
-// /* EMPTY */
- $<plval>$ = 0;
+ $$ = 0;
}
;
formal_parameter
: formal_parameter_type IDENTIFIER
{
-// formal_parameter : formal_parameter_type IDENTIFIER
- ACE_NEW_RETURN ($<pival>$,
+ ACE_NEW_RETURN ($$,
FE_Utils::T_Param_Info,
1);
AST_Decl::NodeType nt = $1;
- $<pival>$->type_ = nt;
- $<pival>$->name_ = $2;
+ $$->type_ = nt;
+ $$->name_ = $2;
ACE::strdelete ($2);
$2 = 0;
if (nt == AST_Decl::NT_const)
{
- $<pival>$->const_type_ = t_param_const_type;
- $<pival>$->enum_const_type_decl_ =
+ $$->const_type_ = t_param_const_type;
+ $$->enum_const_type_decl_ =
tao_enum_constant_decl;
// Reset these values.
@@ -6600,13 +6506,13 @@ formal_parameter
}
| IDL_SEQUENCE '<' IDENTIFIER '>' IDENTIFIER
{
- ACE_NEW_RETURN ($<pival>$,
+ ACE_NEW_RETURN ($$,
FE_Utils::T_Param_Info,
1);
- $<pival>$->type_ = AST_Decl::NT_sequence;
- $<pival>$->seq_param_ref_ = $3;
- $<pival>$->name_ += $5;
+ $$->type_ = AST_Decl::NT_sequence;
+ $$->seq_param_ref_ = $3;
+ $$->name_ += $5;
ACE::strdelete ($3);
$3 = 0;
@@ -6618,45 +6524,35 @@ formal_parameter
at_least_one_formal_parameter_name
: formal_parameter_name formal_parameter_names
{
-// at_least_one_formal_parameter_name : formal_parameter_name formal_parameter_names
- ACE_NEW_RETURN ($<slval>$,
- UTL_StrList ($1,
- $2),
- 1);
+ ACE_NEW_RETURN ($$, UTL_StrList ($1, $2), 1);
}
;
formal_parameter_names
: formal_parameter_names ',' formal_parameter_name
{
-// formal_parameter_names : formal_parameter_names ',' formal_parameter_name
UTL_StrList *sl = 0;
- ACE_NEW_RETURN (sl,
- UTL_StrList ($3,
- 0),
- 1);
+ ACE_NEW_RETURN (sl, UTL_StrList ($3, 0), 1);
if ($1 == 0)
{
- $<slval>$ = sl;
+ $$ = sl;
}
else
{
$1->nconc (sl);
- $<slval>$ = $1;
+ $$ = $1;
}
}
- | /* EMPTY */
+ | %empty
{
-// /* EMPTY */
- $<slval>$ = 0;
+ $$ = 0;
}
;
formal_parameter_name
: IDENTIFIER
{
-// formal_parameter_name : IDENTIFIER
ACE_NEW_RETURN ($$,
UTL_String ($1, true),
1);
@@ -6666,12 +6562,10 @@ formal_parameter_name
porttype_decl
: IDL_PORTTYPE
{
-// porttype_decl : IDL_PORTTYPE
idl_global->set_parse_state (IDL_GlobalData::PS_PorttypeSeen);
}
- annotations IDENTIFIER
+ annotations_maybe IDENTIFIER
{
-// annotations IDENTIFIER
idl_global->set_parse_state (IDL_GlobalData::PS_PorttypeIDSeen);
UTL_Scope *s = idl_global->scopes ().top_non_null ();
@@ -6690,17 +6584,14 @@ porttype_decl
}
'{'
{
-// '{'
idl_global->set_parse_state (IDL_GlobalData::PS_PorttypeSqSeen);
}
at_least_one_port_export
{
-// at_least_one_port_export
idl_global->set_parse_state (IDL_GlobalData::PS_PorttypeBodySeen);
}
'}'
{
-// '}'
idl_global->set_parse_state (IDL_GlobalData::PS_PorttypeQsSeen);
// Done with this port type - pop it off the scopes stack.
@@ -6711,53 +6602,43 @@ porttype_decl
at_least_one_port_export
: port_export port_exports
{
-// at_least_one_port_export : port_export port_exports
}
;
port_exports
: port_exports port_export
{
-// port_exports : port_exports port_export
}
- | /* EMPTY */
+ | %empty
{
-// | /* EMPTY */
}
;
port_export
: provides_decl
{
-// port_export : provides_decl
}
';'
{
-// ';'
}
| uses_decl
{
-// | uses_decl
}
';'
{
-// ';'
}
| attribute
{
-// | attribute
idl_global->set_parse_state (IDL_GlobalData::PS_AttrDeclSeen);
}
';'
{
-// ';'
}
;
extended_port_decl
: IDL_PORT scoped_name IDENTIFIER
{
-// extended_port_decl : IDL_PORT scoped_name IDENTIFIER
idl_global->set_parse_state (IDL_GlobalData::PS_ExtendedPortDeclSeen);
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Decl *d =
@@ -6827,7 +6708,6 @@ extended_port_decl
}
| IDL_MIRRORPORT scoped_name IDENTIFIER
{
-// | IDL_MIRRORPORT scoped_name IDENTIFIER
idl_global->set_parse_state (IDL_GlobalData::PS_MirrorPortDeclSeen);
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Decl *d =
@@ -6876,9 +6756,8 @@ extended_port_decl
;
at_least_one_actual_parameter
- : annotations actual_parameter actual_parameters
+ : annotations_maybe actual_parameter actual_parameters
{
-// at_least_one_actual_parameter : annotations actual_parameter actual_parameters
if ($3 == 0)
{
ACE_NEW_RETURN ($3,
@@ -6892,9 +6771,8 @@ at_least_one_actual_parameter
;
actual_parameters
- : actual_parameters ',' annotations actual_parameter
+ : actual_parameters ',' annotations_maybe actual_parameter
{
-// actual_parameters : actual_parameters ',' annotations actual_parameter
if ($1 == 0)
{
ACE_NEW_RETURN ($1,
@@ -6905,9 +6783,8 @@ actual_parameters
$1->enqueue_tail ($4);
$<alval>$ = $1;
}
- | /* EMPTY */
+ | %empty
{
-// | /* EMPTY */
$<alval>$ = 0;
}
;
@@ -6915,7 +6792,6 @@ actual_parameters
actual_parameter
: expression
{
-// actual_parameter : expression
// To avoid grammar conflicts with this LALR(1) parser,
// we take advantage of the fact that an expression can
// be a scoped name. At that lower level, we create an
@@ -6979,17 +6855,14 @@ connector_decl
connector_header
: IDL_CONNECTOR
{
-// connector_header : IDL_CONNECTOR
idl_global->set_parse_state (IDL_GlobalData::PS_ConnectorSeen);
}
- annotations IDENTIFIER
+ annotations_maybe IDENTIFIER
{
-// annotations IDENTIFIER
idl_global->set_parse_state (IDL_GlobalData::PS_ConnectorIDSeen);
}
component_inheritance_spec
{
-// component_inheritance_spec
UTL_Scope *s = idl_global->scopes ().top_non_null ();
AST_Connector *parent = 0;
bool so_far_so_good = true;
@@ -7045,17 +6918,14 @@ connector_header
connector_body
: '{'
{
-// connector_body " '{'
idl_global->set_parse_state (IDL_GlobalData::PS_ConnectorSqSeen);
}
connector_exports
{
-// connector_exports
idl_global->set_parse_state (IDL_GlobalData::PS_ConnectorBodySeen);
}
'}'
{
-// '}
idl_global->set_parse_state (IDL_GlobalData::PS_ConnectorQsSeen);
// Done with this connector - pop it off the scope stack.
@@ -7065,48 +6935,40 @@ connector_body
connector_exports
: connector_exports connector_export
- | /* EMPTY */
+ | %empty
;
connector_export
: provides_decl
{
-// connector_export : provides_decl
idl_global->set_parse_state (IDL_GlobalData::PS_ProvidesDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
| uses_decl
{
-// | uses_decl
idl_global->set_parse_state (IDL_GlobalData::PS_UsesDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
| attribute
{
-// | attribute
idl_global->set_parse_state (IDL_GlobalData::PS_AttrDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
| extended_port_decl
{
-// | extended_port_decl
idl_global->set_parse_state (IDL_GlobalData::PS_ExtendedPortDeclSeen);
}
- ';'
+ ';'
{
-// ';'
idl_global->set_parse_state (IDL_GlobalData::PS_NoState);
}
;
diff --git a/TAO/TAO_IDL/fe/idl.yy.cpp b/TAO/TAO_IDL/fe/idl.yy.cpp
index 5a7237f40ef..f86edc5aaaf 100644
--- a/TAO/TAO_IDL/fe/idl.yy.cpp
+++ b/TAO/TAO_IDL/fe/idl.yy.cpp
@@ -1,6 +1,6 @@
-#line 1 "fe/idl.yy.cpp"
+#line 2 "fe/idl.yy.cpp"
-#line 3 "fe/idl.yy.cpp"
+#line 4 "fe/idl.yy.cpp"
#define YY_INT_ALIGNED short int
@@ -608,8 +608,8 @@ static void yynoreturn yy_fatal_error ( const char* msg );
YY_FATAL_ERROR( "token too large, exceeds YYLMAX" ); \
yy_flex_strncpy( yytext, (yytext_ptr), yyleng + 1 ); \
(yy_c_buf_p) = yy_cp;
-#define YY_NUM_RULES 111
-#define YY_END_OF_BUFFER 112
+#define YY_NUM_RULES 113
+#define YY_END_OF_BUFFER 114
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@@ -617,74 +617,75 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static const flex_int16_t yy_accept[593] =
+static const flex_int16_t yy_accept[605] =
{ 0,
- 108, 108, 112, 110, 108, 109, 109, 110, 110, 110,
- 110, 110, 83, 79, 110, 110, 110, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 108, 110, 109, 108, 0, 84, 0, 0,
- 0, 0, 82, 78, 75, 107, 0, 75, 83, 0,
- 77, 0, 0, 79, 73, 71, 72, 74, 74, 0,
- 0, 74, 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 68, 74, 74, 74, 74, 74,
-
- 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 108, 0, 0, 102, 0, 0, 0, 0,
- 0, 0, 0, 84, 0, 0, 0, 86, 0, 86,
- 0, 0, 82, 0, 78, 0, 75, 0, 106, 106,
- 75, 0, 76, 81, 74, 0, 85, 0, 0, 0,
- 74, 74, 74, 74, 1, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 69, 74, 74, 74,
-
- 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 74, 0, 0,
- 0, 0, 0, 0, 0, 0, 89, 87, 0, 0,
- 80, 0, 75, 76, 74, 85, 0, 0, 0, 0,
- 90, 0, 74, 65, 74, 74, 74, 74, 20, 27,
- 74, 74, 74, 74, 74, 74, 74, 74, 13, 74,
- 74, 74, 74, 74, 74, 74, 48, 74, 74, 74,
- 74, 24, 74, 74, 74, 74, 74, 74, 74, 60,
- 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 74, 57, 74, 31,
-
- 74, 74, 0, 0, 0, 0, 0, 0, 0, 103,
- 0, 0, 0, 0, 0, 0, 0, 87, 0, 88,
- 0, 66, 0, 0, 0, 74, 74, 64, 74, 74,
- 74, 74, 10, 74, 74, 74, 74, 74, 44, 74,
- 74, 74, 74, 18, 22, 74, 74, 67, 74, 33,
- 74, 74, 74, 74, 74, 30, 74, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 25, 74, 74, 74,
- 74, 74, 74, 74, 74, 74, 17, 74, 74, 28,
- 74, 98, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 91, 0, 2, 74, 74,
-
- 74, 74, 74, 74, 74, 35, 74, 23, 74, 74,
- 74, 46, 74, 49, 74, 74, 74, 3, 74, 32,
- 70, 74, 74, 74, 74, 38, 74, 4, 74, 74,
- 74, 14, 12, 74, 19, 74, 74, 55, 74, 74,
- 74, 74, 74, 0, 96, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 74,
- 74, 29, 74, 74, 74, 8, 21, 74, 74, 36,
- 74, 74, 58, 74, 74, 74, 74, 37, 74, 74,
- 74, 74, 74, 74, 74, 11, 74, 74, 74, 74,
- 15, 0, 0, 94, 94, 0, 0, 100, 0, 0,
-
- 99, 0, 0, 0, 0, 0, 0, 0, 34, 74,
- 74, 74, 43, 74, 74, 74, 74, 74, 50, 62,
- 74, 52, 74, 5, 16, 74, 39, 74, 59, 74,
- 26, 74, 0, 104, 104, 0, 0, 0, 0, 97,
- 0, 0, 0, 0, 0, 0, 0, 6, 42, 63,
- 45, 7, 47, 9, 74, 74, 53, 54, 74, 74,
- 41, 0, 0, 0, 92, 92, 0, 0, 95, 95,
- 0, 0, 0, 0, 61, 51, 74, 56, 0, 0,
- 105, 105, 0, 0, 0, 40, 0, 101, 0, 93,
- 93, 0
-
+ 110, 110, 114, 112, 110, 111, 111, 112, 112, 112,
+ 112, 112, 85, 81, 112, 112, 112, 75, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 110, 112, 111, 110, 0, 86, 0,
+ 0, 0, 0, 84, 80, 77, 109, 0, 77, 85,
+ 0, 79, 0, 0, 81, 73, 71, 72, 0, 76,
+ 76, 0, 0, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 68, 76, 76, 76,
+
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 110, 0, 0, 104, 0, 0,
+ 0, 0, 0, 0, 0, 86, 0, 0, 0, 88,
+ 0, 88, 0, 0, 84, 0, 80, 0, 77, 0,
+ 108, 108, 77, 0, 78, 83, 0, 76, 0, 87,
+ 0, 0, 0, 76, 76, 76, 76, 1, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 69,
+
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 0, 0, 0, 0, 0, 0, 0, 0, 91,
+ 89, 0, 0, 82, 0, 77, 78, 0, 76, 87,
+ 0, 0, 0, 0, 92, 0, 76, 65, 76, 76,
+ 76, 76, 20, 27, 76, 76, 76, 76, 76, 76,
+ 76, 76, 13, 76, 76, 76, 76, 76, 76, 76,
+ 48, 76, 76, 76, 76, 24, 76, 76, 76, 76,
+ 76, 76, 76, 60, 76, 76, 76, 76, 76, 76,
+ 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+
+ 76, 57, 76, 31, 76, 76, 0, 0, 0, 0,
+ 0, 0, 0, 105, 0, 0, 0, 0, 0, 0,
+ 0, 89, 0, 90, 0, 0, 66, 0, 0, 0,
+ 76, 76, 64, 76, 76, 76, 76, 10, 76, 76,
+ 76, 76, 76, 44, 76, 76, 76, 76, 18, 22,
+ 76, 76, 67, 76, 33, 76, 76, 76, 76, 76,
+ 30, 76, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 25, 76, 76, 76, 76, 76, 76, 76, 76,
+ 76, 17, 76, 76, 28, 76, 100, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+
+ 0, 93, 0, 2, 76, 76, 76, 76, 76, 76,
+ 76, 35, 76, 23, 76, 76, 76, 46, 76, 49,
+ 76, 76, 76, 3, 76, 32, 70, 76, 76, 76,
+ 76, 38, 76, 4, 76, 76, 76, 14, 12, 76,
+ 19, 76, 76, 55, 76, 76, 76, 76, 76, 0,
+ 98, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 76, 76, 29, 76,
+ 76, 76, 8, 21, 76, 76, 36, 76, 76, 58,
+ 76, 76, 76, 76, 37, 76, 76, 76, 76, 76,
+ 76, 76, 11, 76, 76, 76, 76, 15, 0, 0,
+
+ 96, 96, 0, 0, 102, 0, 0, 101, 0, 0,
+ 0, 0, 0, 0, 0, 0, 34, 76, 76, 76,
+ 43, 76, 76, 76, 76, 76, 50, 62, 76, 52,
+ 76, 5, 16, 76, 39, 76, 59, 76, 26, 76,
+ 0, 106, 106, 0, 0, 0, 0, 99, 0, 0,
+ 0, 0, 0, 0, 0, 0, 6, 42, 63, 45,
+ 7, 47, 9, 76, 76, 53, 54, 76, 76, 41,
+ 0, 0, 0, 94, 94, 0, 0, 97, 97, 0,
+ 0, 0, 0, 0, 61, 51, 76, 56, 0, 0,
+ 107, 107, 0, 0, 0, 0, 40, 0, 103, 0,
+
+ 95, 95, 74, 0
} ;
static const YY_CHAR yy_ec[256] =
@@ -695,14 +696,14 @@ static const YY_CHAR yy_ec[256] =
1, 5, 1, 6, 7, 1, 1, 1, 8, 1,
1, 9, 10, 1, 11, 12, 13, 14, 15, 15,
15, 15, 15, 15, 15, 16, 16, 17, 1, 18,
- 19, 20, 21, 1, 22, 23, 23, 24, 25, 26,
- 27, 27, 27, 27, 27, 28, 27, 27, 29, 27,
- 27, 30, 31, 32, 33, 27, 27, 34, 27, 27,
- 1, 35, 1, 1, 27, 1, 36, 37, 38, 39,
-
- 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
- 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
- 60, 27, 1, 1, 1, 1, 1, 1, 1, 1,
+ 19, 20, 21, 22, 23, 24, 24, 25, 26, 27,
+ 28, 28, 28, 28, 28, 29, 28, 28, 30, 28,
+ 28, 31, 32, 33, 34, 28, 28, 35, 28, 28,
+ 1, 36, 1, 1, 28, 1, 37, 38, 39, 40,
+
+ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ 61, 28, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -719,301 +720,308 @@ static const YY_CHAR yy_ec[256] =
1, 1, 1, 1, 1
} ;
-static const YY_CHAR yy_meta[61] =
+static const YY_CHAR yy_meta[62] =
{ 0,
1, 1, 2, 1, 1, 3, 1, 4, 1, 1,
1, 1, 1, 5, 5, 6, 1, 1, 1, 1,
- 3, 6, 6, 6, 6, 6, 7, 7, 7, 7,
- 7, 7, 7, 7, 3, 5, 5, 6, 6, 6,
- 5, 7, 7, 7, 7, 7, 7, 7, 8, 7,
- 7, 7, 8, 7, 8, 9, 8, 7, 8, 7
+ 3, 1, 6, 6, 6, 6, 6, 7, 7, 7,
+ 7, 7, 7, 7, 7, 3, 5, 5, 6, 6,
+ 6, 5, 7, 7, 7, 7, 7, 7, 7, 8,
+ 7, 7, 7, 8, 7, 8, 9, 8, 7, 8,
+ 7
} ;
-static const flex_int16_t yy_base[621] =
+static const flex_int16_t yy_base[634] =
{ 0,
- 0, 59, 1177, 1178, 60, 1178, 1178, 57, 1141, 55,
- 58, 66, 81, 74, 1158, 1156, 1153, 0, 1150, 70,
- 1134, 1140, 54, 1119, 68, 37, 68, 86, 1128, 1117,
- 33, 1116, 87, 1129, 70, 79, 98, 96, 47, 92,
- 92, 30, 142, 153, 1143, 143, 77, 157, 146, 1155,
- 156, 161, 151, 167, 202, 1178, 184, 187, 197, 232,
- 1178, 209, 0, 238, 1178, 1178, 1178, 0, 1134, 223,
- 1126, 1115, 1126, 1104, 1113, 1096, 1100, 1104, 1099, 1116,
- 124, 1097, 1109, 1093, 1104, 1091, 1106, 1107, 1106, 137,
- 1093, 1087, 1093, 1089, 134, 196, 1090, 1085, 1098, 1089,
-
- 1080, 1079, 1093, 1077, 1078, 149, 1093, 1085, 1092, 98,
- 1077, 1073, 1074, 1080, 1067, 1071, 154, 1081, 1073, 1075,
- 1075, 1062, 233, 0, 192, 1178, 1110, 265, 1071, 1075,
- 1069, 1059, 1092, 259, 225, 249, 260, 1178, 1102, 1101,
- 268, 1100, 273, 0, 278, 290, 1178, 304, 1178, 306,
- 0, 300, 305, 0, 1076, 261, 321, 314, 1098, 243,
- 1065, 1079, 1048, 1066, 0, 1048, 1053, 1059, 1045, 1046,
- 281, 1041, 1059, 1057, 1038, 1044, 1042, 1050, 1034, 1049,
- 1047, 1050, 1032, 1044, 1033, 1026, 1041, 1044, 1037, 1042,
- 1024, 1020, 1020, 1030, 1033, 1014, 0, 1016, 37, 1013,
-
- 1022, 1014, 1028, 1010, 1012, 1011, 278, 1012, 1007, 1012,
- 1020, 1009, 1014, 1003, 1000, 1016, 1018, 1000, 1046, 1045,
- 1003, 1009, 999, 1011, 369, 326, 1178, 1178, 329, 1038,
- 0, 339, 350, 1178, 1020, 340, 1038, 332, 342, 0,
- 1178, 0, 1005, 0, 989, 987, 996, 999, 0, 0,
- 988, 997, 295, 996, 985, 978, 986, 978, 0, 976,
- 979, 979, 988, 988, 971, 989, 0, 971, 968, 969,
- 974, 0, 978, 969, 971, 973, 959, 960, 978, 958,
- 976, 975, 966, 965, 968, 957, 966, 969, 949, 954,
- 964, 951, 962, 961, 343, 949, 955, 0, 956, 0,
-
- 942, 950, 987, 396, 952, 942, 950, 947, 941, 1178,
- 226, 418, 943, 947, 941, 931, 353, 1178, 975, 1178,
- 974, 0, 389, 434, 973, 925, 943, 0, 941, 941,
- 927, 937, 0, 926, 914, 924, 924, 930, 0, 914,
- 913, 914, 913, 0, 0, 921, 909, 0, 922, 0,
- 922, 908, 920, 908, 918, 0, 897, 896, 902, 899,
- 914, 309, 898, 902, 901, 905, 0, 906, 892, 893,
- 902, 908, 903, 903, 905, 887, 0, 890, 883, 0,
- 888, 1178, 462, 384, 881, 391, 887, 928, 927, 885,
- 891, 881, 893, 363, 470, 1178, 920, 0, 889, 870,
-
- 876, 884, 868, 882, 866, 0, 865, 0, 859, 874,
- 857, 0, 862, 0, 771, 752, 739, 0, 714, 0,
- 0, 707, 697, 701, 689, 0, 684, 0, 679, 687,
- 670, 0, 0, 668, 0, 667, 679, 0, 671, 678,
- 668, 646, 659, 498, 1178, 513, 405, 409, 413, 533,
- 657, 676, 432, 638, 618, 608, 605, 541, 635, 584,
- 583, 0, 585, 577, 572, 0, 0, 563, 554, 0,
- 553, 553, 0, 525, 529, 522, 515, 0, 506, 506,
- 485, 501, 492, 477, 490, 0, 480, 463, 459, 440,
- 0, 569, 440, 1178, 442, 476, 519, 1178, 484, 436,
-
- 1178, 584, 449, 434, 528, 420, 396, 454, 0, 407,
- 387, 377, 0, 385, 370, 358, 341, 327, 0, 0,
- 339, 0, 321, 0, 0, 308, 0, 323, 0, 314,
- 0, 299, 478, 1178, 484, 318, 592, 547, 607, 1178,
- 615, 549, 450, 630, 635, 587, 275, 0, 0, 0,
- 0, 0, 0, 0, 236, 199, 0, 0, 167, 136,
- 0, 650, 654, 555, 1178, 612, 658, 621, 1178, 673,
- 677, 174, 172, 658, 0, 0, 70, 0, 681, 684,
- 1178, 686, 96, 688, 696, 0, 700, 1178, 707, 1178,
- 709, 1178, 730, 739, 744, 751, 759, 768, 773, 779,
-
- 788, 794, 796, 800, 809, 815, 817, 819, 822, 828,
- 834, 840, 846, 852, 861, 870, 879, 888, 897, 906
+ 0, 60, 1192, 1193, 61, 1193, 1193, 58, 1155, 56,
+ 59, 67, 83, 75, 1173, 1171, 1168, 1150, 0, 1163,
+ 71, 1147, 1153, 54, 1132, 68, 37, 71, 48, 1141,
+ 1130, 33, 1129, 77, 1142, 87, 76, 66, 91, 52,
+ 86, 101, 100, 144, 154, 1157, 140, 147, 158, 147,
+ 1169, 157, 162, 152, 179, 207, 1193, 176, 170, 199,
+ 238, 1193, 227, 0, 244, 1193, 1193, 1193, 1126, 0,
+ 1146, 167, 1138, 1127, 1138, 1116, 1125, 1108, 1112, 1116,
+ 1111, 1128, 132, 1109, 1121, 1105, 1116, 1103, 1118, 1119,
+ 1118, 138, 1105, 1099, 1105, 1101, 175, 150, 1102, 1097,
+
+ 1110, 1101, 1092, 1091, 1105, 1089, 1090, 66, 1105, 1097,
+ 1104, 154, 1089, 1085, 1086, 1092, 1079, 1083, 163, 1093,
+ 1085, 1087, 1087, 1074, 260, 0, 187, 1193, 1123, 272,
+ 1083, 1087, 1081, 1071, 1105, 266, 210, 221, 267, 1193,
+ 1115, 1114, 275, 1113, 280, 0, 285, 298, 1193, 312,
+ 1193, 314, 0, 308, 313, 0, 1070, 1087, 238, 302,
+ 322, 1110, 290, 1076, 1090, 1059, 1077, 0, 1059, 1064,
+ 1070, 1056, 1057, 288, 1052, 1070, 1068, 1049, 1055, 1053,
+ 1061, 1045, 1060, 1058, 1061, 1043, 1055, 1044, 1037, 1052,
+ 1055, 1048, 1053, 1035, 1031, 1031, 1041, 1044, 1025, 0,
+
+ 1027, 281, 1024, 1033, 1025, 1039, 1021, 1023, 1022, 289,
+ 1023, 1018, 1023, 1031, 1020, 1025, 1014, 1011, 1027, 1029,
+ 1011, 1058, 1057, 1014, 1020, 1010, 1022, 378, 335, 1193,
+ 1193, 337, 1050, 0, 342, 348, 1193, 1006, 1030, 368,
+ 1049, 255, 353, 0, 1193, 0, 1015, 0, 999, 997,
+ 1006, 1009, 0, 0, 998, 1007, 297, 1006, 995, 988,
+ 996, 988, 0, 986, 989, 989, 998, 998, 981, 999,
+ 0, 981, 978, 979, 984, 0, 988, 979, 981, 983,
+ 969, 970, 988, 968, 986, 985, 976, 975, 978, 967,
+ 976, 979, 959, 964, 974, 961, 972, 971, 355, 959,
+
+ 965, 0, 966, 0, 952, 960, 998, 381, 962, 952,
+ 960, 957, 951, 1193, 203, 413, 953, 957, 951, 941,
+ 296, 1193, 986, 1193, 985, 936, 0, 395, 429, 983,
+ 934, 952, 0, 950, 950, 936, 946, 0, 935, 923,
+ 933, 933, 939, 0, 923, 922, 923, 922, 0, 0,
+ 930, 918, 0, 931, 0, 931, 917, 929, 917, 927,
+ 0, 906, 905, 911, 908, 923, 135, 907, 911, 910,
+ 914, 0, 915, 901, 902, 911, 917, 912, 912, 914,
+ 896, 0, 899, 892, 0, 897, 1193, 458, 364, 890,
+ 434, 896, 938, 937, 894, 900, 890, 902, 901, 342,
+
+ 466, 1193, 929, 0, 897, 878, 884, 892, 876, 890,
+ 874, 0, 873, 0, 867, 882, 865, 0, 870, 0,
+ 887, 868, 758, 0, 761, 0, 0, 741, 703, 720,
+ 719, 0, 700, 0, 684, 692, 675, 0, 0, 673,
+ 0, 672, 685, 0, 677, 684, 683, 661, 678, 481,
+ 1193, 496, 400, 386, 511, 516, 683, 712, 437, 676,
+ 661, 668, 664, 647, 524, 687, 625, 613, 0, 614,
+ 606, 580, 0, 0, 579, 578, 0, 585, 586, 0,
+ 570, 578, 569, 538, 0, 529, 542, 520, 539, 518,
+ 503, 508, 0, 483, 481, 475, 462, 0, 539, 411,
+
+ 1193, 443, 473, 565, 1193, 503, 406, 1193, 573, 417,
+ 432, 577, 438, 414, 370, 449, 0, 410, 382, 383,
+ 0, 392, 375, 369, 372, 358, 0, 0, 357, 0,
+ 332, 0, 0, 319, 0, 334, 0, 320, 0, 319,
+ 525, 1193, 531, 313, 593, 553, 597, 1193, 601, 569,
+ 473, 618, 622, 625, 243, 215, 0, 0, 0, 0,
+ 0, 0, 0, 189, 169, 0, 0, 180, 141, 0,
+ 640, 644, 647, 1193, 649, 659, 663, 1193, 668, 673,
+ 148, 134, 531, 36, 0, 0, 43, 0, 683, 675,
+ 1193, 679, 63, 687, 689, 0, 0, 698, 1193, 702,
+
+ 1193, 712, 1193, 1193, 733, 742, 747, 754, 762, 771,
+ 776, 782, 791, 797, 799, 803, 812, 818, 820, 822,
+ 825, 831, 837, 843, 849, 855, 864, 873, 882, 891,
+ 900, 909, 918
} ;
-static const flex_int16_t yy_def[621] =
+static const flex_int16_t yy_def[634] =
{ 0,
- 592, 1, 592, 592, 592, 592, 592, 593, 594, 592,
- 592, 592, 592, 592, 592, 592, 592, 595, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 592, 592, 592, 592, 593, 592, 596, 592,
- 597, 592, 13, 592, 592, 592, 598, 55, 592, 592,
- 592, 592, 599, 592, 592, 592, 592, 595, 595, 600,
- 601, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
-
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 592, 44, 44, 592, 125, 592, 592, 592,
- 592, 592, 592, 592, 593, 593, 593, 592, 592, 592,
- 592, 602, 592, 603, 592, 592, 592, 598, 592, 598,
- 58, 592, 592, 599, 595, 600, 592, 604, 592, 592,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
-
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 605, 592,
- 592, 592, 592, 592, 592, 593, 592, 592, 592, 606,
- 603, 592, 592, 592, 595, 592, 592, 600, 600, 607,
- 592, 608, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
-
- 595, 595, 605, 592, 592, 592, 592, 592, 225, 592,
- 225, 592, 592, 592, 592, 592, 593, 592, 592, 592,
- 592, 595, 600, 600, 609, 595, 595, 595, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 592, 592, 592, 592, 592, 592, 610, 592, 592,
- 592, 592, 592, 600, 324, 592, 611, 595, 595, 595,
-
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 595, 592, 592, 592, 612, 592, 592, 592,
- 592, 610, 592, 592, 592, 592, 592, 324, 613, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 592, 612, 592, 612, 614, 592, 592, 615, 592,
-
- 592, 592, 592, 592, 592, 592, 600, 592, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 595, 614, 592, 614, 615, 592, 616, 592, 592,
- 592, 617, 592, 592, 592, 592, 592, 595, 595, 595,
- 595, 595, 595, 595, 595, 595, 595, 595, 595, 595,
- 595, 592, 592, 616, 592, 616, 592, 617, 592, 617,
- 618, 619, 592, 592, 595, 595, 595, 595, 592, 618,
- 592, 618, 619, 592, 620, 595, 592, 592, 620, 592,
- 620, 0, 592, 592, 592, 592, 592, 592, 592, 592,
-
- 592, 592, 592, 592, 592, 592, 592, 592, 592, 592,
- 592, 592, 592, 592, 592, 592, 592, 592, 592, 592
+ 604, 1, 604, 604, 604, 604, 604, 605, 606, 604,
+ 604, 604, 604, 604, 604, 604, 604, 604, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 607, 607, 607, 604, 604, 604, 604, 605, 604, 608,
+ 604, 609, 604, 13, 604, 604, 604, 610, 56, 604,
+ 604, 604, 604, 611, 604, 604, 604, 604, 604, 607,
+ 607, 612, 613, 607, 607, 607, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 607, 607, 607, 607, 604, 45, 45, 604, 127, 604,
+ 604, 604, 604, 604, 604, 604, 605, 605, 605, 604,
+ 604, 604, 604, 614, 604, 615, 604, 604, 604, 610,
+ 604, 610, 59, 604, 604, 611, 604, 607, 612, 604,
+ 616, 604, 604, 607, 607, 607, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 607, 617, 604, 604, 604, 604, 604, 604, 605, 604,
+ 604, 604, 618, 615, 604, 604, 604, 604, 607, 604,
+ 604, 612, 612, 619, 604, 620, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+
+ 607, 607, 607, 607, 607, 607, 617, 604, 604, 604,
+ 604, 604, 228, 604, 228, 604, 604, 604, 604, 604,
+ 605, 604, 604, 604, 604, 604, 607, 612, 612, 621,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 604, 604, 604, 604,
+ 604, 604, 622, 604, 604, 604, 604, 604, 604, 612,
+
+ 329, 604, 623, 607, 607, 607, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 604,
+ 604, 604, 624, 604, 604, 604, 604, 622, 604, 604,
+ 604, 604, 604, 604, 329, 625, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 604, 624,
+
+ 604, 624, 626, 604, 604, 627, 604, 604, 604, 604,
+ 604, 604, 604, 604, 612, 604, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 626, 604, 626, 627, 604, 628, 604, 604, 604, 629,
+ 604, 604, 604, 604, 604, 604, 607, 607, 607, 607,
+ 607, 607, 607, 607, 607, 607, 607, 607, 607, 607,
+ 604, 604, 628, 604, 628, 604, 629, 604, 629, 630,
+ 631, 604, 604, 604, 607, 607, 607, 607, 604, 630,
+ 604, 630, 631, 604, 632, 633, 607, 604, 604, 632,
+
+ 604, 632, 604, 0, 604, 604, 604, 604, 604, 604,
+ 604, 604, 604, 604, 604, 604, 604, 604, 604, 604,
+ 604, 604, 604, 604, 604, 604, 604, 604, 604, 604,
+ 604, 604, 604
} ;
-static const flex_int16_t yy_nxt[1239] =
+static const flex_int16_t yy_nxt[1255] =
{ 0,
4, 5, 6, 7, 5, 8, 4, 9, 4, 4,
10, 11, 12, 13, 14, 14, 15, 16, 4, 17,
- 7, 18, 18, 18, 18, 19, 18, 20, 21, 18,
- 18, 22, 18, 18, 4, 23, 24, 25, 26, 27,
- 28, 29, 30, 31, 18, 18, 32, 33, 34, 35,
- 36, 18, 37, 38, 39, 40, 41, 42, 18, 18,
- 43, 46, 48, 43, 46, 44, 52, 121, 53, 54,
- 54, 55, 55, 55, 56, 70, 83, 71, 57, 45,
- 94, 95, 48, 122, 281, 58, 84, 64, 64, 64,
- 74, 49, 58, 282, 59, 59, 60, 61, 62, 115,
-
- 75, 584, 76, 79, 61, 62, 116, 102, 77, 586,
- 80, 49, 61, 62, 63, 85, 86, 81, 103, 61,
- 62, 89, 97, 82, 87, 104, 88, 119, 105, 90,
- 98, 106, 91, 108, 107, 110, 99, 109, 111, 63,
- 117, 120, 100, 123, 46, 118, 123, 46, 124, 204,
- 112, 113, 205, 114, 125, 126, 126, 127, 134, 137,
- 137, 134, 135, 140, 143, 143, 128, 128, 128, 141,
- 141, 170, 171, 126, 55, 55, 55, 572, 58, 584,
- 145, 145, 145, 186, 144, 180, 149, 150, 187, 142,
- 61, 62, 199, 129, 578, 181, 130, 212, 200, 131,
-
- 151, 151, 151, 132, 150, 61, 62, 213, 58, 144,
- 59, 59, 60, 577, 142, 55, 55, 55, 152, 152,
- 61, 62, 153, 153, 153, 61, 146, 147, 157, 147,
- 48, 388, 592, 188, 123, 61, 62, 123, 592, 124,
- 61, 146, 147, 58, 189, 60, 60, 60, 147, 58,
- 241, 64, 64, 64, 48, 61, 62, 158, 576, 49,
- 134, 61, 62, 134, 135, 48, 157, 126, 126, 220,
- 61, 62, 592, 226, 226, 228, 61, 62, 128, 128,
- 128, 229, 229, 49, 58, 126, 143, 143, 60, 58,
- 575, 145, 145, 145, 49, 158, 61, 62, 242, 232,
-
- 232, 61, 62, 233, 233, 233, 149, 150, 149, 150,
- 574, 61, 62, 153, 153, 153, 61, 62, 153, 153,
- 153, 290, 236, 537, 150, 236, 150, 239, 239, 252,
- 234, 48, 234, 291, 253, 254, 318, 157, 561, 317,
- 317, 236, 319, 319, 236, 234, 426, 157, 237, 333,
- 334, 234, 233, 233, 233, 323, 323, 560, 48, 559,
- 49, 558, 427, 233, 233, 233, 158, 237, 157, 240,
- 309, 310, 310, 311, 557, 147, 158, 147, 556, 555,
- 554, 373, 312, 312, 312, 447, 374, 49, 447, 310,
- 147, 375, 449, 376, 157, 449, 147, 158, 382, 382,
-
- 383, 157, 394, 394, 450, 450, 450, 494, 495, 313,
- 496, 553, 314, 496, 449, 315, 382, 449, 552, 316,
- 310, 310, 389, 158, 551, 495, 450, 450, 450, 550,
- 158, 312, 312, 312, 501, 501, 502, 538, 310, 157,
- 538, 549, 494, 495, 494, 495, 548, 395, 395, 395,
- 542, 571, 501, 542, 571, 395, 395, 395, 395, 395,
- 495, 396, 495, 444, 445, 445, 444, 547, 158, 395,
- 395, 395, 395, 395, 395, 446, 446, 446, 534, 535,
- 534, 535, 445, 458, 458, 458, 534, 535, 543, 537,
- 532, 458, 458, 458, 458, 458, 535, 531, 535, 444,
-
- 445, 445, 444, 530, 535, 458, 458, 458, 458, 458,
- 458, 492, 492, 492, 444, 445, 445, 444, 445, 529,
- 497, 498, 498, 497, 499, 528, 446, 446, 446, 544,
- 527, 526, 545, 445, 497, 498, 498, 497, 499, 498,
- 525, 546, 546, 546, 524, 523, 450, 450, 450, 565,
- 566, 569, 570, 498, 507, 507, 507, 565, 566, 522,
- 521, 520, 507, 507, 507, 507, 507, 566, 519, 570,
- 444, 445, 445, 444, 518, 566, 507, 507, 507, 507,
- 507, 507, 492, 492, 492, 539, 540, 540, 539, 445,
- 517, 573, 516, 562, 498, 498, 562, 541, 541, 541,
-
- 546, 546, 546, 515, 540, 563, 563, 563, 539, 540,
- 540, 539, 498, 514, 565, 566, 539, 540, 540, 539,
- 567, 567, 567, 569, 570, 513, 512, 540, 541, 541,
- 541, 544, 566, 511, 545, 540, 544, 510, 509, 545,
- 572, 570, 396, 546, 546, 546, 506, 505, 546, 546,
- 546, 562, 498, 498, 562, 579, 498, 498, 579, 585,
- 540, 540, 585, 563, 563, 563, 504, 563, 563, 563,
- 498, 567, 567, 567, 498, 569, 570, 503, 540, 581,
- 582, 453, 579, 498, 498, 579, 581, 582, 581, 582,
- 588, 588, 500, 570, 587, 587, 587, 582, 590, 591,
-
- 491, 498, 498, 498, 582, 490, 582, 489, 588, 590,
- 591, 590, 591, 587, 587, 587, 591, 488, 487, 486,
- 498, 485, 484, 483, 482, 481, 480, 591, 479, 591,
- 47, 47, 47, 47, 47, 47, 47, 47, 47, 50,
- 478, 50, 50, 50, 50, 50, 50, 50, 68, 68,
- 68, 68, 68, 136, 136, 136, 477, 476, 136, 139,
- 475, 139, 139, 139, 139, 139, 139, 139, 148, 148,
- 148, 148, 148, 148, 148, 148, 148, 154, 154, 156,
- 156, 156, 156, 156, 156, 156, 156, 156, 159, 474,
- 159, 159, 159, 159, 159, 159, 159, 230, 230, 230,
-
- 231, 231, 238, 238, 238, 473, 472, 238, 238, 303,
- 303, 303, 303, 303, 303, 303, 303, 303, 321, 321,
- 321, 324, 324, 325, 325, 397, 397, 397, 452, 452,
- 452, 452, 452, 452, 452, 452, 452, 459, 459, 459,
- 493, 493, 493, 493, 493, 493, 493, 493, 493, 508,
- 508, 508, 533, 533, 533, 533, 533, 533, 533, 533,
- 533, 536, 536, 536, 536, 536, 536, 536, 536, 536,
- 564, 564, 564, 564, 564, 564, 564, 564, 564, 568,
- 568, 568, 568, 568, 568, 568, 568, 568, 580, 580,
- 580, 580, 580, 580, 580, 580, 580, 583, 583, 583,
-
- 583, 583, 583, 583, 583, 583, 589, 589, 589, 589,
- 589, 589, 589, 589, 589, 471, 470, 469, 468, 467,
- 466, 465, 464, 463, 462, 461, 460, 396, 457, 456,
- 455, 454, 388, 453, 451, 448, 443, 442, 441, 440,
- 439, 438, 437, 436, 435, 434, 433, 432, 431, 430,
- 429, 428, 425, 424, 423, 422, 421, 420, 419, 418,
- 417, 416, 415, 414, 413, 412, 411, 410, 409, 408,
- 407, 406, 405, 404, 403, 402, 401, 400, 399, 398,
- 396, 320, 318, 393, 392, 391, 390, 592, 387, 386,
- 385, 384, 304, 381, 380, 379, 378, 377, 372, 371,
-
- 370, 369, 368, 367, 366, 365, 364, 363, 362, 361,
- 360, 359, 358, 357, 356, 355, 354, 353, 352, 351,
- 350, 349, 348, 347, 346, 345, 344, 343, 342, 341,
- 340, 339, 338, 337, 336, 335, 332, 331, 330, 329,
- 328, 327, 326, 70, 322, 320, 308, 307, 306, 305,
- 219, 304, 302, 301, 300, 299, 298, 297, 296, 295,
- 294, 293, 292, 289, 288, 287, 286, 285, 284, 283,
- 280, 279, 278, 277, 276, 275, 274, 273, 272, 271,
- 270, 269, 268, 267, 266, 265, 264, 263, 262, 261,
- 260, 259, 258, 257, 256, 255, 251, 250, 249, 248,
-
- 247, 246, 245, 244, 243, 241, 235, 227, 227, 227,
- 225, 224, 223, 222, 221, 219, 218, 217, 216, 215,
- 214, 211, 210, 209, 208, 207, 206, 203, 202, 201,
- 198, 197, 196, 195, 194, 193, 192, 191, 190, 185,
- 184, 183, 182, 179, 178, 177, 176, 175, 174, 173,
- 172, 169, 168, 167, 166, 165, 164, 163, 162, 161,
- 160, 155, 138, 133, 101, 96, 93, 92, 78, 73,
- 72, 69, 67, 66, 65, 51, 592, 3, 592, 592,
- 592, 592, 592, 592, 592, 592, 592, 592, 592, 592,
- 592, 592, 592, 592, 592, 592, 592, 592, 592, 592,
-
- 592, 592, 592, 592, 592, 592, 592, 592, 592, 592,
- 592, 592, 592, 592, 592, 592, 592, 592, 592, 592,
- 592, 592, 592, 592, 592, 592, 592, 592, 592, 592,
- 592, 592, 592, 592, 592, 592, 592, 592
+ 7, 18, 19, 19, 19, 19, 20, 19, 21, 22,
+ 19, 19, 23, 19, 19, 4, 24, 25, 26, 27,
+ 28, 29, 30, 31, 32, 19, 19, 33, 34, 35,
+ 36, 37, 19, 38, 39, 40, 41, 42, 43, 19,
+ 19, 44, 47, 49, 44, 47, 45, 53, 594, 54,
+ 55, 55, 56, 56, 56, 57, 72, 85, 73, 58,
+ 46, 96, 97, 597, 91, 596, 59, 86, 65, 65,
+ 65, 76, 92, 50, 59, 93, 60, 60, 61, 62,
+
+ 63, 77, 110, 78, 81, 117, 111, 62, 63, 79,
+ 202, 82, 118, 99, 62, 63, 203, 64, 83, 87,
+ 88, 100, 62, 63, 84, 104, 107, 101, 89, 108,
+ 90, 112, 109, 102, 113, 119, 105, 121, 123, 581,
+ 120, 47, 64, 106, 47, 125, 114, 115, 125, 116,
+ 126, 122, 49, 594, 124, 127, 128, 128, 129, 136,
+ 139, 139, 136, 137, 142, 145, 145, 130, 130, 130,
+ 143, 143, 160, 432, 128, 56, 56, 56, 151, 152,
+ 173, 174, 50, 153, 153, 153, 146, 183, 191, 433,
+ 59, 144, 147, 147, 147, 131, 152, 184, 132, 192,
+
+ 588, 133, 161, 62, 63, 134, 207, 215, 393, 208,
+ 59, 146, 60, 60, 61, 49, 144, 216, 62, 63,
+ 56, 56, 56, 62, 63, 189, 49, 587, 604, 586,
+ 190, 62, 148, 149, 604, 149, 154, 154, 62, 63,
+ 155, 155, 155, 160, 585, 50, 62, 148, 149, 59,
+ 604, 61, 61, 61, 149, 59, 50, 65, 65, 65,
+ 160, 125, 62, 63, 125, 584, 126, 136, 62, 63,
+ 136, 137, 49, 161, 128, 128, 223, 62, 63, 583,
+ 229, 229, 231, 62, 63, 130, 130, 130, 232, 232,
+ 161, 59, 128, 145, 145, 61, 59, 245, 147, 147,
+
+ 147, 49, 50, 240, 62, 63, 240, 235, 235, 62,
+ 63, 236, 236, 236, 151, 152, 151, 152, 545, 62,
+ 63, 155, 155, 155, 62, 63, 155, 155, 155, 285,
+ 241, 50, 152, 294, 152, 243, 243, 256, 286, 237,
+ 49, 237, 257, 258, 322, 295, 246, 160, 321, 321,
+ 323, 323, 338, 339, 237, 236, 236, 236, 160, 570,
+ 237, 236, 236, 236, 569, 453, 328, 328, 453, 240,
+ 50, 568, 240, 567, 149, 160, 149, 161, 244, 313,
+ 314, 314, 315, 387, 387, 388, 566, 503, 161, 149,
+ 503, 316, 316, 316, 378, 149, 241, 565, 314, 379,
+
+ 160, 387, 501, 502, 380, 161, 381, 546, 400, 400,
+ 546, 564, 563, 501, 502, 314, 314, 394, 550, 317,
+ 502, 550, 318, 562, 561, 319, 316, 316, 316, 320,
+ 161, 502, 560, 314, 160, 455, 559, 558, 455, 508,
+ 508, 509, 401, 401, 401, 501, 502, 456, 456, 456,
+ 557, 401, 401, 401, 401, 401, 402, 508, 556, 450,
+ 451, 451, 450, 502, 161, 401, 401, 401, 401, 401,
+ 401, 452, 452, 452, 580, 542, 543, 580, 451, 465,
+ 465, 465, 450, 451, 451, 450, 555, 551, 465, 465,
+ 465, 465, 465, 543, 499, 499, 499, 450, 451, 451,
+
+ 450, 451, 465, 465, 465, 465, 465, 465, 545, 452,
+ 452, 452, 455, 540, 539, 455, 451, 504, 505, 505,
+ 504, 506, 538, 537, 456, 456, 456, 542, 543, 456,
+ 456, 456, 595, 542, 543, 595, 505, 515, 515, 515,
+ 450, 451, 451, 450, 536, 543, 515, 515, 515, 515,
+ 515, 543, 499, 499, 499, 574, 575, 535, 534, 451,
+ 515, 515, 515, 515, 515, 515, 504, 505, 505, 504,
+ 506, 578, 579, 575, 547, 548, 548, 547, 552, 533,
+ 532, 553, 531, 530, 529, 505, 549, 549, 549, 579,
+ 554, 554, 554, 548, 571, 505, 505, 571, 547, 548,
+
+ 548, 547, 547, 548, 548, 547, 572, 572, 572, 528,
+ 576, 576, 576, 505, 549, 549, 549, 548, 527, 552,
+ 526, 548, 553, 552, 525, 524, 553, 581, 523, 582,
+ 522, 554, 554, 554, 521, 554, 554, 554, 554, 554,
+ 554, 571, 505, 505, 571, 589, 505, 505, 589, 574,
+ 575, 574, 575, 572, 572, 572, 520, 572, 572, 572,
+ 505, 548, 548, 519, 505, 578, 579, 575, 518, 575,
+ 578, 579, 576, 576, 576, 591, 592, 591, 592, 548,
+ 517, 591, 592, 579, 589, 505, 505, 589, 579, 599,
+ 599, 601, 602, 592, 402, 592, 598, 598, 598, 592,
+
+ 505, 505, 514, 505, 601, 602, 513, 599, 512, 602,
+ 511, 598, 598, 598, 601, 602, 510, 459, 505, 507,
+ 498, 497, 602, 496, 495, 494, 493, 492, 491, 490,
+ 489, 488, 602, 48, 48, 48, 48, 48, 48, 48,
+ 48, 48, 51, 487, 51, 51, 51, 51, 51, 51,
+ 51, 70, 70, 70, 70, 70, 138, 138, 138, 486,
+ 485, 138, 141, 484, 141, 141, 141, 141, 141, 141,
+ 141, 150, 150, 150, 150, 150, 150, 150, 150, 150,
+ 156, 156, 159, 159, 159, 159, 159, 159, 159, 159,
+ 159, 162, 483, 162, 162, 162, 162, 162, 162, 162,
+
+ 233, 233, 233, 234, 234, 242, 242, 242, 482, 481,
+ 242, 242, 307, 307, 307, 307, 307, 307, 307, 307,
+ 307, 325, 325, 325, 329, 329, 330, 330, 403, 403,
+ 403, 458, 458, 458, 458, 458, 458, 458, 458, 458,
+ 466, 466, 466, 500, 500, 500, 500, 500, 500, 500,
+ 500, 500, 516, 516, 516, 541, 541, 541, 541, 541,
+ 541, 541, 541, 541, 544, 544, 544, 544, 544, 544,
+ 544, 544, 544, 573, 573, 573, 573, 573, 573, 573,
+ 573, 573, 577, 577, 577, 577, 577, 577, 577, 577,
+ 577, 590, 590, 590, 590, 590, 590, 590, 590, 590,
+
+ 593, 593, 593, 593, 593, 593, 593, 593, 593, 600,
+ 600, 600, 600, 600, 600, 600, 600, 600, 603, 603,
+ 603, 603, 480, 479, 478, 477, 476, 475, 474, 473,
+ 472, 471, 470, 469, 468, 467, 402, 464, 463, 462,
+ 461, 460, 393, 459, 457, 454, 449, 448, 447, 446,
+ 445, 444, 443, 442, 441, 440, 439, 438, 437, 436,
+ 435, 434, 431, 430, 429, 428, 427, 426, 425, 424,
+ 423, 422, 421, 420, 419, 418, 417, 416, 415, 414,
+ 413, 412, 411, 410, 409, 408, 407, 406, 405, 404,
+ 402, 399, 324, 322, 398, 397, 396, 395, 604, 392,
+
+ 391, 390, 389, 308, 386, 385, 384, 383, 382, 377,
+ 376, 375, 374, 373, 372, 371, 370, 369, 368, 367,
+ 366, 365, 364, 363, 362, 361, 360, 359, 358, 357,
+ 356, 355, 354, 353, 352, 351, 350, 349, 348, 347,
+ 346, 345, 344, 343, 342, 341, 340, 337, 336, 335,
+ 334, 333, 332, 331, 72, 327, 326, 324, 312, 311,
+ 310, 309, 222, 308, 306, 305, 304, 303, 302, 301,
+ 300, 299, 298, 297, 296, 293, 292, 291, 290, 289,
+ 288, 287, 284, 283, 282, 281, 280, 279, 278, 277,
+ 276, 275, 274, 273, 272, 271, 270, 269, 268, 267,
+
+ 266, 265, 264, 263, 262, 261, 260, 259, 255, 254,
+ 253, 252, 251, 250, 249, 248, 247, 245, 239, 238,
+ 230, 230, 230, 228, 227, 226, 225, 224, 222, 221,
+ 220, 219, 218, 217, 214, 213, 212, 211, 210, 209,
+ 206, 205, 204, 201, 200, 199, 198, 197, 196, 195,
+ 194, 193, 188, 187, 186, 185, 182, 181, 180, 179,
+ 178, 177, 176, 175, 172, 171, 170, 169, 168, 167,
+ 166, 165, 164, 163, 158, 157, 140, 135, 103, 98,
+ 95, 94, 80, 75, 74, 71, 69, 68, 67, 66,
+ 52, 604, 3, 604, 604, 604, 604, 604, 604, 604,
+
+ 604, 604, 604, 604, 604, 604, 604, 604, 604, 604,
+ 604, 604, 604, 604, 604, 604, 604, 604, 604, 604,
+ 604, 604, 604, 604, 604, 604, 604, 604, 604, 604,
+ 604, 604, 604, 604, 604, 604, 604, 604, 604, 604,
+ 604, 604, 604, 604, 604, 604, 604, 604, 604, 604,
+ 604, 604, 604, 604
} ;
-static const flex_int16_t yy_chk[1239] =
+static const flex_int16_t yy_chk[1255] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -1021,136 +1029,138 @@ static const flex_int16_t yy_chk[1239] =
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 2, 5, 8, 2, 5, 2, 10, 42, 10, 10,
- 10, 11, 11, 11, 12, 20, 26, 20, 12, 2,
- 31, 31, 47, 42, 199, 14, 26, 14, 14, 14,
- 23, 8, 13, 199, 13, 13, 13, 14, 14, 39,
-
- 23, 583, 23, 25, 13, 13, 39, 35, 23, 577,
- 25, 47, 14, 14, 13, 27, 27, 25, 35, 13,
- 13, 28, 33, 25, 27, 35, 27, 41, 36, 28,
- 33, 36, 28, 37, 36, 38, 33, 37, 38, 13,
- 40, 41, 33, 43, 46, 40, 43, 46, 43, 110,
- 38, 38, 110, 38, 44, 44, 44, 44, 48, 49,
- 49, 48, 48, 51, 53, 53, 44, 44, 44, 51,
- 51, 81, 81, 44, 52, 52, 52, 573, 54, 572,
- 54, 54, 54, 95, 53, 90, 57, 57, 95, 51,
- 54, 54, 106, 44, 560, 90, 44, 117, 106, 44,
-
- 58, 58, 58, 44, 57, 54, 54, 117, 59, 53,
- 59, 59, 59, 559, 51, 55, 55, 55, 62, 62,
- 59, 59, 62, 62, 62, 55, 55, 55, 70, 55,
- 135, 311, 125, 96, 123, 59, 59, 123, 125, 123,
- 55, 55, 55, 60, 96, 60, 60, 60, 55, 64,
- 160, 64, 64, 64, 136, 60, 60, 70, 556, 135,
- 134, 64, 64, 134, 134, 137, 156, 128, 128, 128,
- 60, 60, 311, 137, 137, 141, 64, 64, 128, 128,
- 128, 141, 141, 136, 143, 128, 143, 143, 143, 145,
- 555, 145, 145, 145, 137, 156, 143, 143, 160, 146,
-
- 146, 145, 145, 146, 146, 146, 148, 148, 150, 150,
- 547, 143, 143, 152, 152, 152, 145, 145, 153, 153,
- 153, 207, 157, 536, 148, 157, 150, 158, 158, 171,
- 153, 226, 153, 207, 171, 171, 229, 238, 532, 226,
- 226, 236, 229, 229, 236, 153, 362, 239, 157, 253,
- 253, 153, 232, 232, 232, 239, 239, 530, 317, 528,
- 226, 526, 362, 233, 233, 233, 238, 236, 394, 158,
- 225, 225, 225, 225, 523, 233, 239, 233, 521, 518,
- 517, 295, 225, 225, 225, 384, 295, 317, 384, 225,
- 233, 295, 386, 295, 323, 386, 233, 394, 304, 304,
-
- 304, 507, 323, 323, 386, 386, 386, 447, 447, 225,
- 448, 516, 225, 448, 449, 225, 304, 449, 515, 225,
- 312, 312, 312, 323, 514, 447, 449, 449, 449, 512,
- 507, 312, 312, 312, 453, 453, 453, 500, 312, 324,
- 500, 511, 493, 493, 495, 495, 510, 324, 324, 324,
- 503, 543, 453, 503, 543, 324, 324, 324, 324, 324,
- 493, 508, 495, 383, 383, 383, 383, 506, 324, 324,
- 324, 324, 324, 324, 324, 383, 383, 383, 496, 496,
- 533, 533, 383, 395, 395, 395, 535, 535, 504, 499,
- 490, 395, 395, 395, 395, 395, 496, 489, 533, 444,
-
- 444, 444, 444, 488, 535, 395, 395, 395, 395, 395,
- 395, 444, 444, 444, 446, 446, 446, 446, 444, 487,
- 497, 497, 497, 497, 497, 485, 446, 446, 446, 505,
- 484, 483, 505, 446, 450, 450, 450, 450, 450, 497,
- 482, 505, 505, 505, 481, 480, 450, 450, 450, 538,
- 538, 542, 542, 450, 458, 458, 458, 564, 564, 479,
- 477, 476, 458, 458, 458, 458, 458, 538, 475, 542,
- 492, 492, 492, 492, 474, 564, 458, 458, 458, 458,
- 458, 458, 492, 492, 492, 502, 502, 502, 502, 492,
- 472, 546, 471, 537, 537, 537, 537, 502, 502, 502,
-
- 546, 546, 546, 469, 502, 537, 537, 537, 539, 539,
- 539, 539, 537, 468, 566, 566, 541, 541, 541, 541,
- 539, 539, 539, 568, 568, 465, 464, 539, 541, 541,
- 541, 544, 566, 463, 544, 541, 545, 461, 460, 545,
- 545, 568, 459, 544, 544, 544, 457, 456, 545, 545,
- 545, 562, 562, 562, 562, 563, 563, 563, 563, 574,
- 567, 567, 574, 562, 562, 562, 455, 563, 563, 563,
- 562, 567, 567, 567, 563, 570, 570, 454, 567, 571,
- 571, 452, 579, 579, 579, 579, 580, 580, 582, 582,
- 584, 584, 451, 570, 579, 579, 579, 571, 585, 585,
-
- 443, 579, 587, 587, 580, 442, 582, 441, 584, 589,
- 589, 591, 591, 587, 587, 587, 585, 440, 439, 437,
- 587, 436, 434, 431, 430, 429, 427, 589, 425, 591,
- 593, 593, 593, 593, 593, 593, 593, 593, 593, 594,
- 424, 594, 594, 594, 594, 594, 594, 594, 595, 595,
- 595, 595, 595, 596, 596, 596, 423, 422, 596, 597,
- 419, 597, 597, 597, 597, 597, 597, 597, 598, 598,
- 598, 598, 598, 598, 598, 598, 598, 599, 599, 600,
- 600, 600, 600, 600, 600, 600, 600, 600, 601, 417,
- 601, 601, 601, 601, 601, 601, 601, 602, 602, 602,
-
- 603, 603, 604, 604, 604, 416, 415, 604, 604, 605,
- 605, 605, 605, 605, 605, 605, 605, 605, 606, 606,
- 606, 607, 607, 608, 608, 609, 609, 609, 610, 610,
- 610, 610, 610, 610, 610, 610, 610, 611, 611, 611,
- 612, 612, 612, 612, 612, 612, 612, 612, 612, 613,
- 613, 613, 614, 614, 614, 614, 614, 614, 614, 614,
- 614, 615, 615, 615, 615, 615, 615, 615, 615, 615,
- 616, 616, 616, 616, 616, 616, 616, 616, 616, 617,
- 617, 617, 617, 617, 617, 617, 617, 617, 618, 618,
- 618, 618, 618, 618, 618, 618, 618, 619, 619, 619,
-
- 619, 619, 619, 619, 619, 619, 620, 620, 620, 620,
- 620, 620, 620, 620, 620, 413, 411, 410, 409, 407,
- 405, 404, 403, 402, 401, 400, 399, 397, 393, 392,
- 391, 390, 389, 388, 387, 385, 381, 379, 378, 376,
- 375, 374, 373, 372, 371, 370, 369, 368, 366, 365,
- 364, 363, 361, 360, 359, 358, 357, 355, 354, 353,
- 352, 351, 349, 347, 346, 343, 342, 341, 340, 338,
- 337, 336, 335, 334, 332, 331, 330, 329, 327, 326,
- 325, 321, 319, 316, 315, 314, 313, 309, 308, 307,
- 306, 305, 303, 302, 301, 299, 297, 296, 294, 293,
-
- 292, 291, 290, 289, 288, 287, 286, 285, 284, 283,
- 282, 281, 280, 279, 278, 277, 276, 275, 274, 273,
- 271, 270, 269, 268, 266, 265, 264, 263, 262, 261,
- 260, 258, 257, 256, 255, 254, 252, 251, 248, 247,
- 246, 245, 243, 237, 235, 230, 224, 223, 222, 221,
- 220, 219, 218, 217, 216, 215, 214, 213, 212, 211,
- 210, 209, 208, 206, 205, 204, 203, 202, 201, 200,
- 198, 196, 195, 194, 193, 192, 191, 190, 189, 188,
- 187, 186, 185, 184, 183, 182, 181, 180, 179, 178,
- 177, 176, 175, 174, 173, 172, 170, 169, 168, 167,
-
- 166, 164, 163, 162, 161, 159, 155, 142, 140, 139,
- 133, 132, 131, 130, 129, 127, 122, 121, 120, 119,
- 118, 116, 115, 114, 113, 112, 111, 109, 108, 107,
- 105, 104, 103, 102, 101, 100, 99, 98, 97, 94,
- 93, 92, 91, 89, 88, 87, 86, 85, 84, 83,
- 82, 80, 79, 78, 77, 76, 75, 74, 73, 72,
- 71, 69, 50, 45, 34, 32, 30, 29, 24, 22,
- 21, 19, 17, 16, 15, 9, 3, 592, 592, 592,
- 592, 592, 592, 592, 592, 592, 592, 592, 592, 592,
- 592, 592, 592, 592, 592, 592, 592, 592, 592, 592,
-
- 592, 592, 592, 592, 592, 592, 592, 592, 592, 592,
- 592, 592, 592, 592, 592, 592, 592, 592, 592, 592,
- 592, 592, 592, 592, 592, 592, 592, 592, 592, 592,
- 592, 592, 592, 592, 592, 592, 592, 592
+ 1, 2, 5, 8, 2, 5, 2, 10, 593, 10,
+ 10, 10, 11, 11, 11, 12, 21, 27, 21, 12,
+ 2, 32, 32, 587, 29, 584, 14, 27, 14, 14,
+ 14, 24, 29, 8, 13, 29, 13, 13, 13, 14,
+
+ 14, 24, 38, 24, 26, 40, 38, 13, 13, 24,
+ 108, 26, 40, 34, 14, 14, 108, 13, 26, 28,
+ 28, 34, 13, 13, 26, 36, 37, 34, 28, 37,
+ 28, 39, 37, 34, 39, 41, 36, 42, 43, 582,
+ 41, 47, 13, 36, 47, 44, 39, 39, 44, 39,
+ 44, 42, 48, 581, 43, 45, 45, 45, 45, 49,
+ 50, 50, 49, 49, 52, 54, 54, 45, 45, 45,
+ 52, 52, 72, 367, 45, 53, 53, 53, 58, 58,
+ 83, 83, 48, 59, 59, 59, 54, 92, 98, 367,
+ 55, 52, 55, 55, 55, 45, 58, 92, 45, 98,
+
+ 569, 45, 72, 55, 55, 45, 112, 119, 315, 112,
+ 60, 54, 60, 60, 60, 137, 52, 119, 55, 55,
+ 56, 56, 56, 60, 60, 97, 138, 568, 127, 565,
+ 97, 56, 56, 56, 127, 56, 63, 63, 60, 60,
+ 63, 63, 63, 159, 564, 137, 56, 56, 56, 61,
+ 315, 61, 61, 61, 56, 65, 138, 65, 65, 65,
+ 242, 125, 61, 61, 125, 556, 125, 136, 65, 65,
+ 136, 136, 139, 159, 130, 130, 130, 61, 61, 555,
+ 139, 139, 143, 65, 65, 130, 130, 130, 143, 143,
+ 242, 145, 130, 145, 145, 145, 147, 163, 147, 147,
+
+ 147, 321, 139, 160, 145, 145, 160, 148, 148, 147,
+ 147, 148, 148, 148, 150, 150, 152, 152, 544, 145,
+ 145, 154, 154, 154, 147, 147, 155, 155, 155, 202,
+ 160, 321, 150, 210, 152, 161, 161, 174, 202, 155,
+ 229, 155, 174, 174, 232, 210, 163, 400, 229, 229,
+ 232, 232, 257, 257, 155, 235, 235, 235, 243, 540,
+ 155, 236, 236, 236, 538, 389, 243, 243, 389, 240,
+ 229, 536, 240, 534, 236, 515, 236, 400, 161, 228,
+ 228, 228, 228, 308, 308, 308, 531, 454, 243, 236,
+ 454, 228, 228, 228, 299, 236, 240, 529, 228, 299,
+
+ 328, 308, 453, 453, 299, 515, 299, 507, 328, 328,
+ 507, 526, 525, 500, 500, 316, 316, 316, 510, 228,
+ 453, 510, 228, 524, 523, 228, 316, 316, 316, 228,
+ 328, 500, 522, 316, 329, 391, 520, 519, 391, 459,
+ 459, 459, 329, 329, 329, 502, 502, 391, 391, 391,
+ 518, 329, 329, 329, 329, 329, 516, 459, 514, 388,
+ 388, 388, 388, 502, 329, 329, 329, 329, 329, 329,
+ 329, 388, 388, 388, 551, 503, 503, 551, 388, 401,
+ 401, 401, 450, 450, 450, 450, 513, 511, 401, 401,
+ 401, 401, 401, 503, 450, 450, 450, 452, 452, 452,
+
+ 452, 450, 401, 401, 401, 401, 401, 401, 506, 452,
+ 452, 452, 455, 497, 496, 455, 452, 456, 456, 456,
+ 456, 456, 495, 494, 455, 455, 455, 541, 541, 456,
+ 456, 456, 583, 543, 543, 583, 456, 465, 465, 465,
+ 499, 499, 499, 499, 492, 541, 465, 465, 465, 465,
+ 465, 543, 499, 499, 499, 546, 546, 491, 490, 499,
+ 465, 465, 465, 465, 465, 465, 504, 504, 504, 504,
+ 504, 550, 550, 546, 509, 509, 509, 509, 512, 489,
+ 488, 512, 487, 486, 484, 504, 509, 509, 509, 550,
+ 512, 512, 512, 509, 545, 545, 545, 545, 547, 547,
+
+ 547, 547, 549, 549, 549, 549, 545, 545, 545, 483,
+ 547, 547, 547, 545, 549, 549, 549, 547, 482, 552,
+ 481, 549, 552, 553, 479, 478, 553, 553, 476, 554,
+ 475, 552, 552, 552, 472, 553, 553, 553, 554, 554,
+ 554, 571, 571, 571, 571, 572, 572, 572, 572, 573,
+ 573, 575, 575, 571, 571, 571, 471, 572, 572, 572,
+ 571, 576, 576, 470, 572, 577, 577, 573, 468, 575,
+ 579, 579, 576, 576, 576, 580, 580, 590, 590, 576,
+ 467, 592, 592, 577, 589, 589, 589, 589, 579, 594,
+ 594, 595, 595, 580, 466, 590, 589, 589, 589, 592,
+
+ 598, 598, 464, 589, 600, 600, 463, 594, 462, 595,
+ 461, 598, 598, 598, 602, 602, 460, 458, 598, 457,
+ 449, 448, 600, 447, 446, 445, 443, 442, 440, 437,
+ 436, 435, 602, 605, 605, 605, 605, 605, 605, 605,
+ 605, 605, 606, 433, 606, 606, 606, 606, 606, 606,
+ 606, 607, 607, 607, 607, 607, 608, 608, 608, 431,
+ 430, 608, 609, 429, 609, 609, 609, 609, 609, 609,
+ 609, 610, 610, 610, 610, 610, 610, 610, 610, 610,
+ 611, 611, 612, 612, 612, 612, 612, 612, 612, 612,
+ 612, 613, 428, 613, 613, 613, 613, 613, 613, 613,
+
+ 614, 614, 614, 615, 615, 616, 616, 616, 425, 423,
+ 616, 616, 617, 617, 617, 617, 617, 617, 617, 617,
+ 617, 618, 618, 618, 619, 619, 620, 620, 621, 621,
+ 621, 622, 622, 622, 622, 622, 622, 622, 622, 622,
+ 623, 623, 623, 624, 624, 624, 624, 624, 624, 624,
+ 624, 624, 625, 625, 625, 626, 626, 626, 626, 626,
+ 626, 626, 626, 626, 627, 627, 627, 627, 627, 627,
+ 627, 627, 627, 628, 628, 628, 628, 628, 628, 628,
+ 628, 628, 629, 629, 629, 629, 629, 629, 629, 629,
+ 629, 630, 630, 630, 630, 630, 630, 630, 630, 630,
+
+ 631, 631, 631, 631, 631, 631, 631, 631, 631, 632,
+ 632, 632, 632, 632, 632, 632, 632, 632, 633, 633,
+ 633, 633, 422, 421, 419, 417, 416, 415, 413, 411,
+ 410, 409, 408, 407, 406, 405, 403, 399, 398, 397,
+ 396, 395, 394, 393, 392, 390, 386, 384, 383, 381,
+ 380, 379, 378, 377, 376, 375, 374, 373, 371, 370,
+ 369, 368, 366, 365, 364, 363, 362, 360, 359, 358,
+ 357, 356, 354, 352, 351, 348, 347, 346, 345, 343,
+ 342, 341, 340, 339, 337, 336, 335, 334, 332, 331,
+ 330, 326, 325, 323, 320, 319, 318, 317, 313, 312,
+
+ 311, 310, 309, 307, 306, 305, 303, 301, 300, 298,
+ 297, 296, 295, 294, 293, 292, 291, 290, 289, 288,
+ 287, 286, 285, 284, 283, 282, 281, 280, 279, 278,
+ 277, 275, 274, 273, 272, 270, 269, 268, 267, 266,
+ 265, 264, 262, 261, 260, 259, 258, 256, 255, 252,
+ 251, 250, 249, 247, 241, 239, 238, 233, 227, 226,
+ 225, 224, 223, 222, 221, 220, 219, 218, 217, 216,
+ 215, 214, 213, 212, 211, 209, 208, 207, 206, 205,
+ 204, 203, 201, 199, 198, 197, 196, 195, 194, 193,
+ 192, 191, 190, 189, 188, 187, 186, 185, 184, 183,
+
+ 182, 181, 180, 179, 178, 177, 176, 175, 173, 172,
+ 171, 170, 169, 167, 166, 165, 164, 162, 158, 157,
+ 144, 142, 141, 135, 134, 133, 132, 131, 129, 124,
+ 123, 122, 121, 120, 118, 117, 116, 115, 114, 113,
+ 111, 110, 109, 107, 106, 105, 104, 103, 102, 101,
+ 100, 99, 96, 95, 94, 93, 91, 90, 89, 88,
+ 87, 86, 85, 84, 82, 81, 80, 79, 78, 77,
+ 76, 75, 74, 73, 71, 69, 51, 46, 35, 33,
+ 31, 30, 25, 23, 22, 20, 18, 17, 16, 15,
+ 9, 3, 604, 604, 604, 604, 604, 604, 604, 604,
+
+ 604, 604, 604, 604, 604, 604, 604, 604, 604, 604,
+ 604, 604, 604, 604, 604, 604, 604, 604, 604, 604,
+ 604, 604, 604, 604, 604, 604, 604, 604, 604, 604,
+ 604, 604, 604, 604, 604, 604, 604, 604, 604, 604,
+ 604, 604, 604, 604, 604, 604, 604, 604, 604, 604,
+ 604, 604, 604, 604
} ;
static yy_state_type yy_last_accepting_state;
@@ -1239,7 +1249,7 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
*/
/*
- * idl.ll - Lexical scanner for IDL 3.1
+ * idl.ll - Lexical scanner for IDL
*/
#include "global_extern.h"
@@ -1262,6 +1272,7 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
#include "fe_home_header.h"
#include "fe_private.h"
#include "fe_extern.h"
+#include "ast_annotation_appl.h"
#include "idl.tab.hpp"
static char * idl_wstring_escape_reader (char *);
@@ -1286,9 +1297,9 @@ static AST_Decl * idl_find_node (const char *);
#undef ECHO
#endif
-#line 1291 "fe/idl.yy.cpp"
+#line 1303 "fe/idl.yy.cpp"
/* SO we don't choke on files that use \r\n */
-#line 1293 "fe/idl.yy.cpp"
+#line 1305 "fe/idl.yy.cpp"
#define INITIAL 0
@@ -1508,10 +1519,10 @@ YY_DECL
}
{
-#line 122 "fe/idl.ll"
+#line 123 "fe/idl.ll"
-#line 1516 "fe/idl.yy.cpp"
+#line 1528 "fe/idl.yy.cpp"
while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
{
@@ -1539,13 +1550,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 593 )
+ if ( yy_current_state >= 605 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
++yy_cp;
}
- while ( yy_current_state != 592 );
+ while ( yy_current_state != 604 );
yy_cp = (yy_last_accepting_cpos);
yy_current_state = (yy_last_accepting_state);
@@ -1567,375 +1578,386 @@ do_action: /* This label is used only to access EOF actions. */
case 1:
YY_RULE_SETUP
-#line 124 "fe/idl.ll"
+#line 125 "fe/idl.ll"
return IDL_ANY;
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 125 "fe/idl.ll"
+#line 126 "fe/idl.ll"
return IDL_OBJECT;
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 126 "fe/idl.ll"
+#line 127 "fe/idl.ll"
return IDL_MODULE;
YY_BREAK
case 4:
YY_RULE_SETUP
-#line 127 "fe/idl.ll"
+#line 128 "fe/idl.ll"
return IDL_RAISES;
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 128 "fe/idl.ll"
+#line 129 "fe/idl.ll"
return IDL_READONLY;
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 129 "fe/idl.ll"
+#line 130 "fe/idl.ll"
return IDL_ATTRIBUTE;
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 130 "fe/idl.ll"
+#line 131 "fe/idl.ll"
return IDL_EXCEPTION;
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 131 "fe/idl.ll"
+#line 132 "fe/idl.ll"
return IDL_CONTEXT;
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 132 "fe/idl.ll"
+#line 133 "fe/idl.ll"
return IDL_INTERFACE;
YY_BREAK
case 10:
YY_RULE_SETUP
-#line 133 "fe/idl.ll"
+#line 134 "fe/idl.ll"
return IDL_CONST;
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 134 "fe/idl.ll"
+#line 135 "fe/idl.ll"
return IDL_TYPEDEF;
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 135 "fe/idl.ll"
+#line 136 "fe/idl.ll"
return IDL_STRUCT;
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 136 "fe/idl.ll"
+#line 137 "fe/idl.ll"
return IDL_ENUM;
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 137 "fe/idl.ll"
+#line 138 "fe/idl.ll"
return IDL_STRING;
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 138 "fe/idl.ll"
+#line 139 "fe/idl.ll"
return IDL_WSTRING;
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 139 "fe/idl.ll"
+#line 140 "fe/idl.ll"
return IDL_SEQUENCE;
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 140 "fe/idl.ll"
+#line 141 "fe/idl.ll"
return IDL_UNION;
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 141 "fe/idl.ll"
+#line 142 "fe/idl.ll"
return IDL_FIXED;
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 142 "fe/idl.ll"
+#line 143 "fe/idl.ll"
return IDL_SWITCH;
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 143 "fe/idl.ll"
+#line 144 "fe/idl.ll"
return IDL_CASE;
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 144 "fe/idl.ll"
+#line 145 "fe/idl.ll"
return IDL_DEFAULT;
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 145 "fe/idl.ll"
+#line 146 "fe/idl.ll"
return IDL_FLOAT;
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 146 "fe/idl.ll"
+#line 147 "fe/idl.ll"
return IDL_DOUBLE;
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 147 "fe/idl.ll"
+#line 148 "fe/idl.ll"
return IDL_LONG;
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 148 "fe/idl.ll"
+#line 149 "fe/idl.ll"
return IDL_SHORT;
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 149 "fe/idl.ll"
+#line 150 "fe/idl.ll"
return IDL_UNSIGNED;
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 150 "fe/idl.ll"
+#line 151 "fe/idl.ll"
return IDL_CHAR;
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 151 "fe/idl.ll"
+#line 152 "fe/idl.ll"
return IDL_WCHAR;
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 152 "fe/idl.ll"
+#line 153 "fe/idl.ll"
return IDL_BOOLEAN;
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 153 "fe/idl.ll"
+#line 154 "fe/idl.ll"
return IDL_OCTET;
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 154 "fe/idl.ll"
+#line 155 "fe/idl.ll"
return IDL_VOID;
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 155 "fe/idl.ll"
+#line 156 "fe/idl.ll"
return IDL_NATIVE;
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 156 "fe/idl.ll"
+#line 157 "fe/idl.ll"
return IDL_LOCAL;
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 157 "fe/idl.ll"
+#line 158 "fe/idl.ll"
return IDL_ABSTRACT;
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 159 "fe/idl.ll"
+#line 160 "fe/idl.ll"
return IDL_CUSTOM;
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 160 "fe/idl.ll"
+#line 161 "fe/idl.ll"
return IDL_FACTORY;
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 161 "fe/idl.ll"
+#line 162 "fe/idl.ll"
return IDL_PRIVATE;
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 162 "fe/idl.ll"
+#line 163 "fe/idl.ll"
return IDL_PUBLIC;
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 163 "fe/idl.ll"
+#line 164 "fe/idl.ll"
return IDL_SUPPORTS;
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 164 "fe/idl.ll"
+#line 165 "fe/idl.ll"
return IDL_TRUNCATABLE;
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 165 "fe/idl.ll"
+#line 166 "fe/idl.ll"
return IDL_VALUETYPE;
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 167 "fe/idl.ll"
+#line 168 "fe/idl.ll"
return IDL_COMPONENT;
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 168 "fe/idl.ll"
+#line 169 "fe/idl.ll"
return IDL_CONSUMES;
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 169 "fe/idl.ll"
+#line 170 "fe/idl.ll"
return IDL_EMITS;
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 170 "fe/idl.ll"
+#line 171 "fe/idl.ll"
return IDL_EVENTTYPE;
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 171 "fe/idl.ll"
+#line 172 "fe/idl.ll"
return IDL_FINDER;
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 172 "fe/idl.ll"
+#line 173 "fe/idl.ll"
return IDL_GETRAISES;
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 173 "fe/idl.ll"
+#line 174 "fe/idl.ll"
return IDL_HOME;
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 174 "fe/idl.ll"
+#line 175 "fe/idl.ll"
return IDL_IMPORT;
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 175 "fe/idl.ll"
+#line 176 "fe/idl.ll"
return IDL_MULTIPLE;
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 176 "fe/idl.ll"
+#line 177 "fe/idl.ll"
return IDL_PRIMARYKEY;
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 177 "fe/idl.ll"
+#line 178 "fe/idl.ll"
return IDL_PROVIDES;
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 178 "fe/idl.ll"
+#line 179 "fe/idl.ll"
return IDL_PUBLISHES;
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 179 "fe/idl.ll"
+#line 180 "fe/idl.ll"
return IDL_SETRAISES;
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 180 "fe/idl.ll"
+#line 181 "fe/idl.ll"
return IDL_TYPEID;
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 181 "fe/idl.ll"
+#line 182 "fe/idl.ll"
return IDL_TYPEPREFIX;
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 182 "fe/idl.ll"
+#line 183 "fe/idl.ll"
return IDL_USES;
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 183 "fe/idl.ll"
+#line 184 "fe/idl.ll"
return IDL_MANAGES;
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 185 "fe/idl.ll"
+#line 186 "fe/idl.ll"
return IDL_TYPENAME;
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 186 "fe/idl.ll"
+#line 187 "fe/idl.ll"
return IDL_PORT;
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 187 "fe/idl.ll"
+#line 188 "fe/idl.ll"
return IDL_MIRRORPORT;
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 188 "fe/idl.ll"
+#line 189 "fe/idl.ll"
return IDL_PORTTYPE;
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 189 "fe/idl.ll"
+#line 190 "fe/idl.ll"
return IDL_CONNECTOR;
YY_BREAK
case 64:
YY_RULE_SETUP
-#line 190 "fe/idl.ll"
+#line 191 "fe/idl.ll"
return IDL_ALIAS;
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 192 "fe/idl.ll"
+#line 193 "fe/idl.ll"
return IDL_TRUETOK;
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 193 "fe/idl.ll"
+#line 194 "fe/idl.ll"
return IDL_FALSETOK;
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 195 "fe/idl.ll"
+#line 196 "fe/idl.ll"
return IDL_INOUT;
YY_BREAK
case 68:
YY_RULE_SETUP
-#line 196 "fe/idl.ll"
+#line 197 "fe/idl.ll"
return IDL_IN;
YY_BREAK
case 69:
YY_RULE_SETUP
-#line 197 "fe/idl.ll"
+#line 198 "fe/idl.ll"
return IDL_OUT;
YY_BREAK
case 70:
YY_RULE_SETUP
-#line 198 "fe/idl.ll"
+#line 199 "fe/idl.ll"
return IDL_ONEWAY;
YY_BREAK
case 71:
YY_RULE_SETUP
-#line 200 "fe/idl.ll"
+#line 201 "fe/idl.ll"
return IDL_LEFT_SHIFT;
YY_BREAK
case 72:
YY_RULE_SETUP
-#line 201 "fe/idl.ll"
+#line 202 "fe/idl.ll"
return IDL_RIGHT_SHIFT;
YY_BREAK
case 73:
YY_RULE_SETUP
-#line 202 "fe/idl.ll"
+#line 203 "fe/idl.ll"
{
tao_yylval.strval = ACE::strnew ("::");
return IDL_SCOPE_DELIMITOR;
}
YY_BREAK
case 74:
+/* rule 74 can match eol */
+YY_RULE_SETUP
+#line 208 "fe/idl.ll"
+return IDL_ANNOTATION_DECL; // Allow annotation names that start with "annotation"
+ YY_BREAK
+case 75:
+YY_RULE_SETUP
+#line 209 "fe/idl.ll"
+return IDL_ANNOTATION_SYMBOL;
+ YY_BREAK
+case 76:
YY_RULE_SETUP
-#line 207 "fe/idl.ll"
+#line 211 "fe/idl.ll"
{
// Make sure that this identifier is not a C++ keyword. If it is,
// prepend it with a _cxx_. Lookup in the perfect hash table for C++
@@ -1969,82 +1991,82 @@ YY_RULE_SETUP
return IDENTIFIER;
}
YY_BREAK
-case 75:
+case 77:
YY_RULE_SETUP
-#line 240 "fe/idl.ll"
+#line 244 "fe/idl.ll"
{
tao_yylval.dval = idl_atof (ace_yytext);
return IDL_FLOATING_PT_LITERAL;
}
YY_BREAK
-case 76:
+case 78:
YY_RULE_SETUP
-#line 244 "fe/idl.ll"
+#line 248 "fe/idl.ll"
{
tao_yylval.dval = idl_atof (ace_yytext);
return IDL_FLOATING_PT_LITERAL;
}
YY_BREAK
-case 77:
+case 79:
YY_RULE_SETUP
-#line 249 "fe/idl.ll"
+#line 253 "fe/idl.ll"
{
tao_yylval.fixval = ACE_CDR::Fixed::from_string (ace_yytext);
return IDL_FIXED_PT_LITERAL;
}
YY_BREAK
-case 78:
+case 80:
YY_RULE_SETUP
-#line 254 "fe/idl.ll"
+#line 258 "fe/idl.ll"
{
tao_yylval.ival = idl_atoi (ace_yytext, 10);
return IDL_INTEGER_LITERAL;
}
YY_BREAK
-case 79:
+case 81:
YY_RULE_SETUP
-#line 258 "fe/idl.ll"
+#line 262 "fe/idl.ll"
{
tao_yylval.uival = idl_atoui (ace_yytext, 10);
return IDL_UINTEGER_LITERAL;
}
YY_BREAK
-case 80:
+case 82:
YY_RULE_SETUP
-#line 262 "fe/idl.ll"
+#line 266 "fe/idl.ll"
{
tao_yylval.ival = idl_atoi (ace_yytext, 16);
return IDL_INTEGER_LITERAL;
}
YY_BREAK
-case 81:
+case 83:
YY_RULE_SETUP
-#line 266 "fe/idl.ll"
+#line 270 "fe/idl.ll"
{
tao_yylval.uival = idl_atoui (ace_yytext, 16);
return IDL_UINTEGER_LITERAL;
}
YY_BREAK
-case 82:
+case 84:
YY_RULE_SETUP
-#line 270 "fe/idl.ll"
+#line 274 "fe/idl.ll"
{
tao_yylval.ival = idl_atoi (ace_yytext, 8);
return IDL_INTEGER_LITERAL;
}
YY_BREAK
-case 83:
+case 85:
YY_RULE_SETUP
-#line 274 "fe/idl.ll"
+#line 278 "fe/idl.ll"
{
tao_yylval.uival = idl_atoui (ace_yytext, 8);
return IDL_UINTEGER_LITERAL;
}
YY_BREAK
-case 84:
-/* rule 84 can match eol */
+case 86:
+/* rule 86 can match eol */
YY_RULE_SETUP
-#line 279 "fe/idl.ll"
+#line 283 "fe/idl.ll"
{
/* Skip the quotes */
char * const tmp = ace_yytext;
@@ -2066,10 +2088,10 @@ YY_RULE_SETUP
return IDL_STRING_LITERAL;
}
YY_BREAK
-case 85:
-/* rule 85 can match eol */
+case 87:
+/* rule 87 can match eol */
YY_RULE_SETUP
-#line 299 "fe/idl.ll"
+#line 303 "fe/idl.ll"
{
/* Skip the bookends */
char * const tmp = ACE_OS::strdup (ace_yytext);
@@ -2089,102 +2111,90 @@ YY_RULE_SETUP
return IDL_WSTRING_LITERAL;
}
YY_BREAK
-case 86:
+case 88:
YY_RULE_SETUP
-#line 317 "fe/idl.ll"
+#line 321 "fe/idl.ll"
{
tao_yylval.cval = ace_yytext[1];
return IDL_CHARACTER_LITERAL;
}
YY_BREAK
-case 87:
+case 89:
YY_RULE_SETUP
-#line 321 "fe/idl.ll"
+#line 325 "fe/idl.ll"
{
// octal character constant
tao_yylval.cval = idl_escape_reader (ace_yytext + 1);
return IDL_CHARACTER_LITERAL;
}
YY_BREAK
-case 88:
+case 90:
YY_RULE_SETUP
-#line 326 "fe/idl.ll"
+#line 330 "fe/idl.ll"
{
// hexadecimal character constant
tao_yylval.cval = idl_escape_reader (ace_yytext + 1);
return IDL_CHARACTER_LITERAL;
}
YY_BREAK
-case 89:
+case 91:
YY_RULE_SETUP
-#line 331 "fe/idl.ll"
+#line 335 "fe/idl.ll"
{
tao_yylval.cval = idl_escape_reader (ace_yytext + 1);
return IDL_CHARACTER_LITERAL;
}
YY_BREAK
-case 90:
+case 92:
YY_RULE_SETUP
-#line 335 "fe/idl.ll"
+#line 339 "fe/idl.ll"
{
// wide character constant
tao_yylval.wcval = ace_yytext[2];
return IDL_WCHAR_LITERAL;
}
YY_BREAK
-case 91:
+case 93:
YY_RULE_SETUP
-#line 340 "fe/idl.ll"
+#line 344 "fe/idl.ll"
{
// hexadecimal wide character constant
tao_yylval.wcval = idl_wchar_escape_reader (ace_yytext + 2);
return IDL_WCHAR_LITERAL;
}
YY_BREAK
-case 92:
-/* rule 92 can match eol */
-#line 346 "fe/idl.ll"
-case 93:
-/* rule 93 can match eol */
-YY_RULE_SETUP
-#line 346 "fe/idl.ll"
-{/* remember pragma */
- idl_global->set_lineno (idl_global->lineno () + 1);
- idl_store_pragma (ace_yytext);
- break;
- }
- YY_BREAK
case 94:
/* rule 94 can match eol */
-#line 352 "fe/idl.ll"
+#line 350 "fe/idl.ll"
case 95:
/* rule 95 can match eol */
YY_RULE_SETUP
-#line 352 "fe/idl.ll"
-{/* ignore file */
- idl_global->set_lineno(idl_global->lineno () + 1);
+#line 350 "fe/idl.ll"
+{/* remember pragma */
+ idl_global->set_lineno (idl_global->lineno () + 1);
+ idl_store_pragma (ace_yytext);
break;
}
YY_BREAK
case 96:
/* rule 96 can match eol */
-#line 357 "fe/idl.ll"
+#line 356 "fe/idl.ll"
case 97:
/* rule 97 can match eol */
YY_RULE_SETUP
-#line 357 "fe/idl.ll"
-{
- idl_parse_line_and_file (ace_yytext);
+#line 356 "fe/idl.ll"
+{/* ignore file */
+ idl_global->set_lineno(idl_global->lineno () + 1);
break;
}
YY_BREAK
case 98:
/* rule 98 can match eol */
-#line 362 "fe/idl.ll"
+#line 361 "fe/idl.ll"
case 99:
/* rule 99 can match eol */
YY_RULE_SETUP
-#line 362 "fe/idl.ll"
+#line 361 "fe/idl.ll"
{
idl_parse_line_and_file (ace_yytext);
break;
@@ -2192,11 +2202,11 @@ YY_RULE_SETUP
YY_BREAK
case 100:
/* rule 100 can match eol */
-#line 367 "fe/idl.ll"
+#line 366 "fe/idl.ll"
case 101:
/* rule 101 can match eol */
YY_RULE_SETUP
-#line 367 "fe/idl.ll"
+#line 366 "fe/idl.ll"
{
idl_parse_line_and_file (ace_yytext);
break;
@@ -2204,11 +2214,11 @@ YY_RULE_SETUP
YY_BREAK
case 102:
/* rule 102 can match eol */
-#line 372 "fe/idl.ll"
+#line 371 "fe/idl.ll"
case 103:
/* rule 103 can match eol */
YY_RULE_SETUP
-#line 372 "fe/idl.ll"
+#line 371 "fe/idl.ll"
{
idl_parse_line_and_file (ace_yytext);
break;
@@ -2216,30 +2226,42 @@ YY_RULE_SETUP
YY_BREAK
case 104:
/* rule 104 can match eol */
-#line 377 "fe/idl.ll"
+#line 376 "fe/idl.ll"
case 105:
/* rule 105 can match eol */
YY_RULE_SETUP
-#line 377 "fe/idl.ll"
+#line 376 "fe/idl.ll"
{
- /* ignore cpp ident */
- idl_global->set_lineno (idl_global->lineno () + 1);
+ idl_parse_line_and_file (ace_yytext);
break;
}
YY_BREAK
case 106:
/* rule 106 can match eol */
+#line 381 "fe/idl.ll"
+case 107:
+/* rule 107 can match eol */
+YY_RULE_SETUP
+#line 381 "fe/idl.ll"
+{
+ /* ignore cpp ident */
+ idl_global->set_lineno (idl_global->lineno () + 1);
+ break;
+ }
+ YY_BREAK
+case 108:
+/* rule 108 can match eol */
YY_RULE_SETUP
-#line 382 "fe/idl.ll"
+#line 386 "fe/idl.ll"
{
/* ignore comments */
idl_global->set_lineno(idl_global->lineno () + 1);
break;
}
YY_BREAK
-case 107:
+case 109:
YY_RULE_SETUP
-#line 387 "fe/idl.ll"
+#line 391 "fe/idl.ll"
{
for (;;)
{
@@ -2260,31 +2282,31 @@ YY_RULE_SETUP
break;
}
YY_BREAK
-case 108:
+case 110:
YY_RULE_SETUP
-#line 406 "fe/idl.ll"
+#line 410 "fe/idl.ll"
break;
YY_BREAK
-case 109:
-/* rule 109 can match eol */
+case 111:
+/* rule 111 can match eol */
YY_RULE_SETUP
-#line 407 "fe/idl.ll"
+#line 411 "fe/idl.ll"
{
idl_global->set_lineno (idl_global->lineno () + 1);
break;
}
YY_BREAK
-case 110:
+case 112:
YY_RULE_SETUP
-#line 411 "fe/idl.ll"
+#line 415 "fe/idl.ll"
return ace_yytext[0];
YY_BREAK
-case 111:
+case 113:
YY_RULE_SETUP
-#line 413 "fe/idl.ll"
+#line 417 "fe/idl.ll"
ECHO;
YY_BREAK
-#line 2289 "fe/idl.yy.cpp"
+#line 2312 "fe/idl.yy.cpp"
case YY_STATE_EOF(INITIAL):
yyterminate();
@@ -2583,7 +2605,7 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 593 )
+ if ( yy_current_state >= 605 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -2611,11 +2633,11 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 593 )
+ if ( yy_current_state >= 605 )
yy_c = yy_meta[yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
- yy_is_jam = (yy_current_state == 592);
+ yy_is_jam = (yy_current_state == 604);
return yy_is_jam ? 0 : yy_current_state;
}
@@ -3293,7 +3315,7 @@ void yyfree (void * ptr )
#define YYTABLES_NAME "yytables"
-#line 413 "fe/idl.ll"
+#line 417 "fe/idl.ll"
/* subroutines */
diff --git a/TAO/TAO_IDL/fe/lookup_starter.txt b/TAO/TAO_IDL/fe/lookup_starter.txt
new file mode 100644
index 00000000000..8d8d9019c0d
--- /dev/null
+++ b/TAO/TAO_IDL/fe/lookup_starter.txt
@@ -0,0 +1,3 @@
+#include "fe_private.h"
+#include "ace/OS_NS_string.h"
+
diff --git a/TAO/TAO_IDL/fe/post_flex.sed b/TAO/TAO_IDL/fe/post_flex.sed
new file mode 100644
index 00000000000..81154d3f879
--- /dev/null
+++ b/TAO/TAO_IDL/fe/post_flex.sed
@@ -0,0 +1,10 @@
+s/ NULL/ 0/g
+s/ / /g
+s/ *$//g
+s/YY_BREAK break;/YY_BREAK ACE_NOTREACHED (break;)/g
+s@#include <errno.h>@#include "ace/OS_NS_errno.h"@
+s@#include <stdio.h>@#include "ace/OS_NS_stdio.h"@
+s@#include <unistd.h>@#include "ace/os_include/os_ctype.h"@
+s@c = getc@c = ACE_OS::getc@
+s@199901L@199901L || defined (__HP_aCC)@
+/#include <[seu]/d
diff --git a/TAO/TAO_IDL/fe/post_gperf.sed b/TAO/TAO_IDL/fe/post_gperf.sed
new file mode 100644
index 00000000000..fab57954503
--- /dev/null
+++ b/TAO/TAO_IDL/fe/post_gperf.sed
@@ -0,0 +1,2 @@
+s/,}/,0}/g
+s/\*str == \*s && !ACE_OS::strncmp/len == static_cast<unsigned int> (ACE_OS::strlen (s)) \&\& *str == *s \&\& !ACE_OS::strncmp/g
diff --git a/TAO/TAO_IDL/include/ast_annotation_appl.h b/TAO/TAO_IDL/include/ast_annotation_appl.h
new file mode 100644
index 00000000000..75b6e0fa84d
--- /dev/null
+++ b/TAO/TAO_IDL/include/ast_annotation_appl.h
@@ -0,0 +1,112 @@
+/**
+ * Abstract Syntax Tree Node for an application of an annotation.
+ */
+
+#ifndef AST_ANNOTATION_APPL_HEADER
+#define AST_ANNOTATION_APPL_HEADER
+
+#include "ast_annotation_decl.h"
+#include "utl_identifier.h"
+#include "ast_expression.h"
+
+#include "ace/Containers_T.h"
+#include "ace/Vector_T.h"
+
+/**
+ * Abstract Syntax Tree Node for an application of an annotation.
+ *
+ * Params are implemented as a stack of name, value pairs which are independent
+ * from the finished annotation members. The members which are AST_Fields subclasses
+ * stored the same way as fields in AST_Struct.
+ */
+class TAO_IDL_FE_Export AST_Annotation_Appl : public virtual AST_Annotation_Decl
+{
+public:
+ /**
+ * Store Optional Annotation Parameters
+ */
+ ///{
+ struct Param {
+ Param ();
+ Identifier *id;
+ AST_Expression *expr;
+ bool used;
+ typedef ACE_Unbounded_Stack_Iterator<Param*> Iterator;
+ };
+ typedef ACE_Unbounded_Stack<Param*> Params;
+ ///}
+
+ /**
+ * Create an Annotation using it's name and parameters
+ */
+ AST_Annotation_Appl (UTL_ScopedName *name, Params *params);
+
+ virtual ~AST_Annotation_Appl ();
+
+ /// Narrowing
+ ///{
+ DEF_NARROW_FROM_DECL (AST_Annotation_Appl);
+ DEF_NARROW_FROM_SCOPE (AST_Annotation_Appl);
+ ///}
+
+ /// AST Dumping
+ virtual void dump (ACE_OSTREAM_TYPE &o);
+
+ /// Visiting
+ virtual int ast_accept (ast_visitor *visitor);
+
+ /// Cleanup
+ virtual void destroy ();
+
+ static AST_Decl::NodeType const NT;
+
+ /**
+ * Get name of the annotation as written by the user
+ */
+ const char* original_name () const;
+
+ /**
+ * Apply a Annotation Declaration to this Application. This will either fully
+ * instantiate this object or result in an error, in which case it returns false.
+ */
+ bool apply_from (AST_Annotation_Decl *decl);
+
+ /**
+ * Return pointer to the stack of parameters passed. BACKENDS SHOULDN'T USE
+ * THIS UNLESS YOU NEED EXACTLY WHAT THE USER PASSED. Backends should use the
+ * lookup and scope iterator APIs that this class inherits from AST_Scope
+ * and AST_Struct. Can be null.
+ */
+ Params *params ();
+
+ /**
+ * AST_Annotation_Decl kept in case desired by someone
+ *
+ * Will be null if accessed before apply_from() is called or if being used
+ * without a declaration.
+ */
+ AST_Annotation_Decl *annotation_decl ();
+
+ /**
+ * Return the parameter with the specified name if it's in the stack else
+ * returns 0.
+ */
+ Param *find_param (const char *name);
+
+private:
+ /// Name of the Annotation as written
+ const char *original_name_;
+
+ /// Parameters List (Can be null)
+ Params *params_;
+
+ /// The AST_Annotation_Decl (Possibly could be null)
+ AST_Annotation_Decl *annotation_decl_;
+};
+
+struct Decl_Annotations_Pair {
+ AST_Decl *decl;
+ AST_Annotation_Appls *annotations;
+};
+
+#endif
diff --git a/TAO/TAO_IDL/include/ast_annotation_decl.h b/TAO/TAO_IDL/include/ast_annotation_decl.h
new file mode 100644
index 00000000000..0ee0fd2eab7
--- /dev/null
+++ b/TAO/TAO_IDL/include/ast_annotation_decl.h
@@ -0,0 +1,60 @@
+/**
+ * Abstract Syntax Tree Node for a declaration of an annotation.
+ */
+
+#ifndef AST_ANNOTATION_DECL_HEADER
+#define AST_ANNOTATION_DECL_HEADER
+
+#include "ast_structure.h"
+
+/**
+ * Abstract Syntax Tree Node for a declaration of an annotation.
+ */
+class TAO_IDL_FE_Export AST_Annotation_Decl : public virtual AST_Structure
+{
+public:
+
+ AST_Annotation_Decl (UTL_ScopedName *name);
+
+ virtual ~AST_Annotation_Decl ();
+
+ /// Narrowing
+ ///{
+ DEF_NARROW_FROM_DECL (AST_Annotation_Decl);
+ DEF_NARROW_FROM_SCOPE (AST_Annotation_Decl);
+ ///}
+
+ /// AST Dumping
+ virtual void dump (ACE_OSTREAM_TYPE &o);
+
+ /// Cleanup
+ virtual void destroy ();
+
+ static AST_Decl::NodeType const NT;
+
+ /**
+ * Work around for AST node lookup, so that annotations do not conflict with
+ * other IDL types and variables that have the same name. This is done by
+ * prepending '@' to all annotation names.
+ */
+ ///{
+ static void escape_name (Identifier *name);
+ static void escape_name (UTL_ScopedName *name);
+ ///}
+
+ virtual bool annotatable () const;
+
+ virtual AST_Annotation_Member *fe_add_annotation_member (
+ AST_Annotation_Member *annotation_member);
+
+ virtual AST_Constant *fe_add_constant (AST_Constant *t);
+
+ virtual int ast_accept (ast_visitor *visitor);
+
+ /**
+ * Should AMI visit this node? (NO)
+ */
+ virtual bool ami_visit ();
+};
+
+#endif
diff --git a/TAO/TAO_IDL/include/ast_annotation_member.h b/TAO/TAO_IDL/include/ast_annotation_member.h
new file mode 100644
index 00000000000..5686a2f639f
--- /dev/null
+++ b/TAO/TAO_IDL/include/ast_annotation_member.h
@@ -0,0 +1,69 @@
+/**
+ * Abstract Syntax Tree Node for a Member Value of an Annotation
+ */
+
+#ifndef AST_ANNOTATION_MEMBER_HEADER
+#define AST_ANNOTATION_MEMBER_HEADER
+
+#include "ast_field.h"
+#include "ast_expression.h"
+
+class AST_Expression;
+
+/**
+ * Abstract Syntax Tree Node for a Member Value of an Annotation
+ */
+class TAO_IDL_FE_Export AST_Annotation_Member : public virtual AST_Field
+{
+public:
+ AST_Annotation_Member (
+ AST_Expression::ExprType expr_type,
+ AST_Type *type, UTL_ScopedName *name);
+
+ AST_Annotation_Member (
+ AST_Decl::NodeType nt,
+ AST_Expression::ExprType expr_type,
+ AST_Type *type, UTL_ScopedName *name);
+
+ /// Pseudo-Copy Constructor for Creating Annotation Applications
+ AST_Annotation_Member (
+ UTL_ScopedName *name,
+ AST_Annotation_Member *other);
+
+ virtual ~AST_Annotation_Member ();
+
+ static AST_Decl::NodeType const NT;
+
+ /// Cleanup
+ virtual void destroy ();
+
+ /// Narrowing
+ ///{
+ DEF_NARROW_FROM_DECL (AST_Annotation_Member);
+ DEF_NARROW_FROM_SCOPE (AST_Annotation_Member);
+ ///}
+
+ /// AST Dumping
+ virtual void dump (ACE_OSTREAM_TYPE &o);
+
+ /// Get and Set the Value
+ ///{
+ AST_Expression *value ();
+ void value (AST_Expression *value);
+ ///}
+
+ /// Get the ExprType
+ AST_Expression::ExprType expr_type ();
+
+ /// Returns true if the expression value is null or invalid
+ bool invalid_value ();
+
+private:
+ /// Keep ExprType at hand for convience
+ AST_Expression::ExprType expr_type_;
+
+ /// Value of the Member, can be null
+ AST_Expression *value_;
+};
+
+#endif
diff --git a/TAO/TAO_IDL/include/ast_array.h b/TAO/TAO_IDL/include/ast_array.h
index 8f657fe0b96..affd6681d5c 100644
--- a/TAO/TAO_IDL/include/ast_array.h
+++ b/TAO/TAO_IDL/include/ast_array.h
@@ -120,6 +120,14 @@ public:
static AST_Decl::NodeType const NT;
+ /**
+ * Get and Set Annotations on the base type
+ */
+ ///{
+ AST_Annotation_Appls *base_type_annotations ();
+ void base_type_annotations (AST_Annotation_Appls *annotations);
+ ///}
+
protected:
virtual int compute_size_type (void);
// Compute the size type if it is unknown.
@@ -140,11 +148,14 @@ private:
// If our base type is anonymous array or sequence, we're
// responsible for destroying it.
-private:
-
// Compute how many dimensions.
AST_Expression **compute_dims (UTL_ExprList *dims,
ACE_CDR::ULong ndims);
+
+ /**
+ * Annotations on the base type
+ */
+ AST_Annotation_Appls *base_type_annotations_;
};
#endif // _AST_ARRAY_AST_ARRAY_HH
diff --git a/TAO/TAO_IDL/include/ast_concrete_type.h b/TAO/TAO_IDL/include/ast_concrete_type.h
index 18018eba25d..edac0ba5211 100644
--- a/TAO/TAO_IDL/include/ast_concrete_type.h
+++ b/TAO/TAO_IDL/include/ast_concrete_type.h
@@ -84,6 +84,8 @@ public:
// Narrowing.
DEF_NARROW_FROM_DECL(AST_ConcreteType);
+
+ virtual bool annotatable () const { return true; }
};
#endif // _AST_CONCRETE_TYPE_AST_CONCRETE_TYPE_HH
diff --git a/TAO/TAO_IDL/include/ast_constant.h b/TAO/TAO_IDL/include/ast_constant.h
index 4af90810fc7..01196eb790a 100644
--- a/TAO/TAO_IDL/include/ast_constant.h
+++ b/TAO/TAO_IDL/include/ast_constant.h
@@ -126,6 +126,8 @@ public:
static AST_Decl::NodeType const NT;
+ virtual bool annotatable () const { return true; }
+
protected:
AST_Expression *pd_constant_value;
// The value.
diff --git a/TAO/TAO_IDL/include/ast_decl.h b/TAO/TAO_IDL/include/ast_decl.h
index 5517834723c..f11e4a2f610 100644
--- a/TAO/TAO_IDL/include/ast_decl.h
+++ b/TAO/TAO_IDL/include/ast_decl.h
@@ -1,4 +1,4 @@
-// This may look like C, but it's really -*- C++ -*-
+// -*- C++ -*-
/*
COPYRIGHT
@@ -66,18 +66,12 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
#ifndef _AST_DECL_AST_DECL_HH
#define _AST_DECL_AST_DECL_HH
-// Rock bottom of AST class hierarchy
-//
-// This class is inherited by all classes which represent named entities
-// in IDL. It implements the line and file recording mechanism and also
-// records the type of the node. This may be useful for BEs to be able
-// to distinguish the real type of a node given only a superclass.
-
#include "utl_scoped_name.h"
#include "idl_narrow.h"
#include "ace/os_include/sys/os_types.h"
#include "ace/SString.h"
+#include "ace/Vector_T.h"
// This is for AIX w/IBM C++
class Identifier;
@@ -86,12 +80,16 @@ class UTL_Scope;
class UTL_String;
class ast_visitor;
-// This class is needed (only for g++) to get around a bug in g++ which
-// causes virtual operations to not be looked up correctly if an operation
-// is defined in more than one virtual public base class. This class makes
-// the hierarchy rooted in a single class, thereby eliminating the situation
-// that causes the bug to appear
+class AST_Annotation_Appl;
+typedef ACE_Vector<AST_Annotation_Appl*> AST_Annotation_Appls;
+/**
+ * This class is needed (only for g++) to get around a bug in g++ which
+ * causes virtual operations to not be looked up correctly if an operation
+ * is defined in more than one virtual public base class. This class makes
+ * the hierarchy rooted in a single class, thereby eliminating the situation
+ * that causes the bug to appear
+ */
class TAO_IDL_FE_Export COMMON_Base
{
protected:
@@ -116,6 +114,18 @@ protected:
bool is_abstract_;
};
+/**
+ * AST_Decl is the base class for almost all AST nodes.
+ *
+ * AST_* classes that do not inherit from AST_Decl include AST_Expression and
+ * AST_Union_Label. AST_Decls have a node type (a value from the enum
+ * AST_Decl::NodeType) and a name (a UTL_ScopedName). The node type may be
+ * useful for BEs to be able to distinguish the real type of a node given only
+ * a superclass. Additionally AST_Decl nodes record the scope of definition,
+ * the file name and line number where they were defined, whether this was
+ * defined by the compiler, whether this is the main file or an #include'd
+ * file, among other things.
+ */
class TAO_IDL_FE_Export AST_Decl : public virtual COMMON_Base
{
public:
@@ -169,12 +179,25 @@ public:
, NT_mirror_port // Denotes a mirror port
, NT_connector // Denotes a CCM connector
, NT_param_holder // Denotes a template param placeholder
+ , NT_annotation_decl // The declaration of an annotation
+ , NT_annotation_appl // Application of an annotation to an IDL element
+ , NT_annotation_member // Value Inside an Annotation
};
AST_Decl (NodeType type,
UTL_ScopedName *n,
bool anonymous = false);
+ /**
+ * A sort of copy constructor that creates a copy of the AST_Decl for a new
+ * scope.
+ * The new name must be calculated before hand.
+ * This was created for Annotation Applications and Extended Structs.
+ */
+ AST_Decl (
+ UTL_ScopedName *name,
+ AST_Decl *other);
+
virtual ~AST_Decl (void);
// Cleanup method.
@@ -308,6 +331,71 @@ public:
bool in_tmpl_mod_not_aliased (void) const;
void in_tmpl_mod_not_aliased (bool val);
+ /// Set and get annotations for this IDL element
+ ///{
+ virtual void annotation_appls (AST_Annotation_Appls *annotations);
+ AST_Annotation_Appls *annotation_appls ();
+ ///}
+
+ /**
+ * Dump Annotations AST
+ *
+ * By default print each annotation on its own line. If print_inline is true,
+ * it prints them with spaces separating them instead.
+ */
+ void dump_annotations (ACE_OSTREAM_TYPE &o, bool print_inline = false);
+
+ /**
+ * Dump Object with Annotations
+ */
+ void dump_with_annotations (ACE_OSTREAM_TYPE &o, bool inline_annotations= false);
+
+ /**
+ * Dump AST Object to Stream
+ *
+ * Uses dump_annotations() before dumping if an object has annotations and is
+ * annotatable.
+ */
+ friend ACE_OSTREAM_TYPE &
+ operator<< (ACE_OSTREAM_TYPE &o, AST_Decl &d);
+
+ /**
+ * Returns true if annotations are valid to use on this
+ */
+ virtual bool annotatable () const;
+
+ /**
+ * Return true if annotations are dumped inline when using <<
+ */
+ virtual bool dump_annotations_inline () const;
+
+ /**
+ * Return true if annotations are dumped at all when using <<
+ */
+ virtual bool auto_dump_annotations () const;
+
+ /**
+ * True if defined using idl_global->eval()
+ */
+ virtual bool builtin () const;
+
+ /**
+ * True if the node should be dumped
+ */
+ virtual bool should_be_dumped () const;
+
+ /**
+ * Get Annotation Vector Reference.
+ * If this is a typedef, it includes recursively acquired annotations from
+ * the possible chain of direct typedefs.
+ */
+ virtual AST_Annotation_Appls &annotations ();
+
+ /**
+ * Should AMI visit this node?
+ */
+ virtual bool ami_visit ();
+
protected:
// These are not private because they're used by
// be_predefined_type' constructor and can be called
@@ -322,7 +410,6 @@ protected:
int contains_wstring_;
// If we are a scope, do we contain a wstring at some level?
-protected:
void dump_i (ACE_OSTREAM_TYPE &o, const char *s) const ;
void compute_repoID (void);
@@ -337,6 +424,14 @@ protected:
const char *node_type_to_string (NodeType nt);
// Convert a NodeType to a string for dumping.
+ /// Annotations applied to this IDL element
+ AST_Annotation_Appls* annotation_appls_;
+
+ /**
+ * True if defined using idl_global->eval()
+ */
+ bool builtin_;
+
private:
// Data
@@ -391,7 +486,6 @@ private:
bool in_tmpl_mod_not_aliased_;
// false by default - if true, we can't be referenced.
-private:
void compute_full_name (UTL_ScopedName *n);
// Compute the full name of an AST node.
@@ -400,4 +494,6 @@ private:
// Non-top-level version of set_prefix_with_typeprefix.
};
+typedef ACE_Vector<AST_Decl*> AST_Decls;
+
#endif // _AST_DECL_AST_DECL_HH
diff --git a/TAO/TAO_IDL/include/ast_enum.h b/TAO/TAO_IDL/include/ast_enum.h
index fb373291f97..3ab61916e3b 100644
--- a/TAO/TAO_IDL/include/ast_enum.h
+++ b/TAO/TAO_IDL/include/ast_enum.h
@@ -110,6 +110,8 @@ public:
static AST_Decl::NodeType const NT;
+ virtual bool annotatable () const { return true; }
+
private:
friend int tao_yyparse (void);
diff --git a/TAO/TAO_IDL/include/ast_enum_val.h b/TAO/TAO_IDL/include/ast_enum_val.h
index a7d5df282d3..6339f5280cf 100644
--- a/TAO/TAO_IDL/include/ast_enum_val.h
+++ b/TAO/TAO_IDL/include/ast_enum_val.h
@@ -68,6 +68,8 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
#include "ast_constant.h"
+class AST_Enum;
+
// An enumerator is a constant of type unsigned long.
class TAO_IDL_FE_Export AST_EnumVal : public virtual AST_Constant
@@ -88,6 +90,17 @@ public:
virtual int ast_accept (ast_visitor *visitor);
static AST_Decl::NodeType const NT;
+
+ virtual bool annotatable () const { return true; }
+
+ /// Parent Enum of this value
+ ///{
+ AST_Enum *enum_parent ();
+ void enum_parent (AST_Enum* node);
+ ///)
+
+private:
+ AST_Enum *enum_parent_;
};
#endif // _AST_ENUM_VAL_AST_ENUM_VAL_HH
diff --git a/TAO/TAO_IDL/include/ast_expression.h b/TAO/TAO_IDL/include/ast_expression.h
index 87798bea6f4..ec2dfc4eb22 100644
--- a/TAO/TAO_IDL/include/ast_expression.h
+++ b/TAO/TAO_IDL/include/ast_expression.h
@@ -74,6 +74,7 @@ class UTL_Scope;
class ast_visitor;
class AST_Decl;
class AST_Param_Holder;
+class AST_Enum;
// Representation of expression values.
@@ -290,6 +291,14 @@ public:
// Accessor for the member.
AST_Param_Holder *param_holder (void) const;
+ static const char *exprtype_to_string (ExprType t);
+
+ /// Pointer to enum of this value if applicable
+ ///{
+ AST_Enum *enum_parent ();
+ void enum_parent (AST_Enum *node);
+ ///}
+
protected:
// Evaluate different sets of operators.
AST_ExprValue *eval_bin_op (EvalKind ek);
@@ -335,12 +344,14 @@ private:
AST_Param_Holder *param_holder_;
// Non-zero if we were created from a reference template param.
-private:
// Fill out the lineno, filename and definition scope details.
void fill_definition_details (void);
// Internal evaluation.
virtual AST_ExprValue *eval_internal (EvalKind ek);
+
+ /// Pointer to enum of this value if applicable
+ AST_Enum *enum_parent_;
};
#endif // _AST_EXPR_VAL_AST_EXPR_VAL_HH
diff --git a/TAO/TAO_IDL/include/ast_field.h b/TAO/TAO_IDL/include/ast_field.h
index 3436d810fbe..0eb2d152125 100644
--- a/TAO/TAO_IDL/include/ast_field.h
+++ b/TAO/TAO_IDL/include/ast_field.h
@@ -99,11 +99,26 @@ public:
UTL_ScopedName *n,
Visibility vis = vis_NA);
+ /**
+ * A sort of copy constructor that creates a copy of the AST_Field for a new
+ * scope.
+ * The new name must be calculated before hand.
+ * This was created for Annotation Instances and Extended Structs.
+ */
+ AST_Field (
+ UTL_ScopedName *name,
+ AST_Field *other);
+
virtual ~AST_Field (void);
// Data Accessors.
AST_Type *field_type (void) const;
- Visibility visibility (void) const;
+
+ /// Get and Set Visibility
+ ///{
+ Visibility visibility () const;
+ void visibility (Visibility val);
+ ///}
// Are we or do we contain a wstring?
virtual int contains_wstring (void);
@@ -128,6 +143,8 @@ public:
static AST_Decl::NodeType const NT;
+ virtual bool annotatable () const;
+
protected:
// Data.
diff --git a/TAO/TAO_IDL/include/ast_generator.h b/TAO/TAO_IDL/include/ast_generator.h
index 9ebea1697ae..d4fd9fbac16 100644
--- a/TAO/TAO_IDL/include/ast_generator.h
+++ b/TAO/TAO_IDL/include/ast_generator.h
@@ -94,6 +94,10 @@ class AST_Param_Holder;
class AST_Finder;
class AST_Fixed;
+#include "ast_annotation_appl.h"
+
+class AST_Annotation_Member;
+
// Defines base class for node generators.
class TAO_IDL_FE_Export AST_Generator
@@ -413,6 +417,18 @@ public:
AST_Param_Holder *create_param_holder (
UTL_ScopedName *parameter_name,
FE_Utils::T_Param_Info *info);
+
+ virtual AST_Annotation_Decl * create_annotation_decl (
+ UTL_ScopedName *name);
+
+ virtual AST_Annotation_Member * create_annotation_member (
+ AST_Expression::ExprType expr_type,
+ AST_Type *type,
+ UTL_ScopedName *name);
+
+ virtual AST_Annotation_Appl * create_annotation_appl (
+ UTL_ScopedName *name,
+ AST_Annotation_Appl::Params *params);
};
#endif // _AST_GENERATOR_AST_GENERATOR_HH
diff --git a/TAO/TAO_IDL/include/ast_module.h b/TAO/TAO_IDL/include/ast_module.h
index eefe207a66d..03998ee62f0 100644
--- a/TAO/TAO_IDL/include/ast_module.h
+++ b/TAO/TAO_IDL/include/ast_module.h
@@ -230,12 +230,18 @@ public:
virtual
AST_PortType *fe_add_porttype (AST_PortType *pt);
+ virtual
+ AST_Annotation_Decl *fe_add_annotation_decl (
+ AST_Annotation_Decl *annotation_decl);
+
// Reset the last_in_same_parent_scope_ member to ourself
// (called by AST_Root::destroy on the CORBA module containing
// the basic types, since it isn't destroyed between processing
// multiple IDL files.
void reset_last_in_same_parent_scope (void);
+ virtual bool annotatable () const { return true; }
+
private: // Data
bool pd_has_nested_valuetype_;
diff --git a/TAO/TAO_IDL/include/ast_sequence.h b/TAO/TAO_IDL/include/ast_sequence.h
index 69787e142d2..f91dc3a0087 100644
--- a/TAO/TAO_IDL/include/ast_sequence.h
+++ b/TAO/TAO_IDL/include/ast_sequence.h
@@ -118,6 +118,14 @@ public:
static AST_Decl::NodeType const NT;
+ /**
+ * Get and Set Annotations on the base type
+ */
+ ///{
+ AST_Annotation_Appls *base_type_annotations ();
+ void base_type_annotations (AST_Annotation_Appls *annotations);
+ ///}
+
private:
// Data.
AST_Expression *pd_max_size;
@@ -132,6 +140,11 @@ private:
bool owns_base_type_;
// If our base type is anonymous array or sequence, we're
// responsible for destroying it.
+
+ /**
+ * Annotations on the base type
+ */
+ AST_Annotation_Appls *base_type_annotations_;
};
#endif // _AST_SEQUENCE_AST_SEQUENCE_HH
diff --git a/TAO/TAO_IDL/include/ast_structure.h b/TAO/TAO_IDL/include/ast_structure.h
index b33e5e138ee..7ccf834cf66 100644
--- a/TAO/TAO_IDL/include/ast_structure.h
+++ b/TAO/TAO_IDL/include/ast_structure.h
@@ -155,6 +155,16 @@ public:
static AST_Decl::NodeType const NT;
+ virtual bool annotatable () const;
+
+ virtual AST_Field *fe_add_field (AST_Field *f);
+
+ /// Easy Member Access
+ ///{
+ virtual AST_Decl *operator[] (const size_t index);
+ virtual AST_Decl *operator[] (const char* name);
+ ///}
+
protected:
friend int tao_yyparse (void);
// Scope Management Protocol.
@@ -163,8 +173,6 @@ protected:
virtual AST_Structure *fe_add_structure (AST_Structure *s);
- virtual AST_Field *fe_add_field (AST_Field *f);
-
virtual AST_Enum *fe_add_enum (AST_Enum *e);
virtual AST_EnumVal *fe_add_enum_val (AST_EnumVal *v);
@@ -172,7 +180,6 @@ protected:
virtual int compute_size_type (void);
// Compute the size type if it is unknown.
-protected:
ACE_Unbounded_Queue<AST_Field *> fields_;
// Container for this struct's field nodes. Excludes nodes included
// in member_count, i.e., enum values of an enum declared inside
diff --git a/TAO/TAO_IDL/include/ast_typedef.h b/TAO/TAO_IDL/include/ast_typedef.h
index 54b8a0e309b..ea1f28cba3b 100644
--- a/TAO/TAO_IDL/include/ast_typedef.h
+++ b/TAO/TAO_IDL/include/ast_typedef.h
@@ -116,9 +116,21 @@ public:
static AST_Decl::NodeType const NT;
+ virtual bool dump_annotations_inline () const { return true; }
+
+ /**
+ * Recursively acquired annotations from typedefs.
+ */
+ virtual AST_Annotation_Appls &annotations ();
+
protected:
virtual int compute_size_type (void);
// Compute the size type if it is unknown.
+
+ /**
+ * Cache of Recursively acquired annotations from typedefs.
+ */
+ AST_Annotation_Appls *cached_annotations_;
};
#endif // _AST_TYPEDEF_AST_TYPEDEF_HH
diff --git a/TAO/TAO_IDL/include/ast_union.h b/TAO/TAO_IDL/include/ast_union.h
index 7397bbde637..75000af257f 100644
--- a/TAO/TAO_IDL/include/ast_union.h
+++ b/TAO/TAO_IDL/include/ast_union.h
@@ -138,6 +138,14 @@ public:
static AST_Decl::NodeType const NT;
+ /**
+ * Get and Set Annotations on the discriminator
+ */
+ ///{
+ AST_Annotation_Appls *disc_annotations ();
+ void disc_annotations (AST_Annotation_Appls *annotations);
+ ///}
+
protected:
virtual int compute_size_type (void);
// Compute the size type if it is unknown.
@@ -195,6 +203,11 @@ private:
int default_index_;
// Default label index (zero based indexing).
+
+ /**
+ * Annotations on the discriminator
+ */
+ AST_Annotation_Appls *disc_annotations_;
};
#endif // _AST_UNION_AST_UNION_HH
diff --git a/TAO/TAO_IDL/include/ast_union_branch.h b/TAO/TAO_IDL/include/ast_union_branch.h
index a7e04a1a6d8..955f9e0c8e3 100644
--- a/TAO/TAO_IDL/include/ast_union_branch.h
+++ b/TAO/TAO_IDL/include/ast_union_branch.h
@@ -118,6 +118,8 @@ public:
static AST_Decl::NodeType const NT;
+ virtual bool auto_dump_annotations () const { return false; }
+
private:
// list of labels.
UTL_LabelList *pd_ll;
diff --git a/TAO/TAO_IDL/include/ast_visitor.h b/TAO/TAO_IDL/include/ast_visitor.h
index a38300e805a..3a45c23a461 100644
--- a/TAO/TAO_IDL/include/ast_visitor.h
+++ b/TAO/TAO_IDL/include/ast_visitor.h
@@ -68,6 +68,7 @@ class AST_Root;
class AST_Native;
class AST_Param_Holder;
class AST_Fixed;
+class AST_Annotation_Decl;
/**
* @class ast_visitor
@@ -138,6 +139,7 @@ public:
virtual int visit_native (AST_Native *node) = 0;
virtual int visit_valuebox (AST_ValueBox *node) = 0;
virtual int visit_fixed (AST_Fixed *node);
+ virtual int visit_annotation_decl (AST_Annotation_Decl *node);
protected:
// For abstract class.
diff --git a/TAO/TAO_IDL/include/fe_declarator.h b/TAO/TAO_IDL/include/fe_declarator.h
index 4527d2693e8..d55d8c3a735 100644
--- a/TAO/TAO_IDL/include/fe_declarator.h
+++ b/TAO/TAO_IDL/include/fe_declarator.h
@@ -70,7 +70,7 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
class AST_Decl;
class AST_Type;
-class FE_Declarator
+class TAO_IDL_FE_Export FE_Declarator
{
public:
// Enum to denote types of declarators.
diff --git a/TAO/TAO_IDL/include/fe_extern.h b/TAO/TAO_IDL/include/fe_extern.h
index 2dd29077402..47f95a109c5 100644
--- a/TAO/TAO_IDL/include/fe_extern.h
+++ b/TAO/TAO_IDL/include/fe_extern.h
@@ -82,6 +82,9 @@ TAO_IDL_FE_Export int
FE_yyparse (void);
TAO_IDL_FE_Export void
+FE_yydebug (bool);
+
+TAO_IDL_FE_Export void
#ifdef USE_MCPP_BUFFER_LEXING
FE_set_yyin (char *); // Set yyin
#else
@@ -99,12 +102,30 @@ FE_new_UTL_Error (void);
TAO_IDL_FE_Export UTL_Indenter *
FE_new_UTL_Indenter (void);
-// Exception thrown when exiting prematurely in the front end.
-// Also used when command line options limit the output to
-// usage, version or preprocessed files. Catch block is just
-// before front end cleanup and exit.
+/**
+ * Exception thrown when exiting prematurely in the front end.
+ * Also used when command line options limit the output to
+ * usage, version or preprocessed files. Catch block is just
+ * before front end cleanup and exit.
+ *
+ * By default it increments the error count by 1. The status can also be set
+ * mannually.
+ */
class TAO_IDL_FE_Export Bailout
{
+public:
+ bool increment_errors_;
+ int errors_;
+ Bailout()
+ : increment_errors_ (true),
+ errors_ (-1) // (Invalid)
+ {
+ }
+ Bailout(int errors)
+ : increment_errors_ (false),
+ errors_ (errors)
+ {
+ }
};
#endif // _FE_EXTERN_FE_EXTERN_HH
diff --git a/TAO/TAO_IDL/include/idl_defines.h b/TAO/TAO_IDL/include/idl_defines.h
index a4bede43aef..e7be19f038d 100644
--- a/TAO/TAO_IDL/include/idl_defines.h
+++ b/TAO/TAO_IDL/include/idl_defines.h
@@ -77,13 +77,45 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
// HP-UX 64-bit warns that the result of '<<' is widened from an int to long.
// They are assumed to be of type long within the tao_idl and IFR code.
-#define IDL_CF_VERSION (long)(1 << 0)
#define IDL_CF_DUMP_AST (long)(1 << 1)
#define IDL_CF_ONLY_PREPROC (long)(1 << 2)
-#define IDL_CF_ONLY_USAGE (long)(1 << 3)
#define IDL_CF_INFORMATIVE (long)(1 << 4)
#define IDL_CF_NOWARNINGS (long)(1 << 5)
+/**
+ * IDL_CF_ONLY_USAGE is deprecated but remains for backwards compatibility.
+ * It's direct successor is print_help (), but this was being used as part of
+ * an indicator of a argument being invalid. Convention is that cli programs
+ * only say that the argument(s) are wrong, not to print out the whole
+ * help/usage message, so instead this call should be used:
+ * idl_global->parse_args_exit (1);
+ *
+ * When this is called, the argument parser should state the mistake and exit
+ * the parsing early. Afterwards tao_idl will print how to see the help and
+ * exit with an error status.
+ */
+#define IDL_CF_ONLY_USAGE (long)(1 << 3)
+
+/**
+ * This signals that tao_idl has void idl_global->parse_args_exit (int status).
+ * Use something like this to have backends use the new behavior with tao_idl
+ * newer than 2.5.1 but still remain backwards compatible with older versions
+ * of tao_idl:
+ * #ifdef TAO_IDL_HAS_PARSE_ARGS_EXIT
+ * #define PARSE_ARGS_ERROR idl_global->parse_args_exit (1);
+ * #else
+ * #define PARSE_ARGS_ERROR \
+ * idl_global->set_compile_flags ( \
+ * idl_global->compile_flags () | IDL_CF_ONLY_USAGE);
+ * #endif
+ */
+#define TAO_IDL_HAS_PARSE_ARGS_EXIT
+
+/**
+ * Defined if TAO_IDL has support for annotations
+ */
+#define TAO_IDL_HAS_ANNOTATIONS
+
#define NAMEBUFSIZE 1024
// Maximum length of static buffers used to store names.
diff --git a/TAO/TAO_IDL/include/idl_global.h b/TAO/TAO_IDL/include/idl_global.h
index 3e8cff756ff..dae0328872e 100644
--- a/TAO/TAO_IDL/include/idl_global.h
+++ b/TAO/TAO_IDL/include/idl_global.h
@@ -74,8 +74,10 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
#include "ast_expression.h"
#include "ast_predefined_type.h"
+#include "utl_identifier.h"
#include "utl_stack.h"
#include "fe_utils.h"
+#include "idl_version.h"
class AST_Root;
class AST_Module;
@@ -88,9 +90,11 @@ class UTL_Error;
class UTL_String;
class UTL_Indenter;
-// idl_global.hh
-//
-// Defines a class containing all front end global data.
+/**
+ * \file Defines a class containing all front end global data.
+ *
+ * Corresponding source file is util/utl_global.cpp.
+ */
class TAO_IDL_FE_Export IDL_GlobalData
{
@@ -294,72 +298,18 @@ public:
, PS_PorttypeSqSeen // Seen '{' for porttype
, PS_PorttypeQsSeen // Seen '}' for porttype
, PS_PorttypeBodySeen // Seen complete porttype body
+ , PS_AnnotationDeclSeen
};
- // flags for types of declarations seen while parsing.
- bool abstract_iface_seen_;
- bool abstractbase_seen_;
- bool aggregate_seen_;
- bool ambiguous_type_seen_;
- bool any_arg_seen_;
- bool any_seen_;
- bool any_seq_seen_;
- bool array_seen_;
- bool array_seq_seen_;
- bool base_object_seen_;
- bool basic_type_seen_;
- bool bd_string_seen_;
- bool boolean_seq_seen_;
- bool char_seq_seen_;
- bool component_seen_;
- bool connector_seen_;
- bool double_seq_seen_;
- bool enum_seen_;
- bool exception_seen_;
- bool fixed_array_decl_seen_;
- bool fixed_size_decl_seen_;
- bool float_seq_seen_;
- bool fwd_iface_seen_;
- bool fwd_valuetype_seen_;
- bool iface_seq_seen_;
- bool interface_seen_;
- bool local_iface_seen_;
- bool long_seq_seen_;
- bool longdouble_seq_seen_;
- bool longlong_seq_seen_;
- bool non_local_fwd_iface_seen_;
- bool non_local_iface_seen_;
- bool non_local_op_seen_;
- bool object_arg_seen_;
- bool octet_seq_seen_;
- bool operation_seen_;
- bool pseudo_seq_seen_;
- bool recursive_type_seen_;
- bool seq_seen_;
- bool short_seq_seen_;
- bool special_basic_decl_seen_;
- bool string_seen_;
- bool string_member_seen_;
- bool string_seq_seen_;
- bool typecode_seen_;
- bool ub_string_seen_;
- bool ulong_seq_seen_;
- bool ulonglong_seq_seen_;
- bool union_seen_;
- bool ushort_seq_seen_;
- bool valuebase_seen_;
- bool valuefactory_seen_;
- bool valuetype_seen_;
- bool var_array_decl_seen_;
- bool var_size_decl_seen_;
- bool vt_seq_seen_;
- bool wchar_seq_seen_;
- bool wstring_seq_seen_;
- bool dds_connector_seen_;
- bool ami_connector_seen_;
-
- // flag to force generation of skeleton includes (see bug #2419).
- bool need_skeleton_includes_;
+ /**
+ * Choices for how to react to unkown annotations
+ */
+ enum Unknown_Annotations {
+ UNKNOWN_ANNOTATIONS_WARN_ONCE,
+ UNKNOWN_ANNOTATIONS_WARN_ALL,
+ UNKNOWN_ANNOTATIONS_ERROR,
+ UNKNOWN_ANNOTATIONS_IGNORE
+ };
IDL_GlobalData (void);
~IDL_GlobalData (void);
@@ -758,6 +708,187 @@ public:
void in_tmpl_mod_alias (bool val);
// Accessors for the member.
+ /**
+ * Convenience function that causes the program to exit with the given return
+ * status after returning from parsing arguments.
+ */
+ void parse_args_exit (int status);
+
+ /**
+ * Convenience function that causes the program to print version and exit
+ * with an success return code after returning from parsing arguments.
+ */
+ void print_version ();
+
+ /**
+ * Convenience function that causes the program to print help and exit
+ * with an success return code after returning from parsing arguments.
+ */
+ void print_help ();
+
+ /**
+ * Returns true if warnings are to be shown
+ */
+ bool print_warnings ();
+
+ /**
+ * Eval string as though it was included in the IDL file. Results are added
+ * to the Abstract Syntax Tree. It was added for use in be_post_init. THIS
+ * SHOULD NOT BE CALLED WHILE IN THE MIDDLE OF PARSING.
+ */
+ void eval (const char *string);
+
+ /**
+ * Dump AST after parsing files and exit
+ */
+ void dump_ast ();
+
+ /// flags for types of declarations seen while parsing.
+ ///{
+ bool abstract_iface_seen_;
+ bool abstractbase_seen_;
+ bool aggregate_seen_;
+ bool ambiguous_type_seen_;
+ bool any_arg_seen_;
+ bool any_seen_;
+ bool any_seq_seen_;
+ bool array_seen_;
+ bool array_seq_seen_;
+ bool base_object_seen_;
+ bool basic_type_seen_;
+ bool bd_string_seen_;
+ bool boolean_seq_seen_;
+ bool char_seq_seen_;
+ bool component_seen_;
+ bool connector_seen_;
+ bool double_seq_seen_;
+ bool enum_seen_;
+ bool exception_seen_;
+ bool fixed_array_decl_seen_;
+ bool fixed_size_decl_seen_;
+ bool float_seq_seen_;
+ bool fwd_iface_seen_;
+ bool fwd_valuetype_seen_;
+ bool iface_seq_seen_;
+ bool interface_seen_;
+ bool local_iface_seen_;
+ bool long_seq_seen_;
+ bool longdouble_seq_seen_;
+ bool longlong_seq_seen_;
+ bool non_local_fwd_iface_seen_;
+ bool non_local_iface_seen_;
+ bool non_local_op_seen_;
+ bool object_arg_seen_;
+ bool octet_seq_seen_;
+ bool operation_seen_;
+ bool pseudo_seq_seen_;
+ bool recursive_type_seen_;
+ bool seq_seen_;
+ bool short_seq_seen_;
+ bool special_basic_decl_seen_;
+ bool string_seen_;
+ bool string_member_seen_;
+ bool string_seq_seen_;
+ bool typecode_seen_;
+ bool ub_string_seen_;
+ bool ulong_seq_seen_;
+ bool ulonglong_seq_seen_;
+ bool union_seen_;
+ bool ushort_seq_seen_;
+ bool valuebase_seen_;
+ bool valuefactory_seen_;
+ bool valuetype_seen_;
+ bool var_array_decl_seen_;
+ bool var_size_decl_seen_;
+ bool vt_seq_seen_;
+ bool wchar_seq_seen_;
+ bool wstring_seq_seen_;
+ bool dds_connector_seen_;
+ bool ami_connector_seen_;
+ ///}
+
+ /// flag to force generation of skeleton includes (see bug #2419).
+ bool need_skeleton_includes_;
+
+ /**
+ * Version of IDL to enforce
+ */
+ IdlVersion idl_version_;
+
+ /**
+ * Default version of IDL to enforce. Compilers extending tao_idl coould set
+ * idl_version_ directly, but this allows Can be set to allow
+ * --default-idl-version to print an accuate default IDL version.
+ */
+ IdlVersion default_idl_version_;
+
+ /**
+ * Perform the compilation process right up until invoking the backend.
+ * In other words just check the syntax of the input files, do not create
+ * any output.
+ */
+ bool syntax_only_;
+
+ /**
+ * Exit when finished processing cli arguments
+ * Default is false.
+ */
+ bool parse_args_exit_;
+
+ /**
+ * If parse_args_exit_ is true, this is the program status to return from
+ * main.
+ * Default is 0.
+ */
+ int parse_args_exit_status_;
+
+ /**
+ * Print command line argument help message when finished processing
+ * cli arguments.
+ */
+ bool print_help_;
+
+ /**
+ * Print compiler version when finished processing cli arguments.
+ */
+ bool print_version_;
+
+ /**
+ * If true, we are inside the eval() function
+ */
+ bool in_eval_;
+
+ /**
+ * Dump constructs defined using eval() if true.
+ */
+ bool dump_builtins_;
+
+ /**
+ * If true, Dump only the IDL defined using eval() and exit using
+ * ignore_files_
+ */
+ bool just_dump_builtins_;
+
+ /**
+ * Exit right before parsing input files.
+ */
+ bool ignore_files_;
+
+ /**
+ * If true, silently ignore lookup errors.
+ */
+ bool ignore_lookup_errors_;
+
+ /**
+ * Reaction to unknown annotations
+ */
+ Unknown_Annotations unknown_annotations_;
+
+ /**
+ * Set of the local names of unkown annotations already seen
+ */
+ ACE_Unbounded_Set<Identifier> unknown_annotations_seen_;
+
private:
// Data
UTL_ScopeStack pd_scopes; // Store scopes stack
diff --git a/TAO/TAO_IDL/include/idl_version.h b/TAO/TAO_IDL/include/idl_version.h
new file mode 100644
index 00000000000..03255a88962
--- /dev/null
+++ b/TAO/TAO_IDL/include/idl_version.h
@@ -0,0 +1,114 @@
+/**
+ * Header File for Tracking IDL Versions
+ *
+ * Source File Counterpart is util/idl_version.cpp.
+ */
+
+#ifndef IDL_VERSION_HEADER
+#define IDL_VERSION_HEADER
+
+#include "TAO_IDL_FE_Export.h"
+
+/**
+ * List of Specific Idl Versions
+ *
+ * Order is used to determine how versions compare to each other.
+ *
+ * NOTE: If updated, idlVersionNames in util/idl_version.cpp must be updated
+ * as well!
+ */
+enum SpecificIdlVersion
+{
+ /// Invalid Version Value
+ IDL_VERSION_INVALID,
+
+ /**
+ * IDL 3.x
+ * tao_idl dialect of IDL defined in OMG CORBA and IDL 3.5 specs.
+ * This is the version of IDL supported by the compiler as is without IDL
+ * version checks.
+ */
+ IDL_VERSION_3,
+
+ /**
+ * IDL 4.x
+ * tao_idl dialect of IDL as defined in OMG 2016-04-02 (http://www.omg.org/spec/IDL/4.0/)
+ * and later revisions.
+ */
+ IDL_VERSION_4,
+
+ /**
+ * SHOULD ALWAYS BE LAST, DO NOT PUT ANY VERSIONS PAST THIS!
+ *
+ * Attempting to pass this to IdlVersion will result in an invalid value.
+ */
+ IDL_VERSION_COUNT
+};
+
+/**
+ * Default version of IDL to use if BE does not specify a default version.
+ * This is so that BE can control the version without overriding idl_version_
+ * directly and making --default-idl-version incorrect.
+ */
+const SpecificIdlVersion DEFAULT_DEFAULT_IDL_VERSION = IDL_VERSION_3;
+
+/**
+ * Class Operations involving SpecificIdlVersion Values
+ */
+class TAO_IDL_FE_Export IdlVersion
+{
+public:
+ /**
+ * New IdlVersion set to DEFAULT_DEFAULT_IDL_VERSION.
+ */
+ IdlVersion ();
+
+ /**
+ * New IdlVersion set from a SpecificIdlVersion if version is valid,
+ * otherwise IDL_VERSION_INVALID.
+ */
+ IdlVersion (SpecificIdlVersion version);
+
+ /**
+ * Get version as a SpecificIdlVersion.
+ */
+ SpecificIdlVersion version () const;
+ /**
+ * Set version from a SpecificIdlVersion if version is valid, otherwise
+ * IDL_VERSION_INVALID.
+ */
+ void version (SpecificIdlVersion version);
+
+ /**
+ * Is Version Valid?
+ */
+ bool is_valid () const;
+
+ /**
+ * Get version as string.
+ */
+ const char * to_string () const;
+ /**
+ * Set version from string, sets versions as invalid if it does not match
+ * any strings in idlVersionNames.
+ */
+ void from_string (const char * version);
+
+ /**
+ * Compare a IdlVersion to a SpecificIdlVersion or another IdlVersion
+ */
+ ///{
+ operator SpecificIdlVersion () const;
+ bool operator== (SpecificIdlVersion other) const;
+ bool operator!= (SpecificIdlVersion other) const;
+ bool operator> (SpecificIdlVersion other) const;
+ bool operator>= (SpecificIdlVersion other) const;
+ bool operator< (SpecificIdlVersion other) const;
+ bool operator<= (SpecificIdlVersion other) const;
+ ///}
+
+private:
+ SpecificIdlVersion version_;
+};
+
+#endif
diff --git a/TAO/TAO_IDL/include/utl_annotations.h b/TAO/TAO_IDL/include/utl_annotations.h
new file mode 100644
index 00000000000..5b542528266
--- /dev/null
+++ b/TAO/TAO_IDL/include/utl_annotations.h
@@ -0,0 +1,26 @@
+#ifndef UTL_ANNOTATIONS_HEADER
+#define UTL_ANNOTATIONS_HEADER
+
+#include "TAO_IDL_FE_Export.h"
+
+#include "ast_annotation_appl.h"
+
+/**
+ * Given an AST_Annotation_Appls, find the last annotation that matches the
+ * given annotation declaration. Returns 0 if not found.
+ *
+ * "declaration" must be an absolutely scoped name or a pointer to the
+ * AST_Annotation_Decl.
+ */
+///{
+TAO_IDL_FE_Export AST_Annotation_Appl *UTL_find_annotation (
+ AST_Annotation_Appls &annotations, AST_Annotation_Decl *annotation);
+TAO_IDL_FE_Export AST_Annotation_Appl *UTL_find_annotation (
+ AST_Annotation_Appls *annotations, AST_Annotation_Decl *annotation);
+TAO_IDL_FE_Export AST_Annotation_Appl *UTL_find_annotation (
+ AST_Annotation_Appls &annotations, const char *annotation);
+TAO_IDL_FE_Export AST_Annotation_Appl *UTL_find_annotation (
+ AST_Annotation_Appls *annotations, const char *annotation);
+///}
+
+#endif
diff --git a/TAO/TAO_IDL/include/utl_err.h b/TAO/TAO_IDL/include/utl_err.h
index da67239bfc1..ecd81b7a330 100644
--- a/TAO/TAO_IDL/include/utl_err.h
+++ b/TAO/TAO_IDL/include/utl_err.h
@@ -76,10 +76,14 @@ class AST_Fixed;
class AST_Union;
class AST_UnionLabel;
class UTL_String;
+class AST_Annotation_Decl;
+class AST_Annotation_Member;
class TAO_IDL_FE_Export UTL_Error
{
public:
+ UTL_Error();
+
enum ErrorCode {
EIDL_SYNTAX_ERROR, // Syntax error in IDL input
// More details will be gleaned from examining
@@ -151,9 +155,16 @@ public:
EIDL_MISMATCHED_SEQ_PARAM, // 'sequence<T>' must match a previous param
EIDL_TEMPLATE_NOT_ALIASED, // ref to tmpl module scope must be via alias
EIDL_FIXED_UNSUPPORTED, // fixed data type is not supported
+ EIDL_IDL_VERSION_ERROR, // An error related to differences in IDL version
+ EIDL_UNSUPPORTED, // Unsupported feature was used in input IDL
+ EIDL_ANNOTATION_PARAM_ERROR, // Error in Annotation Parameters
+ EIDL_MISC, // Very Specific Error or Warning
EIDL_OK // No error
};
+ ErrorCode last_error;
+ ErrorCode last_warning;
+
// Operations
// Report errors with varying numbers of arguments
@@ -183,7 +194,7 @@ public:
// Report a syntax error in IDL input
void syntax_error (IDL_GlobalData::ParseState ps);
- // Report clash of declared and referenced indentifiers
+ // Report clash of declared and referenced identifiers
void redef_error (const char *n, const char *t);
// Report a name being used with different spellings
@@ -200,13 +211,16 @@ public:
// Same as above, but doesn't increment the error count.
void idl_keyword_warning (char *n);
- // Report an unsuccesful coercion attempt
+ // Report an unsuccessful coercion attempt
void coercion_error (AST_Expression *v,
AST_Expression::ExprType t);
// Report a failed name lookup attempt.
void lookup_error (UTL_ScopedName *n);
+ /// Report a failed name lookup attempt as a warning.
+ void lookup_warning (UTL_ScopedName *n);
+
// Report an illegal #pragma version.
void version_number_error (char *n);
@@ -254,7 +268,7 @@ public:
// A concrete supported interface must inherit from all concrete
// interfaces supported by the valuetype's ancestors, and all of
- // those conrete interfaces' ancestors.
+ // those concrete interfaces' ancestors.
void concrete_supported_inheritance_error (UTL_ScopedName *v,
UTL_ScopedName *i);
@@ -385,6 +399,56 @@ public:
// Reference to an item in the scope of a template
// module was not via an alias.
void template_scope_ref_not_aliased (AST_Decl *d);
+
+ /**
+ * Report IDL version error, with a given reason.
+ */
+ void idl_version_error (const char *reason);
+
+ /**
+ * Warn about an unsupported feature in the input IDL that can be ignored for
+ * the most part.
+ */
+ void unsupported_warning (const char *reason);
+
+ /**
+ * Report an unsupported feature in the input IDL that can't be ignored.
+ */
+ void unsupported_error (const char *reason);
+
+ /**
+ * Report a error for a specific situation
+ *
+ * If node is not defined the current file and line are reported.
+ */
+ void misc_error (const char *reason, AST_Decl *node = 0);
+
+ /**
+ * Report a warning for a specific situation
+ *
+ * If node is not defined the current file and line are reported.
+ */
+ void misc_warning (const char *reason, AST_Decl *node = 0);
+
+ /**
+ * Report that an invalid annotation parameter was passed
+ */
+ void invalid_annotation_param_error (
+ AST_Annotation_Appl *appl, AST_Annotation_Decl *decl,
+ Identifier *invalid_id);
+
+ /**
+ * Report that an annotation parameter has an invalid type
+ */
+ void invalid_annotation_param_type (
+ AST_Annotation_Appl *appl, AST_Annotation_Member *member,
+ AST_Expression *offending_value);
+
+ /**
+ * Report that an annotation parameter needs to be defined
+ */
+ void annotation_param_missing_error (
+ AST_Annotation_Appl *appl, AST_Annotation_Member *member);
};
#endif // _UTL_ERR_UTL_ERR_HH
diff --git a/TAO/TAO_IDL/include/utl_identifier.h b/TAO/TAO_IDL/include/utl_identifier.h
index 3afb4ef6301..e6ce80ead3f 100644
--- a/TAO/TAO_IDL/include/utl_identifier.h
+++ b/TAO/TAO_IDL/include/utl_identifier.h
@@ -78,17 +78,26 @@ public:
Identifier (const char *s);
// Constructor.
+ Identifier (const Identifier &other);
+
virtual ~Identifier (void);
// Destructor.
// Operations
+ /**
+ * Get the underlying string.
+ */
+ ///{
char *get_string (void);
- // Get the underlying string.
+ const char *get_string () const;
+ ///}
- void replace_string (const char * s);
+ void replace_string (const char *s);
// Replace the underlying string and free the old one.
+ void preprocess_and_replace_string (const char *s);
+
bool compare (Identifier *other);
// Compare with other Identifier.
@@ -110,12 +119,14 @@ public:
virtual void destroy (void);
// Cleanup function.
+ bool operator== (const Identifier &other) const;
+
private:
- // Storage for data.
- char *pv_string;
+ // Storage for data.
+ char *pv_string;
- // Did the IDL string have a leading underscore?
- bool escaped_;
+ // Did the IDL string have a leading underscore?
+ bool escaped_;
};
#endif // _UTL_IDENTIFIER_UTL_IDENTIFIER_HH
diff --git a/TAO/TAO_IDL/include/utl_idlist.h b/TAO/TAO_IDL/include/utl_idlist.h
index 9f4927d0178..ea59e45aca8 100644
--- a/TAO/TAO_IDL/include/utl_idlist.h
+++ b/TAO/TAO_IDL/include/utl_idlist.h
@@ -113,6 +113,17 @@ public:
int compare (UTL_IdList *other);
// Compares each component for equality.
+
+ /**
+ * Return a copy of the contents as a string
+ */
+ char *get_string_copy ();
+
+ /**
+ * Return true if the list begins with "::"
+ */
+ bool is_absolute ();
+
private:
Identifier *pd_car_data;
};
diff --git a/TAO/TAO_IDL/include/utl_scope.h b/TAO/TAO_IDL/include/utl_scope.h
index a21d5a0e40d..ef20c534e08 100644
--- a/TAO/TAO_IDL/include/utl_scope.h
+++ b/TAO/TAO_IDL/include/utl_scope.h
@@ -131,6 +131,8 @@ class AST_Mirror_Port;
class AST_Connector;
class UTL_StrList;
class UTL_NameList;
+class AST_Annotation_Decl;
+class AST_Annotation_Member;
// Forward declaration of active iterator for UTL_Scope.
class UTL_ScopeActiveIterator;
@@ -196,6 +198,8 @@ public:
// Look up one of the pseudo-object types.
AST_Decl *lookup_pseudo (Identifier *);
+ AST_Decl *lookup_by_name (const char *name);
+
virtual AST_Decl *look_in_prev_mods_local (Identifier *e,
bool ignore_fwd = false);
@@ -492,6 +496,14 @@ public:
virtual
AST_Mirror_Port *fe_add_mirror_port (AST_Mirror_Port *mp);
+ virtual
+ AST_Annotation_Decl *fe_add_annotation_decl (
+ AST_Annotation_Decl *annotation_decl);
+
+ virtual
+ AST_Annotation_Member *fe_add_annotation_member (
+ AST_Annotation_Member *annotation_member);
+
protected:
/// Quick check on the head of a name to see if it's global.
bool is_global_name (Identifier *i);
diff --git a/TAO/TAO_IDL/narrow/narrow.cpp b/TAO/TAO_IDL/narrow/narrow.cpp
index 763072c5ac1..180ac2888df 100644
--- a/TAO/TAO_IDL/narrow/narrow.cpp
+++ b/TAO/TAO_IDL/narrow/narrow.cpp
@@ -78,6 +78,8 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
#include "ast_enum.h"
#include "ast_interface_fwd.h"
#include "utl_scope.h"
+#include "ast_annotation_decl.h"
+#include "ast_annotation_appl.h"
// Narrowing functions for AST
@@ -123,6 +125,10 @@ ScopeAsDecl (UTL_Scope *s)
return AST_Structure::narrow_from_scope (s);
case AST_Decl::NT_enum:
return AST_Enum::narrow_from_scope (s);
+ case AST_Decl::NT_annotation_decl:
+ return AST_Annotation_Decl::narrow_from_scope (s);
+ case AST_Decl::NT_annotation_appl:
+ return AST_Annotation_Appl::narrow_from_scope (s);
default:
return 0;
}
diff --git a/TAO/TAO_IDL/regen.pl b/TAO/TAO_IDL/regen.pl
new file mode 100755
index 00000000000..ed20f2bc56b
--- /dev/null
+++ b/TAO/TAO_IDL/regen.pl
@@ -0,0 +1,16 @@
+eval '(exit $?0)' && eval 'exec perl -w -S $0 ${1+"$@"}'
+ & eval 'exec perl -w -S $0 $argv:q'
+ if 0;
+
+use strict;
+use Env 'ACE_ROOT';
+
+my %args = map { $_ => 1 } @ARGV;
+my $debug = exists($args{'-d'});
+
+my $features = 'tao_idl_fe_gen=1';
+system "$ACE_ROOT/bin/mpc.pl -type gnuace -features $features tao_idl_fe.mpc";
+utime undef, undef, 'fe/keywords.dat';
+
+my $bison_target = $debug ? 'debug_bison' : 'y.tab';
+system "make -f GNUmakefile.TAO_IDL_GEN $features lex.yy $bison_target all";
diff --git a/TAO/TAO_IDL/regen.sh b/TAO/TAO_IDL/regen.sh
deleted file mode 100755
index 94b877bf8c3..00000000000
--- a/TAO/TAO_IDL/regen.sh
+++ /dev/null
@@ -1,6 +0,0 @@
-if [[ tao_idl_fe.mpc -nt GNUmakefile.TAO_IDL_GEN ]]; then
- mpc.pl -type gnuace -features tao_idl_fe_gen=1 tao_idl_fe.mpc && \
- touch fe/keywords.dat
-fi && \
-make -f GNUmakefile.TAO_IDL_GEN tao_idl_fe_gen=1 lex.yy y.tab all && \
-make
diff --git a/TAO/TAO_IDL/tao_idl.cpp b/TAO/TAO_IDL/tao_idl.cpp
index a4b6254559a..a21592d926c 100644
--- a/TAO/TAO_IDL/tao_idl.cpp
+++ b/TAO/TAO_IDL/tao_idl.cpp
@@ -279,6 +279,12 @@ DRV_drive (const char *s)
idl_global->root ()->dump (*ACE_DEFAULT_LOG_STREAM);
}
+ if (idl_global->syntax_only_)
+ {
+ // Set error count for syntax errors
+ throw Bailout (idl_global->err_count ());
+ }
+
// Call the main entry point for the BE.
if (idl_global->compile_flags () & IDL_CF_INFORMATIVE)
{
@@ -323,33 +329,34 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[])
throw Bailout ();
}
+ // Give BE chance to set default IDL version using BE_init
+ idl_global->idl_version_ = idl_global->default_idl_version_;
+
// Parse arguments.
DRV_parse_args (atc.get_argc (), atc.get_ASCII_argv ());
- // If a version message is requested, print it and exit cleanly.
- if (idl_global->compile_flags () & IDL_CF_VERSION)
+ // Print Help Message
+ if (idl_global->print_help_)
{
- DRV_version ();
- DRV_cleanup ();
- return 0;
+ DRV_usage ();
}
- // If a usage message is requested, print it and exit cleanly.
- if (idl_global->compile_flags () & IDL_CF_ONLY_USAGE)
+ // If a version message is requested, print it
+ if (idl_global->print_version_)
{
- DRV_usage ();
- DRV_cleanup ();
- return 0;
+ DRV_version ();
}
- // If there are no input files, and we are not using the
- // directory recursion option, there's no sense going any further.
- if (0 == DRV_nfiles && 0 == idl_global->recursion_start ())
+ // If exiting because of arguments, do it now
+ if (idl_global->parse_args_exit_)
{
- ACE_ERROR ((LM_ERROR,
- ACE_TEXT ("IDL: No input files\n")));
-
- throw Bailout ();
+ int status = idl_global->parse_args_exit_status_;
+ if (status)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Use \"-h\" or \"--help\" to see valid options.\n")));
+ }
+ throw Bailout (status);
}
AST_Generator *gen = be_util::generator_init ();
@@ -375,6 +382,30 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[])
// Does various things in various backends.
BE_post_init (DRV_files, DRV_nfiles);
+ // Dump Builtin IDL AST
+ if (idl_global->just_dump_builtins_)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("Dump Builtin IDL defined by Compiler:\n")));
+ idl_global->root ()->dump (*ACE_DEFAULT_LOG_STREAM);
+ idl_global->ignore_files_ = true;
+ }
+
+ if (idl_global->ignore_files_)
+ {
+ throw Bailout (idl_global->err_count ());
+ }
+
+ // If there are no input files, and we are not using the
+ // directory recursion option, there's no sense going any further.
+ if (0 == DRV_nfiles && 0 == idl_global->recursion_start ())
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("IDL: No input files\n")));
+
+ throw Bailout ();
+ }
+
FILE *output_file = 0;
if (idl_global->multi_file_input ())
@@ -406,13 +437,20 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[])
ACE_OS::unlink (idl_global->big_file_name ());
}
}
- catch (Bailout)
+ catch (const Bailout &bailout)
{
- // Incrementing here may be redundant, but the error count
- // is the exit value, and we want to make sure it isn't 0
- // if there was in fact an error. If a non-zero value is
- // off by 1, it's not so important.
- idl_global->set_err_count (idl_global->err_count () + 1);
+ if (bailout.increment_errors_)
+ {
+ // Incrementing here may be redundant, but the error count
+ // is the exit value, and we want to make sure it isn't 0
+ // if there was in fact an error. If a non-zero value is
+ // off by 1, it's not so important.
+ idl_global->set_err_count (idl_global->err_count () + 1);
+ }
+ else
+ {
+ idl_global->set_err_count (bailout.errors_);
+ }
}
int const retval = idl_global->err_count ();
diff --git a/TAO/TAO_IDL/tao_idl.mpc b/TAO/TAO_IDL/tao_idl.mpc
index 050b159e247..c2066e19b68 100644
--- a/TAO/TAO_IDL/tao_idl.mpc
+++ b/TAO/TAO_IDL/tao_idl.mpc
@@ -40,8 +40,10 @@ project(TAO_IDL_EXE) : aceexe, install, tao_output, tao_idl_fe {
verbatim(gnuace, postinstall) {
" @$(MKDIR) $(DESTDIR)$(INSTALL_PREFIX)/share/ace/bin"
" ln -sf $(INSTALL_PREFIX)/bin/tao_idl $(DESTDIR)$(INSTALL_PREFIX)/share/ace/bin"
+"ifeq ($(shared_libs),1)"
" @$(MKDIR) $(DESTDIR)$(INSTALL_PREFIX)/share/ace/lib"
" ln -sf $(INSTALL_PREFIX)/$(INSTALL_LIB)/$(LIB_PREFIX)TAO_IDL_[FB]E.$(SOEXT) $(DESTDIR)$(INSTALL_PREFIX)/share/ace/lib"
+"endif"
}
Source_Files {
diff --git a/TAO/TAO_IDL/tao_idl_fe.mpc b/TAO/TAO_IDL/tao_idl_fe.mpc
index 8feb6d337b2..f2fc3051adb 100644
--- a/TAO/TAO_IDL/tao_idl_fe.mpc
+++ b/TAO/TAO_IDL/tao_idl_fe.mpc
@@ -4,15 +4,12 @@ project(TAO_IDL_GEN) {
custom_only = 1
verbatim(gnuace, local) {
+ BISON_FLAGS := -d --feature=caret --warnings=error=deprecated --warnings=error=empty-rule --warnings=error=conflicts-rr
all: fe/fe_lookup.cpp fe/idl.yy.cpp fe/idl.tab.cpp fe/idl.tab.hpp
+ GPERF ?= $(ACE_ROOT)/bin/ace_gperf
fe/fe_lookup.cpp: fe/keywords.dat
- " echo '#include \"fe_private.h\"' > $@"
- " echo '#include \"ace/OS_NS_string.h\"' >> $@"
- " echo '' >> $@"
- " $(ACE_ROOT)/bin/ace_gperf -M -J -c -C -D -E -T -f 0 -a -o -t -p -K keyword_ -L C++ -Z TAO_IDL_CPP_Keyword_Table -N lookup -k1,2,$$ $^ | \\"
- " sed -e 's/,}/,0}/g' \\"
- " -e 's/\\*str == \\*s && !ACE_OS::strncmp/len == static_cast<unsigned int> (ACE_OS::strlen (s)) \\&\\& *str == *s \\&\\& !ACE_OS::strncmp/g' \\"
- " >> $@"
+ " cp fe/lookup_starter.txt $@"
+ " $(GPERF) -M -J -c -C -D -E -T -f 0 -a -o -t -p -K keyword_ -L C++ -Z TAO_IDL_CPP_Keyword_Table -N lookup -k1,2,$$ $^ | sed -f fe/post_gperf.sed >> $@"
fe/idl.yy.cpp: fe/idl.ll
" @echo 'WARNING: Potentially outdated $@'"
@@ -24,17 +21,7 @@ project(TAO_IDL_GEN) {
lex.yy:
"ifeq ($(notdir $(LEX)), flex)"
" $(LEX) -t -P tao_yy -ofe/idl.yy.cpp fe/idl.ll | \\"
- " sed -e 's/ NULL/ 0/g' \\"
- " -e 's/ / /g' \\"
- " -e 's/ *$$\/\/g' \\"
- " -e 's/YY_BREAK break;/YY_BREAK ACE_NOTREACHED (break;)/g' \\"
- " -e 's@#include <errno\.h>@#include \"ace/OS_NS_errno.h\"@' \\"
- " -e 's@#include <stdio\.h>@#include \"ace/OS_NS_stdio.h\"@' \\"
- " -e 's@#include <unistd\.h>@#include \"ace/os_include/os_ctype.h\"@' \\"
- " -e 's@c = getc@c = ACE_OS::getc@' \\"
- " -e 's@199901L@199901L || defined (__HP_aCC)@' \\"
- " -e '/#include <[seu]/d' \\"
- " > fe/idl.yy.cpp"
+ " sed -f fe/post_flex.sed > fe/idl.yy.cpp"
"else"
" @echo 'ERROR: You must use flex 2.6.4 or higher to process this file'"
" @/bin/false"
@@ -46,10 +33,13 @@ project(TAO_IDL_GEN) {
" @echo ' generate it using:'"
" @echo ' make y.tab'"
+ debug_bison: BISON_FLAGS += --report all
+ debug_bison: y.tab
+
.PHONY: y.tab
y.tab: fe/idl.ypp
"ifeq ($(notdir $(YACC)), bison)"
- " $(YACC) -d -p tao_yy -b fe/idl fe/idl.ypp"
+ " $(YACC) $(BISON_FLAGS) -p tao_yy -b fe/idl fe/idl.ypp"
"else"
" @echo 'ERROR: You must use bison 3 or higher to process this file'"
" @/bin/false"
diff --git a/TAO/TAO_IDL/util/idl_version.cpp b/TAO/TAO_IDL/util/idl_version.cpp
new file mode 100644
index 00000000000..2ab8a542b24
--- /dev/null
+++ b/TAO/TAO_IDL/util/idl_version.cpp
@@ -0,0 +1,95 @@
+/**
+ * Source File for Tracking IDL Versions
+ *
+ * Header File Counterpart is include/idl_version.h
+ */
+
+#include "ace/OS_NS_string.h"
+#include "idl_version.h"
+
+static const char * idlVersionNames[IDL_VERSION_COUNT] = {
+ "Invalid",
+ "3",
+ "4"
+};
+
+IdlVersion::IdlVersion () : version_(DEFAULT_DEFAULT_IDL_VERSION)
+{
+}
+
+IdlVersion::IdlVersion (SpecificIdlVersion version)
+{
+ this->version (version);
+}
+
+SpecificIdlVersion IdlVersion::version () const
+{
+ return version_;
+}
+
+void IdlVersion::version (SpecificIdlVersion version)
+{
+ version_ = version < IDL_VERSION_COUNT ? version : IDL_VERSION_INVALID;
+}
+
+bool IdlVersion::is_valid () const
+{
+ return version_ != IDL_VERSION_INVALID;
+}
+
+const char * IdlVersion::to_string () const
+{
+ return idlVersionNames[version_];
+}
+
+void IdlVersion::from_string (const char * version)
+{
+ if (version)
+ {
+ for (int i = 0; i < IDL_VERSION_COUNT; i++)
+ {
+ if (!ACE_OS::strcmp (version, idlVersionNames[i]))
+ {
+ version_ = static_cast<SpecificIdlVersion> (i);
+ return;
+ }
+ }
+ }
+ version_ = IDL_VERSION_INVALID;
+}
+
+IdlVersion::operator SpecificIdlVersion () const
+{
+ return version_;
+}
+
+bool IdlVersion::operator== (SpecificIdlVersion other) const
+{
+ return version_ == other;
+}
+
+bool IdlVersion::operator!= (SpecificIdlVersion other) const
+{
+ return version_ != other;
+}
+
+bool IdlVersion::operator> (SpecificIdlVersion other) const
+{
+ return version_ > other;
+}
+
+bool IdlVersion::operator>= (SpecificIdlVersion other) const
+{
+ return version_ >= other;
+}
+
+bool IdlVersion::operator< (SpecificIdlVersion other) const
+{
+ return version_ < other;
+}
+
+bool IdlVersion::operator<= (SpecificIdlVersion other) const
+{
+ return version_ <= other;
+}
+
diff --git a/TAO/TAO_IDL/util/utl_annotations.cpp b/TAO/TAO_IDL/util/utl_annotations.cpp
new file mode 100644
index 00000000000..36dfa07c704
--- /dev/null
+++ b/TAO/TAO_IDL/util/utl_annotations.cpp
@@ -0,0 +1,46 @@
+#include "utl_annotations.h"
+
+AST_Annotation_Appl *UTL_find_annotation (
+ AST_Annotation_Appls &annotations, AST_Annotation_Decl *annotation)
+{
+ AST_Annotation_Appl *result = 0;
+ if (annotation)
+ {
+ for (AST_Annotation_Appls::iterator i = annotations.begin ();
+ i != annotations.end (); ++i)
+ {
+ AST_Annotation_Appl *appl = *i;
+ if (appl && appl->annotation_decl () == annotation)
+ {
+ result = appl;
+ }
+ }
+ }
+ return result;
+}
+
+AST_Annotation_Appl *UTL_find_annotation (
+ AST_Annotation_Appls *annotations, AST_Annotation_Decl *annotation)
+{
+ return annotations ? UTL_find_annotation (*annotations, annotation) : 0;
+}
+
+AST_Annotation_Appl *UTL_find_annotation (
+ AST_Annotation_Appls &annotations, const char *annotation)
+{
+ AST_Annotation_Appl *result = 0;
+ if (annotation)
+ {
+ return UTL_find_annotation (
+ annotations,
+ AST_Annotation_Decl::narrow_from_decl (
+ idl_global->scopes ().bottom ()->lookup_by_name (annotation)));
+ }
+ return result;
+}
+
+AST_Annotation_Appl *UTL_find_annotation (
+ AST_Annotation_Appls *annotations, const char *annotation)
+{
+ return annotations ? UTL_find_annotation (*annotations, annotation) : 0;
+}
diff --git a/TAO/TAO_IDL/util/utl_err.cpp b/TAO/TAO_IDL/util/utl_err.cpp
index 1aab6296823..188232d0d67 100644
--- a/TAO/TAO_IDL/util/utl_err.cpp
+++ b/TAO/TAO_IDL/util/utl_err.cpp
@@ -78,6 +78,9 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
#include "ast_fixed.h"
#include "ast_union.h"
#include "ast_union_label.h"
+#include "ast_annotation_decl.h"
+#include "ast_annotation_member.h"
+#include "ast_annotation_appl.h"
// FUZZ: disable check_for_streams_include
#include "ace/streams.h"
@@ -235,75 +238,83 @@ error_string (UTL_Error::ErrorCode c)
return "ref to template module scope must be via alias";
case UTL_Error::EIDL_FIXED_UNSUPPORTED:
return "fixed data types are not supported";
+ case UTL_Error::EIDL_IDL_VERSION_ERROR:
+ return "Invalid use of this version of IDL";
+ case UTL_Error::EIDL_ANNOTATION_PARAM_ERROR:
+ return "Error in annotation parameter(s): ";
+ case UTL_Error::EIDL_UNSUPPORTED:
+ case UTL_Error::EIDL_MISC:
+ return ""; // Supply Case by Case Message
+
+ default:
+ return "<This error code is missing a string in error_string "
+ "in utl_err.cpp!>";
}
+}
- return 0;
+/**
+ * Get filename from node or from idl_global if node is null.
+ */
+static const char *
+get_filename (AST_Decl *node = 0)
+{
+ return node ? node->file_name ().c_str ()
+ : idl_global->filename ()->get_string ();
+}
+
+/**
+ * Get line number from node or from idl_global if node is null.
+ */
+static long
+get_lineno (AST_Decl *node = 0)
+{
+ return node ? node->line () : idl_global->lineno ();
}
-// Print out an error message header on cerr
+/**
+ * Common Error Message Header
+ */
+///{
static void
-idl_error_header (UTL_Error::ErrorCode c,
- long lineno,
- ACE_CString s)
+idl_error_header (UTL_Error::ErrorCode c, long lineno, ACE_CString s)
{
+ idl_global->err ()->last_error = c;
ACE_ERROR ((LM_ERROR,
"Error - %C: \"%C\", line %d: %C",
idl_global->prog_name (),
s.c_str (),
lineno == -1 ? idl_global->lineno () : lineno,
error_string (c)));
+ idl_global->set_err_count (idl_global->err_count () + 1);
}
+static void
+idl_error_header (UTL_Error::ErrorCode c, AST_Decl *node = 0)
+{
+ idl_error_header (c, get_lineno (node), get_filename (node));
+}
+///}
-// Convert the type of an AST_Expression to a char *.
-static const char *
-exprtype_to_string (AST_Expression::ExprType t)
-{
- switch (t) {
- case AST_Expression::EV_short:
- return "short";
- case AST_Expression::EV_ushort:
- return "unsigned short";
- case AST_Expression::EV_long:
- return "long";
- case AST_Expression::EV_ulong:
- return "unsigned long";
- case AST_Expression::EV_float:
- return "float";
- case AST_Expression::EV_double:
- return "double";
- case AST_Expression::EV_char:
- return "char";
- case AST_Expression::EV_octet:
- return "octet";
- case AST_Expression::EV_bool:
- return "boolean";
- case AST_Expression::EV_string:
- return "string";
- case AST_Expression::EV_enum:
- return "enum";
- case AST_Expression::EV_void:
- return "void";
- case AST_Expression::EV_none:
- return "none";
- case AST_Expression::EV_wchar:
- return "wchar";
- case AST_Expression::EV_longlong:
- return "longlong";
- case AST_Expression::EV_ulonglong:
- return "ulonglong";
- case AST_Expression::EV_longdouble:
- return "longdouble";
- case AST_Expression::EV_wstring:
- return "wstring";
- case AST_Expression::EV_any:
- return "any";
- case AST_Expression::EV_object:
- return "object";
- case AST_Expression::EV_fixed:
- return "fixed";
- }
- return 0;
+/**
+ * Common Warning Message Header
+ */
+///{
+static void
+idl_warning_header (UTL_Error::ErrorCode c, long lineno, ACE_CString s)
+{
+ idl_global->err ()->last_warning = c;
+ ACE_ERROR ((LM_WARNING,
+ "Warning - %C: \"%C\", line %d: %C",
+ idl_global->prog_name (),
+ s.c_str (),
+ lineno == -1 ? idl_global->lineno () : lineno,
+ error_string (c)));
+}
+static void
+idl_warning_header (UTL_Error::ErrorCode c, AST_Decl *node = 0)
+{
+ idl_warning_header (c, get_lineno (node), get_filename (node));
}
+///}
// Convert a parse state into a possible error message
static const char *
@@ -314,7 +325,7 @@ parse_state_to_error_message (IDL_GlobalData::ParseState ps)
case IDL_GlobalData::PS_NoState:
return "Statement cannot be parsed";
case IDL_GlobalData::PS_TypeDeclSeen:
- return "Malformed typedef declaration";
+ return "Malformed type declaration";
case IDL_GlobalData::PS_TypeIdDeclSeen:
return "Malformed type id declaration";
case IDL_GlobalData::PS_TypePrefixDeclSeen:
@@ -699,6 +710,12 @@ parse_state_to_error_message (IDL_GlobalData::ParseState ps)
}
}
+UTL_Error::UTL_Error ()
+ : last_error (EIDL_OK),
+ last_warning (EIDL_OK)
+{
+}
+
// Public methods.
// Report error messages with various numbers of arguments.
@@ -722,26 +739,20 @@ UTL_Error::syntax_error (IDL_GlobalData::ParseState ps)
void
UTL_Error::error0 (UTL_Error::ErrorCode c)
{
- idl_error_header (c,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (c);
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
void
UTL_Error::error1 (UTL_Error::ErrorCode c,
AST_Decl *d)
{
- idl_error_header (c,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (c);
ACE_ERROR ((LM_ERROR, " - "));
d->name ()->dump (*ACE_DEFAULT_LOG_STREAM);;
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
void
@@ -749,16 +760,13 @@ UTL_Error::error2 (UTL_Error::ErrorCode c,
AST_Decl *d1,
AST_Decl *d2)
{
- idl_error_header (c,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (c);
d1->name ()->dump (*ACE_DEFAULT_LOG_STREAM);;
ACE_ERROR ((LM_ERROR,
", "));
d2->name ()->dump (*ACE_DEFAULT_LOG_STREAM);;
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
void
@@ -767,9 +775,7 @@ UTL_Error::error3 (UTL_Error::ErrorCode c,
AST_Decl *d2,
AST_Decl *d3)
{
- idl_error_header (c,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (c);
d1->name ()->dump (*ACE_DEFAULT_LOG_STREAM);;
ACE_ERROR ((LM_ERROR,
", "));
@@ -779,7 +785,6 @@ UTL_Error::error3 (UTL_Error::ErrorCode c,
d3->name ()->dump (*ACE_DEFAULT_LOG_STREAM);;
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
void
@@ -787,10 +792,8 @@ UTL_Error::warning0 (UTL_Error::ErrorCode c)
{
if (! (idl_global->compile_flags () & IDL_CF_NOWARNINGS))
{
- idl_error_header (c,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
- ACE_ERROR ((LM_ERROR,
+ idl_warning_header (c);
+ ACE_ERROR ((LM_WARNING,
"\n"));
}
}
@@ -801,11 +804,9 @@ UTL_Error::warning1 (UTL_Error::ErrorCode c,
{
if (! (idl_global->compile_flags () & IDL_CF_NOWARNINGS))
{
- idl_error_header (c,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_warning_header (c);
d->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
- ACE_ERROR ((LM_ERROR,
+ ACE_ERROR ((LM_WARNING,
"\n"));
}
}
@@ -817,14 +818,12 @@ UTL_Error::warning2 (UTL_Error::ErrorCode c,
{
if (! (idl_global->compile_flags () & IDL_CF_NOWARNINGS))
{
- idl_error_header (c,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_warning_header (c);
d1->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
- ACE_ERROR ((LM_ERROR,
+ ACE_ERROR ((LM_WARNING,
", "));
d2->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
- ACE_ERROR ((LM_ERROR,
+ ACE_ERROR ((LM_WARNING,
"\n"));
}
}
@@ -837,17 +836,15 @@ UTL_Error::warning3 (UTL_Error::ErrorCode c,
{
if (! (idl_global->compile_flags () & IDL_CF_NOWARNINGS))
{
- idl_error_header (c,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_warning_header (c);
d1->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
- ACE_ERROR ((LM_ERROR,
+ ACE_ERROR ((LM_WARNING,
", "));
d2->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
- ACE_ERROR ((LM_ERROR,
+ ACE_ERROR ((LM_WARNING,
", "));
d3->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
- ACE_ERROR ((LM_ERROR,
+ ACE_ERROR ((LM_WARNING,
"\n"));
}
}
@@ -863,58 +860,57 @@ UTL_Error::coercion_error (AST_Expression *v,
v->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
" to %C\n",
- exprtype_to_string (t)));
- idl_global->set_err_count (idl_global->err_count () + 1);
+ AST_Expression::exprtype_to_string (t)));
}
// Report a failed name lookup attempt.
void
UTL_Error::lookup_error (UTL_ScopedName *n)
{
- idl_error_header (EIDL_LOOKUP_ERROR,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ if (idl_global->ignore_lookup_errors_) return;
+ idl_error_header (EIDL_LOOKUP_ERROR);
n->dump (*ACE_DEFAULT_LOG_STREAM);;
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
+}
+
+void
+UTL_Error::lookup_warning (UTL_ScopedName *n)
+{
+ if (idl_global->print_warnings ())
+ {
+ idl_warning_header (EIDL_LOOKUP_ERROR);
+ n->dump (*ACE_DEFAULT_LOG_STREAM);;
+ ACE_ERROR ((LM_ERROR, "\n"));
+ }
}
// Report an illegal version number assignment.
void
UTL_Error::version_number_error (char *n)
{
- idl_error_header (EIDL_ILLEGAL_VERSION,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_ILLEGAL_VERSION);
ACE_ERROR ((LM_ERROR,
"%C\n",
n));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
void
UTL_Error::version_syntax_error (const char *msg)
{
- idl_error_header (EIDL_ILLEGAL_VERSION,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_ILLEGAL_VERSION);
ACE_ERROR ((LM_ERROR,
"%C\n",
msg));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
// Report an attempt to set the version a second time.
void
UTL_Error::version_reset_error (void)
{
- idl_error_header (EIDL_VERSION_RESET,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_VERSION_RESET);
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
// Report a reset of the id a second time to a different string.
@@ -922,14 +918,11 @@ void
UTL_Error::id_reset_error (const char *o,
const char *n)
{
- idl_error_header (EIDL_ID_RESET,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_ID_RESET);
ACE_ERROR ((LM_ERROR,
"%s, %s\n",
o,
n));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
// Report an attempt to inherit from an interface which was only
@@ -938,12 +931,7 @@ void
UTL_Error::inheritance_fwd_error (UTL_ScopedName *n,
AST_Interface *f)
{
- if (f)
- {
- idl_error_header (EIDL_INHERIT_FWD_ERROR,
- f->line (),
- f->file_name ());
- }
+ idl_error_header (EIDL_INHERIT_FWD_ERROR, f);
ACE_ERROR ((LM_ERROR,
"interface "));
@@ -957,7 +945,6 @@ UTL_Error::inheritance_fwd_error (UTL_ScopedName *n,
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
// Report an attempt to inherit from something other than an interface.
@@ -965,16 +952,13 @@ void
UTL_Error::inheritance_error (UTL_ScopedName *n,
AST_Decl *d)
{
- idl_error_header (EIDL_CANT_INHERIT,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_CANT_INHERIT);
n->dump (*ACE_DEFAULT_LOG_STREAM);;
ACE_ERROR ((LM_ERROR,
" attempts to inherit from "));
d->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
// Report an attempt to support an interface which was only
@@ -983,9 +967,7 @@ void
UTL_Error::supports_fwd_error (UTL_ScopedName *n,
AST_Interface *f)
{
- idl_error_header (EIDL_SUPPORTS_FWD_ERROR,
- f->line (),
- f->file_name ());
+ idl_error_header (EIDL_SUPPORTS_FWD_ERROR, f);
ACE_ERROR ((LM_ERROR,
"interface "));
n->dump (*ACE_DEFAULT_LOG_STREAM);
@@ -994,7 +976,6 @@ UTL_Error::supports_fwd_error (UTL_ScopedName *n,
f->local_name ()->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
// Report an attempt to support something other than an interface.
@@ -1002,16 +983,13 @@ void
UTL_Error::supports_error (UTL_ScopedName *n,
AST_Decl *d)
{
- idl_error_header (EIDL_CANT_SUPPORT,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_CANT_SUPPORT);
n->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
" attempts to support "));
d->name ()->dump (*ACE_DEFAULT_LOG_STREAM);;
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
// Report illegal inheritance from non-abstract valuetype or interface.
@@ -1019,9 +997,7 @@ void
UTL_Error::abstract_inheritance_error (UTL_ScopedName *v,
UTL_ScopedName *i)
{
- idl_error_header (EIDL_CANT_INHERIT,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_CANT_INHERIT);
ACE_ERROR ((LM_ERROR,
" abstract valuetype "));
v->dump (*ACE_DEFAULT_LOG_STREAM);
@@ -1030,7 +1006,6 @@ UTL_Error::abstract_inheritance_error (UTL_ScopedName *v,
i->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
// Report illegal support of non-abstract interface.
@@ -1038,9 +1013,7 @@ void
UTL_Error::abstract_support_error (UTL_ScopedName *v,
UTL_ScopedName *i)
{
- idl_error_header (EIDL_CANT_SUPPORT,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_CANT_SUPPORT);
ACE_ERROR ((LM_ERROR,
" valuetype "));
v->dump (*ACE_DEFAULT_LOG_STREAM);
@@ -1049,7 +1022,6 @@ UTL_Error::abstract_support_error (UTL_ScopedName *v,
i->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
// Report illegal component or home support of local interface.
@@ -1057,9 +1029,7 @@ void
UTL_Error::unconstrained_interface_expected (UTL_ScopedName *c,
UTL_ScopedName *i)
{
- idl_error_header (EIDL_CANT_SUPPORT,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_CANT_SUPPORT);
ACE_ERROR ((LM_ERROR,
" component or home "));
c->dump (*ACE_DEFAULT_LOG_STREAM);
@@ -1068,16 +1038,13 @@ UTL_Error::unconstrained_interface_expected (UTL_ScopedName *c,
i->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
void
UTL_Error::concrete_supported_inheritance_error (UTL_ScopedName *v,
UTL_ScopedName *i)
{
- idl_error_header (EIDL_CANT_SUPPORT,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_CANT_SUPPORT);
ACE_ERROR ((LM_ERROR,
" valuetype "));
v->dump (*ACE_DEFAULT_LOG_STREAM);
@@ -1088,7 +1055,6 @@ UTL_Error::concrete_supported_inheritance_error (UTL_ScopedName *v,
i->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
// Report an error while evaluating an expression.
@@ -1101,29 +1067,23 @@ UTL_Error::eval_error (AST_Expression *v)
v->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
// Report an error while evaluating an expression.
void
UTL_Error::incompatible_type_error (AST_Expression *v)
{
- idl_error_header (EIDL_INCOMPATIBLE_TYPE,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_INCOMPATIBLE_TYPE);
v->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
void
UTL_Error::incompatible_disc_error (AST_Decl *d,
AST_Expression *e)
{
- idl_error_header (EIDL_LABEL_TYPE,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_LABEL_TYPE);
d->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR, " does not contain "));
UTL_ScopedName *sn = e->n ();
@@ -1131,7 +1091,6 @@ UTL_Error::incompatible_disc_error (AST_Decl *d,
? sn->dump (*ACE_DEFAULT_LOG_STREAM)
: e->dump (*ACE_DEFAULT_LOG_STREAM));
ACE_ERROR ((LM_ERROR, "\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
// Report a situation where a constant was expected but we
@@ -1141,16 +1100,13 @@ void
UTL_Error::constant_expected (UTL_ScopedName *n,
AST_Decl *d)
{
- idl_error_header (EIDL_CONSTANT_EXPECTED,
- d->line (),
- d->file_name ());
+ idl_error_header (EIDL_CONSTANT_EXPECTED, d);
n->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
" bound to "));
d->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
// Report a situation where an interface was expected but we got
@@ -1159,25 +1115,19 @@ UTL_Error::constant_expected (UTL_ScopedName *n,
void
UTL_Error::interface_expected (AST_Decl *d)
{
- idl_error_header (EIDL_INTERFACE_EXPECTED,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_INTERFACE_EXPECTED);
d->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
void
UTL_Error::template_module_expected (AST_Decl *d)
{
- idl_error_header (EIDL_TMPL_MODULE_EXPECTED,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_TMPL_MODULE_EXPECTED);
d->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
// Report a situation where an value type was expected but we got
@@ -1186,13 +1136,10 @@ UTL_Error::template_module_expected (AST_Decl *d)
void
UTL_Error::valuetype_expected (AST_Decl *d)
{
- idl_error_header (EIDL_VALUETYPE_EXPECTED,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_VALUETYPE_EXPECTED);
d->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
// Report a situation where a concrete value type was expected but we got
@@ -1201,13 +1148,10 @@ UTL_Error::valuetype_expected (AST_Decl *d)
void
UTL_Error::concrete_valuetype_expected (AST_Decl *d)
{
- idl_error_header (EIDL_CONCRETE_VT_EXPECTED,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_CONCRETE_VT_EXPECTED);
d->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
// Report a situation where an abstract type was expected but we got
@@ -1217,13 +1161,10 @@ UTL_Error::concrete_valuetype_expected (AST_Decl *d)
void
UTL_Error::abstract_expected (AST_Decl *d)
{
- idl_error_header (EIDL_ABSTRACT_EXPECTED,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_ABSTRACT_EXPECTED);
d->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
// Report a situation where an abstract type was expected but we got
@@ -1233,13 +1174,10 @@ UTL_Error::abstract_expected (AST_Decl *d)
void
UTL_Error::eventtype_expected (AST_Decl *d)
{
- idl_error_header (EIDL_EVENTTYPE_EXPECTED,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_EVENTTYPE_EXPECTED);
d->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
// Report a situation where a valuetype used as a primary key for a
@@ -1248,15 +1186,12 @@ UTL_Error::eventtype_expected (AST_Decl *d)
void
UTL_Error::primary_key_error (AST_Decl *d)
{
- idl_error_header (EIDL_PRIMARY_KEY_ERROR,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_PRIMARY_KEY_ERROR);
ACE_ERROR ((LM_ERROR,
"primary key "));
d->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
"does not have Components::primaryKeyBase as an ancestor\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
// Report a situation where an enumerator was expected but we
@@ -1267,16 +1202,13 @@ void
UTL_Error::enum_val_expected (AST_Union *u,
AST_UnionLabel *l)
{
- idl_error_header (EIDL_ENUM_VAL_EXPECTED,
- u->line (),
- u->file_name ());
+ idl_error_header (EIDL_ENUM_VAL_EXPECTED, u);
ACE_ERROR ((LM_ERROR,
" union %C, ",
u->local_name ()->get_string ()));
l->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
// Report a situation where an enumerator was received but we
@@ -1289,9 +1221,7 @@ UTL_Error::enum_val_lookup_failure (AST_Union *u,
AST_Enum *e,
UTL_ScopedName *n)
{
- idl_error_header (EIDL_ENUM_VAL_NOT_FOUND,
- u->line (),
- u->file_name ());
+ idl_error_header (EIDL_ENUM_VAL_NOT_FOUND, u);
ACE_ERROR ((LM_ERROR,
" union %C, enum %C, enumerator ",
u->local_name ()->get_string (),
@@ -1299,47 +1229,38 @@ UTL_Error::enum_val_lookup_failure (AST_Union *u,
n->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
// Report clash between declared and referenced indentifiers.
void
UTL_Error::redef_error (const char *b, const char *n)
{
- idl_error_header (EIDL_REDEF,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_REDEF);
ACE_ERROR ((LM_ERROR,
"\"%s\" and \"%s\"\n",
b,
n));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
// Report two or more spellings for an identifier.
void
UTL_Error::name_case_error (char *b, char *n)
{
- idl_error_header (EIDL_NAME_CASE_ERROR,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_NAME_CASE_ERROR);
ACE_ERROR ((LM_ERROR,
"\"%C\" and \"%C\"\n",
b,
n));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
void
UTL_Error::name_case_warning (char *b,
char *n)
{
- if (! (idl_global->compile_flags () & IDL_CF_NOWARNINGS))
+ if (idl_global->print_warnings ())
{
- idl_error_header (EIDL_NAME_CASE_WARNING,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
- ACE_ERROR ((LM_ERROR,
+ idl_warning_header (EIDL_NAME_CASE_WARNING);
+ ACE_ERROR ((LM_WARNING,
"\"%C\" and \"%C\"\n",
b,
n));
@@ -1349,23 +1270,18 @@ UTL_Error::name_case_warning (char *b,
void
UTL_Error::idl_keyword_error (char *n)
{
- idl_error_header (EIDL_KEYWORD_ERROR,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_KEYWORD_ERROR);
ACE_ERROR ((LM_ERROR,
"\"%C\"\n",
n));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
void
UTL_Error::idl_keyword_warning (char *n)
{
- if (! (idl_global->compile_flags () & IDL_CF_NOWARNINGS))
+ if (idl_global->print_warnings ())
{
- idl_error_header (EIDL_KEYWORD_WARNING,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_warning_header (EIDL_KEYWORD_WARNING);
ACE_ERROR ((LM_ERROR,
"\"%C\"\n",
n));
@@ -1378,9 +1294,7 @@ UTL_Error::ambiguous (UTL_Scope *s,
AST_Decl *l,
AST_Decl *d)
{
- idl_error_header (EIDL_AMBIGUOUS,
- d->line (),
- d->file_name ());
+ idl_error_header (EIDL_AMBIGUOUS, d);
ACE_ERROR ((LM_ERROR,
" scope: %C, collision: ",
(ScopeAsDecl (s))->local_name ()->get_string ()));
@@ -1390,20 +1304,16 @@ UTL_Error::ambiguous (UTL_Scope *s,
l->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
// Report a forward declared struct or union which was never defined.
void
UTL_Error::fwd_decl_not_defined (AST_Type *d)
{
- idl_error_header (EIDL_DECL_NOT_DEFINED,
- d->line (),
- d->file_name ());
+ idl_error_header (EIDL_DECL_NOT_DEFINED, d);
d->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
// Report lookup in undefined forward declared but undefined interface.
@@ -1411,9 +1321,7 @@ void
UTL_Error::fwd_decl_lookup (AST_Interface *d,
UTL_ScopedName *n)
{
- idl_error_header (EIDL_FWD_DECL_LOOKUP,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_FWD_DECL_LOOKUP);
ACE_ERROR ((LM_ERROR,
"trying to look up "));
n->dump (*ACE_DEFAULT_LOG_STREAM);;
@@ -1422,7 +1330,6 @@ UTL_Error::fwd_decl_lookup (AST_Interface *d,
d->local_name ()->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
// Report a redefinition inside its own scope.
@@ -1430,25 +1337,20 @@ void
UTL_Error::redefinition_in_scope (AST_Decl *d,
AST_Decl *s)
{
- idl_error_header (EIDL_REDEF_SCOPE,
- d->line (),
- d->file_name ());
+ idl_error_header (EIDL_REDEF_SCOPE, d);
d->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
", "));
s->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
// Report not a type error.
void
UTL_Error::not_a_type (AST_Decl *d)
{
- idl_error_header (EIDL_NOT_A_TYPE,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_NOT_A_TYPE);
if (d == 0 || d->name () == 0)
{
ACE_ERROR ((LM_ERROR,
@@ -1461,15 +1363,13 @@ UTL_Error::not_a_type (AST_Decl *d)
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
void
UTL_Error::fixed_unsupported (AST_Fixed *d)
{
- idl_error_header (EIDL_FIXED_UNSUPPORTED, d->line (), d->file_name ());
+ idl_error_header (EIDL_FIXED_UNSUPPORTED, d);
ACE_ERROR ((LM_ERROR, "\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
void
@@ -1481,18 +1381,14 @@ UTL_Error::back_end (long lineno,
s->get_string ());
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
void
UTL_Error::illegal_infix (void)
{
- idl_error_header (EIDL_ILLEGAL_INFIX,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_ILLEGAL_INFIX);
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
void
@@ -1500,9 +1396,7 @@ UTL_Error::local_remote_mismatch (AST_Decl *l,
UTL_Scope *s)
{
AST_Decl *r = ScopeAsDecl (s);
- idl_error_header (EIDL_LOCAL_REMOTE_MISMATCH,
- r->line (),
- r->file_name ());
+ idl_error_header (EIDL_LOCAL_REMOTE_MISMATCH, r);
ACE_ERROR ((LM_ERROR,
"local type "));
l->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
@@ -1511,62 +1405,46 @@ UTL_Error::local_remote_mismatch (AST_Decl *l,
r->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
void
UTL_Error::ignore_idl3_error (AST_Decl *d)
{
- idl_error_header (EIDL_IGNORE_IDL3_ERROR,
- d->line (),
- d->file_name ());
+ idl_error_header (EIDL_IGNORE_IDL3_ERROR, d);
d->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR,
"\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
void
UTL_Error::illegal_primary_key (AST_Decl *d)
{
- idl_error_header (EIDL_ILLEGAL_PRIMARY_KEY,
- d->line (),
- d->file_name ());
+ idl_error_header (EIDL_ILLEGAL_PRIMARY_KEY, d);
d->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR, "\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
void
UTL_Error::duplicate_param_id (UTL_ScopedName *n)
{
- idl_error_header (EIDL_DUPLICATE_T_PARAM,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_DUPLICATE_T_PARAM);
ACE_ERROR ((LM_ERROR, " - "));
n->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR, "\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
void
UTL_Error::mismatched_template_param (const char *name)
{
- idl_error_header (EIDL_MISMATCHED_T_PARAM,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_MISMATCHED_T_PARAM);
ACE_ERROR ((LM_ERROR, " - %s\n", name));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
void
UTL_Error::mismatch_seq_of_param (const char *param_id)
{
- idl_error_header (EIDL_MISMATCHED_SEQ_PARAM,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
+ idl_error_header (EIDL_MISMATCHED_SEQ_PARAM);
ACE_ERROR ((LM_ERROR, " - %s\n", param_id));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
void
@@ -1577,13 +1455,10 @@ UTL_Error::scope_masking_error (AST_Decl *masked,
const char *masked_file = masked->file_name ().c_str ();
const char *masking_file = masking->file_name ().c_str ();
+ idl_error_header (EIDL_MISC);
ACE_ERROR ((LM_ERROR,
- ACE_TEXT ("Error - %C: \"%C\", line %d: ")
ACE_TEXT ("Did you mean \"::%C\"\n")
ACE_TEXT (" declared at "),
- idl_global->prog_name (),
- this_file,
- idl_global->lineno (),
masked->full_name () ));
const bool same_file =
@@ -1634,38 +1509,138 @@ UTL_Error::anonymous_type_diagnostic (void)
return;
}
- bool aw = idl_global->anon_warning ();
- bool nw = (idl_global->compile_flags () & IDL_CF_NOWARNINGS);
-
- if (aw && nw)
+ if (idl_global->anon_warning ())
{
- return;
+ if (idl_global->print_warnings ())
+ {
+ idl_warning_header (EIDL_ANONYMOUS_WARNING);
+ ACE_ERROR ((LM_WARNING, "\n"));
+ }
}
-
- ErrorCode ec =
- (aw ? EIDL_ANONYMOUS_WARNING : EIDL_ANONYMOUS_ERROR);
-
- idl_error_header (ec,
- idl_global->lineno (),
- idl_global->filename ()->get_string ());
-
- ACE_ERROR ((LM_ERROR, "\n"));
-
- if (ec == EIDL_ANONYMOUS_ERROR)
+ else
{
- idl_global->set_err_count (idl_global->err_count () + 1);
+ idl_error_header (EIDL_ANONYMOUS_ERROR);
+ ACE_ERROR ((LM_ERROR, "\n"));
}
}
void
UTL_Error::template_scope_ref_not_aliased (AST_Decl *d)
{
- idl_error_header (EIDL_TEMPLATE_NOT_ALIASED,
- idl_global->lineno (),
- d->file_name ());
+ idl_error_header (EIDL_TEMPLATE_NOT_ALIASED, d);
ACE_ERROR ((LM_ERROR, " - "));
d->name ()->dump (*ACE_DEFAULT_LOG_STREAM);
ACE_ERROR ((LM_ERROR, "\n"));
- idl_global->set_err_count (idl_global->err_count () + 1);
}
+void
+UTL_Error::idl_version_error (const char *reason)
+{
+ idl_error_header (EIDL_IDL_VERSION_ERROR);
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("\n%C\nCurrent IDL version is %C, use --idl-version VERSION to ")
+ ACE_TEXT ("set the IDL version to use.\n"),
+ reason, idl_global->idl_version_.to_string ()
+ ));
+}
+
+void
+UTL_Error::unsupported_error (const char *reason)
+{
+ idl_error_header (EIDL_UNSUPPORTED);
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("%C\n"), reason));
+}
+
+void
+UTL_Error::unsupported_warning (const char *reason)
+{
+ if (idl_global->print_warnings ())
+ {
+ idl_warning_header (EIDL_UNSUPPORTED);
+ ACE_ERROR ((LM_WARNING, ACE_TEXT ("%C\n"), reason));
+ }
+}
+
+void
+UTL_Error::misc_error (const char *reason, AST_Decl *node)
+{
+ idl_error_header (EIDL_MISC, node);
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("%C\n"), reason));
+}
+
+void
+UTL_Error::misc_warning (const char *reason, AST_Decl *node)
+{
+ if (idl_global->print_warnings ())
+ {
+ idl_warning_header (EIDL_MISC, node);
+ ACE_ERROR ((LM_WARNING, ACE_TEXT ("%C\n"), reason));
+ }
+}
+
+void
+UTL_Error::invalid_annotation_param_error (
+ AST_Annotation_Appl *appl, AST_Annotation_Decl *decl,
+ Identifier *invalid_id)
+{
+ bool is_builtin = decl->builtin ();
+ idl_error_header (EIDL_ANNOTATION_PARAM_ERROR,
+ static_cast<AST_Decl*>(appl));
+ invalid_id->dump (*ACE_DEFAULT_LOG_STREAM);;
+ ACE_ERROR ((LM_ERROR, ACE_TEXT (" is not a member of %Cannotation "),
+ is_builtin ? "builtin " : ""));
+ decl->name ()->dump (*ACE_DEFAULT_LOG_STREAM);;
+ if (!is_builtin)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT (" declared in \"%C\" on line %d"),
+ get_filename (decl), get_lineno (decl)));
+ }
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("\n")));
+}
+
+void
+UTL_Error::invalid_annotation_param_type (
+ AST_Annotation_Appl *appl, AST_Annotation_Member *member,
+ AST_Expression *offending_value)
+{
+ bool is_builtin = member->builtin ();
+ idl_error_header (EIDL_ANNOTATION_PARAM_ERROR,
+ static_cast<AST_Decl*>(appl));
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("%Cnnotation member \""),
+ is_builtin ? "Builtin a" : "A"));
+ member->dump (*ACE_DEFAULT_LOG_STREAM);
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("\"")));
+ if (!is_builtin)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT (" declared in \"%C\" on line %d"),
+ get_filename (member), get_lineno (member)));
+ }
+ ACE_ERROR ((LM_ERROR, ACE_TEXT (" can not be set to ")));
+ offending_value->dump (*ACE_DEFAULT_LOG_STREAM);;
+ ACE_ERROR ((LM_ERROR, ACE_TEXT (" because the types are incompatible!\n")));
+}
+
+void
+UTL_Error::annotation_param_missing_error (
+ AST_Annotation_Appl *appl, AST_Annotation_Member *member)
+{
+ bool is_builtin = member->builtin ();
+ idl_error_header (EIDL_ANNOTATION_PARAM_ERROR,
+ static_cast<AST_Decl*>(appl));
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("%Cnnotation member: \""),
+ is_builtin ? "Builtin a" : "A"));
+ member->dump (*ACE_DEFAULT_LOG_STREAM);
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("\"")));
+ if (!is_builtin)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT (" declared in \"%C\" on line %d"),
+ get_filename (member), get_lineno (member)));
+ }
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT (" needs to be defined because it does not have a default value!\n"),
+ get_filename (member), get_lineno (member)));
+}
diff --git a/TAO/TAO_IDL/util/utl_global.cpp b/TAO/TAO_IDL/util/utl_global.cpp
index 3cebe32f2dc..dd35eaf62dc 100644
--- a/TAO/TAO_IDL/util/utl_global.cpp
+++ b/TAO/TAO_IDL/util/utl_global.cpp
@@ -62,6 +62,7 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
*/
+#include "idl_defines.h"
#include "idl_global.h"
#include "global_extern.h"
#include "utl_identifier.h"
@@ -71,22 +72,26 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
#include "fe_extern.h"
#include "fe_private.h"
#include "nr_extern.h"
+#include "ast_extern.h"
#include "ast_root.h"
#include "ast_generator.h"
#include "ast_valuetype.h"
+#include "ast_annotation_decl.h"
#include "ace/OS_NS_stdio.h"
#include "ace/OS_NS_unistd.h"
#include "ace/Process.h"
#include "ace/Env_Value_T.h"
+// FUZZ: disable check_for_streams_include
+#include "ace/streams.h"
// Define an increment for the size of the array used to store names of
// included files.
#undef INCREMENT
#define INCREMENT 64
-static long *pSeenOnce= 0;
+static long *pSeenOnce = 0;
#if defined (ACE_OPENVMS)
#include <unixlib.h>
@@ -106,7 +111,18 @@ char* IDL_GlobalData::translateName(const char* name, char *name_buf)
#endif
IDL_GlobalData::IDL_GlobalData (void)
- : pd_root (0),
+ : syntax_only_ (false),
+ parse_args_exit_ (false),
+ parse_args_exit_status_ (0),
+ print_help_ (false),
+ print_version_ (false),
+ in_eval_ (false),
+ dump_builtins_ (false),
+ just_dump_builtins_ (false),
+ ignore_files_ (false),
+ ignore_lookup_errors_ (false),
+ unknown_annotations_ (UNKNOWN_ANNOTATIONS_WARN_ONCE),
+ pd_root (0),
pd_gen (0),
pd_primary_key_base (0),
pd_err (0),
@@ -525,6 +541,14 @@ IDL_GlobalData::compile_flags (void)
void
IDL_GlobalData::set_compile_flags (long cf)
{
+ if (cf & IDL_CF_ONLY_USAGE)
+ {
+ print_help ();
+ }
+ if (cf & IDL_CF_DUMP_AST)
+ {
+ syntax_only_ = true;
+ }
this->pd_compile_flags = cf;
}
@@ -1870,3 +1894,94 @@ IDL_GlobalData::in_tmpl_mod_alias (bool val)
{
this->in_tmpl_mod_alias_ = val;
}
+
+void
+IDL_GlobalData::parse_args_exit (int status)
+{
+ parse_args_exit_ = true;
+ parse_args_exit_status_ = status;
+}
+
+void
+IDL_GlobalData::print_help ()
+{
+ print_help_ = true;
+ parse_args_exit (0);
+}
+
+void
+IDL_GlobalData::print_version ()
+{
+ print_version_ = true;
+ parse_args_exit (0);
+}
+
+bool
+IDL_GlobalData::print_warnings ()
+{
+ return ! (idl_global->compile_flags () & IDL_CF_NOWARNINGS);
+}
+
+/*
+ * These are generated in idl.yy.cpp but they are not put in the header file,
+ * so to use them we must declare them here.
+ */
+struct yy_buffer_state;
+extern yy_buffer_state *tao_yy_scan_string (const char *);
+extern int tao_yylex_destroy ();
+
+void
+IDL_GlobalData::eval (const char *string)
+{
+ in_eval_ = true;
+
+ // Get IDL_Global Context
+ UTL_String *old_filename = filename ();
+ pd_filename = 0;
+ long old_lineno = lineno ();
+ idl_global->set_lineno (1);
+ UTL_String *old_idl_src_file = idl_src_file ();
+
+ // Name this pseudo-file "builtin"
+ UTL_String utl_string ("builtin", true);
+ idl_global->idl_src_file (new UTL_String (&utl_string, true));
+ idl_global->set_filename (new UTL_String (&utl_string, true));
+
+ // Set up Flex to read from string
+ tao_yy_scan_string (string);
+
+ // Disable Output
+ std::streambuf *default_streambuf = ACE_DEFAULT_LOG_STREAM->rdbuf ();
+ ACE_DEFAULT_LOG_STREAM->rdbuf (0);
+ u_long const flags = ACE_LOG_MSG->flags ();
+ ACE_LOG_MSG->clr_flags (ACE_Log_Msg::STDERR);
+
+ // emulate DRV_drive()
+ FE_yyparse ();
+ idl_global->check_primary_keys ();
+ AST_check_fwd_decls ();
+
+ // Renable Output
+ ACE_DEFAULT_LOG_STREAM->rdbuf (default_streambuf);
+ ACE_LOG_MSG->set_flags (flags);
+
+ // Have Flex Cleanup
+ tao_yylex_destroy ();
+
+ // Restore IDL_Global Context
+ idl_global->set_filename (old_filename);
+ idl_src_file()->destroy ();
+ delete idl_src_file ();
+ idl_src_file (old_idl_src_file);
+ idl_global->set_lineno (old_lineno);
+ idl_global->reset_flag_seen ();
+
+ in_eval_ = false;
+}
+
+void
+IDL_GlobalData::dump_ast ()
+{
+ idl_global->set_compile_flags (idl_global->compile_flags ()
+ | IDL_CF_DUMP_AST);
+}
diff --git a/TAO/TAO_IDL/util/utl_identifier.cpp b/TAO/TAO_IDL/util/utl_identifier.cpp
index 2b37b3b33a1..8f3929d0c8f 100644
--- a/TAO/TAO_IDL/util/utl_identifier.cpp
+++ b/TAO/TAO_IDL/util/utl_identifier.cpp
@@ -70,6 +70,7 @@ trademarks or registered trademarks of Sun Microsystems, Inc.
// FUZZ: disable check_for_streams_include
#include "ace/streams.h"
+#include "ace/OS_NS_string.h"
Identifier::Identifier (void)
: pv_string (0),
@@ -81,6 +82,51 @@ Identifier::Identifier (const char *s)
: pv_string (0),
escaped_ (false)
{
+ preprocess_and_replace_string (s);
+}
+
+Identifier::Identifier (const Identifier &other)
+ : pv_string (0),
+ escaped_ (other.escaped ())
+{
+ replace_string (other.get_string ());
+}
+
+Identifier::~Identifier (void)
+{
+ if (this->pv_string != 0)
+ {
+ ACE::strdelete (this->pv_string);
+ }
+}
+
+// Operations.
+
+char *
+Identifier::get_string (void)
+{
+ return this->pv_string;
+}
+
+const char *
+Identifier::get_string (void) const
+{
+ return this->pv_string;
+}
+
+void
+Identifier::replace_string (const char * s)
+{
+ if (pv_string)
+ {
+ delete [] this->pv_string;
+ }
+ this->pv_string = s ? ACE::strnew (s) : 0;
+}
+
+void
+Identifier::preprocess_and_replace_string (const char * s)
+{
bool shift = false;
if (*s == '_')
@@ -127,38 +173,7 @@ Identifier::Identifier (const char *s)
}
}
- if (shift)
- {
- this->pv_string = ACE::strnew (s + 1);
- }
- else
- {
- this->pv_string = ACE::strnew (s);
- }
-}
-
-Identifier::~Identifier (void)
-{
- if (this->pv_string != 0)
- {
- ACE::strdelete (this->pv_string);
- this->pv_string = 0;
- }
-}
-
-// Operations.
-
-char *
-Identifier::get_string (void)
-{
- return this->pv_string;
-}
-
-void
-Identifier::replace_string (const char * s)
-{
- delete [] this->pv_string;
- this->pv_string = ACE::strnew (s);
+ replace_string (shift ? s + 1 : s);
}
// Compare two Identifier *
@@ -218,10 +233,20 @@ Identifier::dump (ACE_OSTREAM_TYPE &o)
return;
}
- o << this->pv_string;
+ /*
+ * Annotation ids are prefixed with '@' to effectively create an alternative
+ * namespace for them. This hides that hack from dumping.
+ */
+ o << ((pv_string[0] == '@') ? pv_string + 1 : pv_string);
}
void
Identifier::destroy (void)
{
}
+
+bool
+Identifier::operator== (const Identifier &other) const
+{
+ return !ACE_OS::strcmp (pv_string, other.get_string ());
+}
diff --git a/TAO/TAO_IDL/util/utl_idlist.cpp b/TAO/TAO_IDL/util/utl_idlist.cpp
index 601dec5b420..c2445916e77 100644
--- a/TAO/TAO_IDL/util/utl_idlist.cpp
+++ b/TAO/TAO_IDL/util/utl_idlist.cpp
@@ -198,8 +198,8 @@ UTL_IdList::compare (UTL_IdList *other)
void
UTL_IdList::dump (ACE_OSTREAM_TYPE &o)
{
- long first = true;
- long second = false;
+ bool first = true;
+ bool second = false;
for (UTL_IdListActiveIterator i (this);
!i.is_done ();
@@ -214,19 +214,26 @@ UTL_IdList::dump (ACE_OSTREAM_TYPE &o)
first = second = false;
}
- i.item ()->dump (o);
-
- if (first)
+ if (i.item ()->get_string ())
{
- if (ACE_OS::strcmp (i.item ()->get_string (), "::") != 0)
- {
- first = false;
- }
- else
+ i.item ()->dump (o);
+
+ if (first)
{
- second = true;
+ if (ACE_OS::strcmp (i.item ()->get_string (), "::") != 0)
+ {
+ first = false;
+ }
+ else
+ {
+ second = true;
+ }
}
}
+ else
+ {
+ o << "(null string)";
+ }
}
}
@@ -264,3 +271,56 @@ UTL_IdListActiveIterator::item (void)
return ((UTL_IdList *) source)->head ();
}
+
+char *
+UTL_IdList::get_string_copy ()
+{
+ /*
+ * Absolute Names have "::" as the first item in the idlist, so delimiters
+ * have to start be inserted depending on if the name is absolute or not
+ */
+ size_t delimiter_start = is_absolute () ? 1 : 0;
+
+ // Get buffer of the correct size
+ size_t n = 0;
+ size_t size = 1;
+ for (UTL_IdListActiveIterator i (this);
+ !i.is_done ();
+ i.next ())
+ {
+ if (n > delimiter_start)
+ {
+ size += 2; // For delimiter
+ }
+ const char *item = i.item ()->get_string ();
+ size += ACE_OS::strlen (item);
+ n++;
+ }
+ char *buffer = new char[size];
+ buffer[0] = '\0';
+
+ // Fill buffer
+ n = 0;
+ for (UTL_IdListActiveIterator i (this);
+ !i.is_done ();
+ i.next ())
+ {
+ if (n > delimiter_start)
+ {
+ ACE_OS::strncat (buffer, "::", 2);
+ }
+ const char *item = i.item ()->get_string ();
+ ACE_OS::strcat (buffer, item);
+ n++;
+ }
+
+ buffer[size - 1] = '\0';
+
+ return buffer;
+}
+
+bool
+UTL_IdList::is_absolute ()
+{
+ return !ACE_OS::strcmp (first_component ()->get_string (), "::");
+}
diff --git a/TAO/TAO_IDL/util/utl_scope.cpp b/TAO/TAO_IDL/util/utl_scope.cpp
index f8b25ec0f32..eb0a50bc9c0 100644
--- a/TAO/TAO_IDL/util/utl_scope.cpp
+++ b/TAO/TAO_IDL/util/utl_scope.cpp
@@ -1229,8 +1229,8 @@ UTL_Scope::lookup_by_name (UTL_ScopedName *e,
work = idl_global->root ();
}
- AST_Decl *first_found_final_parent_decl= 0;
- const bool searching_module_path= (e->length () != 1);
+ AST_Decl *first_found_final_parent_decl = 0;
+ const bool searching_module_path = (e->length () != 1);
AST_Decl *d = searching_module_path ?
work->lookup_by_name_r (e, full_def_only, first_found_final_parent_decl) :
work->lookup_by_name_r (e, full_def_only);
@@ -1822,7 +1822,9 @@ UTL_Scope::dump (ACE_OSTREAM_TYPE &o)
if (0 < this->pd_locals_used)
{
- o << ACE_TEXT ("\n/* Locally defined types: */\n");
+ o << '\n';
+ idl_global->indent ()->skip_to (o);
+ o << ACE_TEXT ("/* Locally defined types: */\n");
for (UTL_ScopeActiveIterator i (this, IK_localtypes);
!i.is_done ();
@@ -1830,18 +1832,19 @@ UTL_Scope::dump (ACE_OSTREAM_TYPE &o)
{
AST_Decl *d = i.item ();
- if (!d->imported ())
+ if (d->should_be_dumped () && !d->imported ())
{
idl_global->indent ()->skip_to (o);
- d->dump (o);
- o << ACE_TEXT ("\n");
+ o << *d << ACE_TEXT (";\n");
}
}
}
if (0 < this->pd_decls_used)
{
- o << ACE_TEXT ("\n/* Declarations: */\n");
+ o << '\n';
+ idl_global->indent ()->skip_to (o);
+ o << ACE_TEXT ("/* Declarations: */\n");
for (UTL_ScopeActiveIterator j (this, IK_decls);
!j.is_done ();
@@ -1849,11 +1852,10 @@ UTL_Scope::dump (ACE_OSTREAM_TYPE &o)
{
AST_Decl *d = j.item ();
- if (!d->imported ())
+ if (d->should_be_dumped () && !d->imported ())
{
idl_global->indent ()->skip_to (o);
- d->dump (o);
- o << ACE_TEXT (";\n");
+ o << *d << ACE_TEXT (";\n");
}
}
}
@@ -2226,3 +2228,25 @@ UTL_ScopeActiveIterator::iteration_stage (void)
{
return this->stage;
}
+
+AST_Annotation_Decl *
+UTL_Scope::fe_add_annotation_decl (AST_Annotation_Decl * /*annotation_decl*/)
+{
+ return 0;
+}
+
+AST_Annotation_Member *
+UTL_Scope::fe_add_annotation_member (AST_Annotation_Member * /*annotation_member*/)
+{
+ return 0;
+}
+
+AST_Decl *
+UTL_Scope::lookup_by_name (const char *name)
+{
+ AST_Decl *node = 0;
+ UTL_ScopedName *scoped_name = FE_Utils::string_to_scoped_name (name);
+ node = lookup_by_name (scoped_name);
+ delete scoped_name;
+ return node;
+}
diff --git a/TAO/VERSION b/TAO/VERSION
index f332d8a2106..ee7e205c96a 100644
--- a/TAO/VERSION
+++ b/TAO/VERSION
@@ -1,4 +1,4 @@
-This is TAO version 2.5.2, released Tue Sep 18 09:25:49 CEST 2018
+This is TAO version 2.5.3, released Mon Nov 19 10:44:23 CET 2018
If you have any problems with or questions about TAO, please send
e-mail to the TAO mailing list (tao-bugs@list.isis.vanderbilt.edu),
diff --git a/TAO/bin/tao_orb_tests.lst b/TAO/bin/tao_orb_tests.lst
index 6e087048ee9..221f1ea556e 100644
--- a/TAO/bin/tao_orb_tests.lst
+++ b/TAO/bin/tao_orb_tests.lst
@@ -209,6 +209,7 @@ TAO/tests/Bug_4010_Regression/run_test.pl:
TAO/tests/Bug_4059_Regression/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO
TAO/tests/Bug_4082_Regression/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO
TAO/tests/Bug_4097_Regression/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRRO
+TAO/tests/Bug_4213_Regression/run_test.pl: !Win32
TAO/tests/DIOP/run_test.pl: !ST !NO_DIOP !ACE_FOR_TAO !CORBA_E_MICRO
TAO/tests/DIOP/run_test_ipv6.pl: IPV6 !ST !NO_DIOP !ACE_FOR_TAO !CORBA_E_MICRO
TAO/tests/RTCORBA/Activate_Object_Multiple_ORBs/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !ST
@@ -330,6 +331,7 @@ TAO/tests/POA/On_Demand_Loading/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_
TAO/tests/POA/Reference_Counted_Servant/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !ACE_FOR_TAO
TAO/tests/POA/Loader/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !STATIC !ACE_FOR_TAO
TAO/tests/POA/RootPOA/run_test.pl:
+TAO/tests/POA/TIE/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO
TAO/tests/DiffServ/run_test.pl: !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO
TAO/tests/IORManipulation/run_test.pl:
TAO/tests/IORManipulation/filter/run_test.pl:
@@ -503,3 +505,4 @@ TAO/DevGuideExamples/ValueTypes/Messenger/run_test.pl: !MINIMUM !CORBA_E_MICRO
TAO/DevGuideExamples/ValueTypes/Bank/run_test.pl: !MINIMUM !CORBA_E_MICRO
TAO/DevGuideExamples/AMH/run_test.pl: !NO_MESSAGING !CORBA_E_MICRO
TAO/DevGuideExamples/AMH_AMI/run_test.pl: !NO_MESSAGING !CORBA_E_MICRO
+TAO/tests/IDLv4/annotations/run_test.pl
diff --git a/TAO/bin/tao_other_tests.lst b/TAO/bin/tao_other_tests.lst
index 9cc7c20e94e..8f84e6ed4fe 100644
--- a/TAO/bin/tao_other_tests.lst
+++ b/TAO/bin/tao_other_tests.lst
@@ -213,6 +213,7 @@ TAO/orbsvcs/tests/Property/run_test.pl: !NO_MESSAGING !ACE_FOR_TAO !CORBA_E_MICR
TAO/orbsvcs/tests/Bug_3387_Regression/run_test.pl: !ST !NO_MESSAGING !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO !ACE_FOR_TAO !LynxOS
#HANGS TAO/orbsvcs/tests/ImplRepo/run_test.pl airplane
#HANGS'TAO/orbsvcs/tests/ImplRepo/run_test.pl airplane_ir
+TAO/orbsvcs/tests/Security/ssliop_corbaloc/run_test.pl: !ST SSL !STATIC !DISABLE_INTERCEPTORS !ACE_FOR_TAO !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO
TAO/orbsvcs/tests/Security/Secure_Invocation/run_test.pl: SSL !STATIC !DISABLE_INTERCEPTORS !ACE_FOR_TAO !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO
TAO/orbsvcs/tests/Security/Bug_1107_Regression/run_test.pl: SSL !STATIC !DISABLE_INTERCEPTORS !ACE_FOR_TAO !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO
TAO/orbsvcs/tests/Security/Bug_2908_Regression/run_test.pl: SSL !STATIC !DISABLE_INTERCEPTORS !ACE_FOR_TAO !MINIMUM !CORBA_E_COMPACT !CORBA_E_MICRO
diff --git a/TAO/docs/ORBEndpoint.html b/TAO/docs/ORBEndpoint.html
index 44b3aed365a..eecd1c81cc5 100644
--- a/TAO/docs/ORBEndpoint.html
+++ b/TAO/docs/ORBEndpoint.html
@@ -29,7 +29,7 @@
<blockquote><CODE>
protocol://V.v@addr1,...,W.w@addrN
</CODE></blockquote>
- where <CODE>V.v</CODE> and <CODE>W.w</CODE> are optional protcol
+ where <CODE>V.v</CODE> and <CODE>W.w</CODE> are optional protocol
versions for each address. An example of an IIOP endpoint is:
<blockquote><CODE>
iiop://<I><EM>hostname</EM></I>:<I><EM>port</EM></I>
@@ -488,7 +488,7 @@
<P>
Options are separated from the addresses by a vertical bar
- '<CODE>|</CODE>'. For instance, if an IIOP endpoint should have
+ '<CODE>|</CODE>'. For instance, if an UIOP endpoint should have
a property foobar of 50 associated with it, then the following
endpoint specification could be used
<BLOCKQUOTE>
@@ -638,11 +638,6 @@
SSLIOP pluggable protocol is used.
<hr>
-
<address><a href="mailto:ossama@dre.vanderbilt.edu">Ossama Othman</a></address>
-<!-- Created: Thu May 18 08:37:25 PDT 2000 -->
-<!-- hhmts start -->
-Last modified: Fri Jun 11 16:51:59 PDT 2004
-<!-- hhmts end -->
</body>
</html>
diff --git a/TAO/docs/Options.html b/TAO/docs/Options.html
index 88f1d914e10..fe7b40b8814 100644
--- a/TAO/docs/Options.html
+++ b/TAO/docs/Options.html
@@ -667,7 +667,7 @@ is <code>0</code>. This option is disabled (<code>0</code>) by default.</td>
<td><code>-ORBListenEndpoints</code> <em>endpoint</em></td>
<td><a name="-ORBListenEndpoints"></a> This option was
introduced with the CORBA <a
- href="http://www.omg.org/docs/orbos/01-01-04.pdf">Object
+ href="https://www.omg.org/cgi-bin/doc?orbos/01-01-04">Object
Reference Template</A> (ORT) specification. It instructs a
server ORB to listen for requests on the interface specified
by <code>endpoint</code>. When used with Real-time CORBA, the option
diff --git a/TAO/docs/compiler.html b/TAO/docs/compiler.html
index cd98f422004..359f2475a19 100644
--- a/TAO/docs/compiler.html
+++ b/TAO/docs/compiler.html
@@ -69,7 +69,7 @@ these files:) <P>
unlinked if not used.
<LI> <B><EM>CIAO servant files</EM></B>, <EM>i.e.</EM>, <tt>*_svnt.h</tt>,
and <tt>*_svnt.cpp</tt>. Optionally generated files, containing component
- and home servant implementations, as well as factory fuctions to create
+ and home servant implementations, as well as factory functions to create
components and homes.
<LI> <B><EM>Executor IDL file</EM></B>, <EM>i.e.</EM>, <tt>*E.idl</tt>.
IDL file containing local interfaces used for component and home
@@ -153,7 +153,7 @@ to the preprocessor (MVS, HPUX, etc.). And case 3 isn't used at all,
but is included as a default case.</P>
<P>Since the default preprocessor may not always work when TAO_IDL is moved to
-another machine or used in cross-compilation, it can be overriden at runtime
+another machine or used in cross-compilation, it can be overridden at runtime
by setting the environment variables TAO_IDL_PREPROCESSOR and
TAO_IDL_PREPROCESSOR_ARGS.</P>
@@ -219,7 +219,7 @@ described in the CORBA 3.0.3 specification.
<h3><a name="collocation-stubs">Collocation Strategies</a></h3>
TAO_IDL can generate collocated stubs using two different collocation
-strategies. It also allows you to supress/enable the generation of
+strategies. It also allows you to suppress/enable the generation of
the stubs of a particular strategy. To gain great flexibility at
run-time, you can generate stubs for both collocation strategies
(using both '<a href="#Gp"><code>-Gp</code></a>' and '<a
@@ -251,20 +251,40 @@ also receives other options that are specific to it.<p>
<th>Remark</th>
</tr>
<tr><a NAME="u">
- <td><tt>-u</tt></td>
+ <td><tt>-h</br>--help</br>-u</tt></td>
- <td>The compiler prints out the options that are given below and exits
- clean </td>
+ <td>The compiler prints out the arguments it supports and exits</td>
<td>&nbsp;</td>
</tr>
<tr> <a NAME="V">
- <td><tt>-V</tt></td>
+ <td><tt>-V</br>--version</tt></td>
<td>The compiler printouts its version and exits</td>
<td>&nbsp;</td>
</tr>
+ <tr>
+ <td><tt>--idl-version VERSION</tt></td>
+
+ <td>Set the IDL version to use</td>
+ <td>&nbsp;</td>
+ </tr>
+
+ <tr>
+ <td><tt>--default-idl-version</tt></td>
+
+ <td>Prints the default IDL version for the compiler and exits</td>
+ <td>&nbsp;</td>
+ </tr>
+
+ <tr>
+ <td><tt>--list-idl-versions</tt></td>
+
+ <td>Lists IDL versions the compiler supports and exits</td>
+ <td>&nbsp;</td>
+ </tr>
+
<tr><a name="Wb">
<td><tt>-Wb,</tt><i>option_list</i></EM</TD></td>
@@ -329,7 +349,7 @@ also receives other options that are specific to it.<p>
or <tt>extern</tt> typecode declaration in the generated stub code,
this is needed for Windows and newer versions of gcc, which require special directives to
export symbols from DLLs, otherwise the definition is just a
- space on unix platforms. This option works only in conjuction with
+ space on Unix platforms. This option works only in conjunction with
the -GA option, which generates Any operators and typecodes into a
separate set of files.&nbsp;</td>
</tr>
@@ -341,7 +361,7 @@ also receives other options that are specific to it.<p>
<td>The compiler will generate code to include <i>include_path</i> at the
top of the anyop file header, this is usually a good place to define the export
- macro. This option works in conjuction with the -GA option, which generates Any
+ macro. This option works in conjunction with the -GA option, which generates Any
operators and typecodes into a separate set of files.</td>
</tr>
@@ -377,7 +397,7 @@ also receives other options that are specific to it.<p>
<td><tt>exec_export_macro=</tt><i>macro_name</i></td>
<td>The compiler will emit <i>macro_name</i> right after each <tt>class</tt>
- or <tt>extern</tt> keyword in the generated CIAO executor implmentation header
+ or <tt>extern</tt> keyword in the generated CIAO executor implementation header
(*_exec.h) files, if such
code is being generated (see <tt>-Gex</tt> option below). These macros
are needed for Windows and newer versions of gcc, which require special directives to
@@ -401,7 +421,7 @@ also receives other options that are specific to it.<p>
<td><tt>conn_export_macro=</tt><i>macro_name</i></td>
<td>The compiler will emit <i>macro_name</i> right after each <tt>class</tt>
- or <tt>extern</tt> keyword in the generated CIAO connector implmentation header
+ or <tt>extern</tt> keyword in the generated CIAO connector implementation header
(*_conn.h) files, if such
code is being generated (see <tt>-Gcn</tt> option below). These macros
are needed for Windows and newer versions of gcc, which require special directives to
@@ -556,10 +576,33 @@ also receives other options that are specific to it.<p>
<td>&nbsp;</td>
</tr>
+ <tr>
+ <td><tt>--syntax-only</tt></td>
+
+ <td>Parse input files, but exit without generating any files.</td>
+ <td>&nbsp;</td>
+ </tr>
+
<tr><a name="d">
- <td><tt>-d</tt></td>
+ <td><tt>--dump </br> -d</tt></td>
+
+ <td>Causes output of a dump of the AST and exits before any files would be
+ created.</td>
+ <td>&nbsp;</td>
+ </tr>
+
+ <tr>
+ <td><tt>--dump-builtins</tt></td>
- <td>Causes output of a dump of the AST</td>
+ <td>Implies --dump, but also dumps IDL defined by the compiler.</td>
+ <td>&nbsp;</td>
+ </tr>
+
+ <tr>
+ <td><tt>--just-dump-builtins</tt></td>
+
+ <td>Dumps IDL defined by the compiler but ignores any files passed and
+ exits.</td>
<td>&nbsp;</td>
</tr>
@@ -636,7 +679,7 @@ also receives other options that are specific to it.<p>
<tr><a name="in">
<TD><TT>-in</TT></TD>
- <TD> To generate #include statements with <>'s for the standard
+ <TD> To generate #include statements with &lt;&gt;'s for the standard
include files (e.g. tao/corba.h) indicating them as non-changing
files</TD>
<td>&nbsp;</td>
@@ -779,7 +822,7 @@ also receives other options that are specific to it.<p>
<tr><a name="Ce">
<td><tt>-Ce</tt></td>
- <td>Output an error if two indentifiers in the same scope differ in
+ <td>Output an error if two identifiers in the same scope differ in
spelling only by case (default).</td>
<td>&nbsp;</td>
@@ -836,7 +879,7 @@ also receives other options that are specific to it.<p>
<td>Generate AMI4CCM code</td>
<td>*A.idl file (containing callback interface, "sendc_" methods
- and CCM connector) plus addition to CCM servant and exectuor</td>
+ and CCM connector) plus addition to CCM servant and executor</td>
</tr>
<tr><a name="Gp">
@@ -1036,7 +1079,7 @@ also receives other options that are specific to it.<p>
<td>Generate CIAO executor implementation code for component and home IDL declarations</td>
<td>
- These files have empty function bodies for all facet, suported and inherited operations,
+ These files have empty function bodies for all facet, supported and inherited operations,
to be filled in by the developer.</td>
</tr>
@@ -1296,6 +1339,21 @@ also receives other options that are specific to it.<p>
<td>Default is 2 spaces</td>
</tr>
+ <tr>
+ <td><tt>--unknown-annotations ARG</tt></td>
+
+ <td>
+ Controls the reaction when encountering undefined annotations. The valid
+ arguments to this option are "warn-once" (Default), "warn-all", "error",
+ and "ignore".
+ </td>
+ <td>
+ The difference between "warn-once" and "warn-all" is that with
+ "warn-once" using annotations the same local name will not be warned
+ about more than once, while "warn-all" will warn with every usage.
+ </td>
+ </tr>
+
</table> <P>
<P><HR><P>
diff --git a/TAO/docs/pluggable_messaging.html b/TAO/docs/pluggable_messaging.html
index 64c41600b20..82c8d6efc04 100644
--- a/TAO/docs/pluggable_messaging.html
+++ b/TAO/docs/pluggable_messaging.html
@@ -84,7 +84,7 @@
<P>The GIOP_Message_Connector and the derived classes
implements the different types of messages that can
originate from the client. In GIOP 1.2, with the
- specification of Bi-Directional GIOP, this disticntion
+ specification of Bi-Directional GIOP, this distinction
between the client and server would decrease. But, this
would be applicable only for GIOP 1.2. The present
inheritance model, allows us to implement some of the roles
@@ -131,11 +131,6 @@
<body>
<h1></h1>
-
-
<hr>
<address></address>
-<!-- hhmts start -->
-Last modified: Thu Mar 16 11:23:03 CST 2000
-<!-- hhmts end -->
</body> </html>
diff --git a/TAO/docs/pluggable_protocols/index.html b/TAO/docs/pluggable_protocols/index.html
index cbcea09369a..7f3da9d177b 100644
--- a/TAO/docs/pluggable_protocols/index.html
+++ b/TAO/docs/pluggable_protocols/index.html
@@ -1317,7 +1317,7 @@ as follows:
<DD>uioploc:///tmp/foobar/some_other_object_key</DD>
</DL>
<P>
-it then becomes impossible to tell if the rendezous point is ``<TT>/tmp</TT>''
+it then becomes impossible to tell if the rendezvous point is ``<TT>/tmp</TT>''
or ``<TT>/tmp/foobar</TT>,'' and similarly for the object key, hence the need
for an object key delimiter other than `<TT>/</TT>.'
@@ -1329,7 +1329,7 @@ that contains the object key delimiter appropriate for the given pluggable proto
</DD>
<DT><STRONG><TT>create_profile</TT>.</STRONG></DT>
<DD>This method creates and initializes a profile using
-the provided CDR stream. Most of this code is also ``boilerblate.'' As such,
+the provided CDR stream. Most of this code is also ``boilerplate.'' As such,
it may be factored out in future TAO releases.</DD>
<P>
<DT><STRONG><TT>make_profile</TT>.</STRONG></DT>
diff --git a/TAO/docs/tutorials/Quoter/Event_Service/index.html b/TAO/docs/tutorials/Quoter/Event_Service/index.html
index 1d5b58407e7..a482a62dcaf 100644
--- a/TAO/docs/tutorials/Quoter/Event_Service/index.html
+++ b/TAO/docs/tutorials/Quoter/Event_Service/index.html
@@ -77,7 +77,7 @@ public:
void
Stock_Consumer::push (const CORBA::Any& data)
{
- Quoter::Event *event;
+ const Quoter::Event *event = 0;
if ((data >>= event) == 0)
return; // Invalid event
</PRE>
diff --git a/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/Fixed_Priority_Scheduler.mpc b/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/Fixed_Priority_Scheduler.mpc
index 77cb464198f..e36501dbb8a 100644
--- a/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/Fixed_Priority_Scheduler.mpc
+++ b/TAO/examples/RTScheduling/Fixed_Priority_Scheduler/Fixed_Priority_Scheduler.mpc
@@ -17,6 +17,7 @@ project(*test) : namingexe, rtscheduling_server {
idlflags += -SS -St -o ..
IDL_Files {
+ gendir = ..
../FP_Scheduling.idl
}
diff --git a/TAO/examples/RTScheduling/MIF_Scheduler/MIF_Scheduler.mpc b/TAO/examples/RTScheduling/MIF_Scheduler/MIF_Scheduler.mpc
index a77487e663e..4a9902496b4 100644
--- a/TAO/examples/RTScheduling/MIF_Scheduler/MIF_Scheduler.mpc
+++ b/TAO/examples/RTScheduling/MIF_Scheduler/MIF_Scheduler.mpc
@@ -18,6 +18,7 @@ project(*test) : namingexe, rtscheduling_server {
idlflags += -SS -St -o ..
IDL_Files {
+ gendir = ..
../MIF_Scheduling.idl
}
diff --git a/TAO/orbsvcs/IFR_Service/be_global.cpp b/TAO/orbsvcs/IFR_Service/be_global.cpp
index fd630201645..d85c1eafab3 100644
--- a/TAO/orbsvcs/IFR_Service/be_global.cpp
+++ b/TAO/orbsvcs/IFR_Service/be_global.cpp
@@ -147,47 +147,66 @@ BE_GlobalData::spawn_options (void)
return this->orb_args_ + idl_global->idl_flags ();
}
+#define UNKNOWN_OPTION \
+ ORBSVCS_ERROR (( \
+ LM_ERROR, \
+ ACE_TEXT ("IDL: I don't understand the '%s' option\n"), \
+ av[i])); \
+ idl_global->parse_args_exit (1);
+
void
BE_GlobalData::parse_args (long &i, char **av)
{
switch (av[i][1])
{
case 'L':
- be_global->enable_locking (true);
+ if (av[i][2] == '\0')
+ {
+ be_global->enable_locking (true);
+ }
+ else
+ {
+ UNKNOWN_OPTION;
+ }
break;
+
case 'r':
- be_global->removing (true);
+ if (av[i][2] == '\0')
+ {
+ be_global->removing (true);
+ }
+ else
+ {
+ UNKNOWN_OPTION;
+ }
break;
+
case 'S':
// Suppress ...
- if (av[i][2] == 'i')
+ if (av[i][2] == 'i' && av[i][3] == '\0')
{
// ... processing of included IDL files.
be_global->do_included_files (0);
}
else
{
- ORBSVCS_ERROR ((
- LM_ERROR,
- ACE_TEXT ("IDL: I don't understand the '%s' option\n"),
- av[i]));
-
- ACE_OS::exit (99);
+ UNKNOWN_OPTION;
}
break;
+
case 'T':
- be_global->allow_duplicate_typedefs (true);
+ if (av[i][2] == '\0')
+ {
+ be_global->allow_duplicate_typedefs (true);
+ }
+ else
+ {
+ UNKNOWN_OPTION;
+ }
break;
+
default:
- ORBSVCS_ERROR ((
- LM_ERROR,
- ACE_TEXT ("IDL: I don't understand the '%s' option\n"),
- av[i]
- ));
-
- idl_global->set_compile_flags (idl_global->compile_flags ()
- | IDL_CF_ONLY_USAGE);
- break;
+ UNKNOWN_OPTION;
}
}
diff --git a/TAO/orbsvcs/IFR_Service/be_global.h b/TAO/orbsvcs/IFR_Service/be_global.h
index a2f3752b825..74a71bc3b20 100644
--- a/TAO/orbsvcs/IFR_Service/be_global.h
+++ b/TAO/orbsvcs/IFR_Service/be_global.h
@@ -78,7 +78,7 @@ public:
/// implementations in IDL and IFR backends.
ACE_CString spawn_options (void);
- /// Parse args that affect the backend.
+ /// Parse an argument that might affect the backend.
void parse_args (long &i, char **av);
private:
diff --git a/TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.cpp b/TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.cpp
index b5175d47571..7317ef07a99 100644
--- a/TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.cpp
+++ b/TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.cpp
@@ -203,6 +203,13 @@ AsyncAccessManager::remote_state (ImplementationRepository::AAM_Status state)
void
AsyncAccessManager::final_state (bool active)
{
+ if (ImR_Locator_i::debug () > 5)
+ {
+ ORBSVCS_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P|%t) AsyncAccessManager(%@)::final_state - ")
+ ACE_TEXT ("server <%C> active <%d> status <%C> waiters <%d>\n"),
+ this, info_->ping_id (), active, status_name (this->status_), this->rh_list_.size()));
+ }
bool const success = this->status_ == ImplementationRepository::AAM_SERVER_READY;
this->info_.edit (active)->started (success);
this->retries_ = this->info_->start_limit_;
@@ -224,8 +231,8 @@ AsyncAccessManager::final_state (bool active)
{
ORBSVCS_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%P|%t) AsyncAccessManager(%@)::final_state ")
- ACE_TEXT ("removing this from map, server <%C>\n"),
- this, info_->ping_id ()));
+ ACE_TEXT ("removing this from map, server <%C> remove_on_death_rh_ <%@>\n"),
+ this, info_->ping_id (), this->remove_on_death_rh_));
}
if (this->remove_on_death_rh_ != 0)
{
@@ -240,58 +247,83 @@ AsyncAccessManager::final_state (bool active)
}
void
-AsyncAccessManager::notify_waiters (void)
+AsyncAccessManager::notify_waiter (ImR_ResponseHandler *rh)
{
- for (size_t i = 0; i < this->rh_list_.size(); i++)
+ if (this->status_ == ImplementationRepository::AAM_SERVER_READY)
{
- ImR_ResponseHandler *rh = this->rh_list_[i];
- if (rh != 0)
+ if (this->info_->is_mode (ImplementationRepository::PER_CLIENT))
{
- if (this->status_ == ImplementationRepository::AAM_SERVER_READY)
- {
- if (this->info_->is_mode (ImplementationRepository::PER_CLIENT))
- {
- rh->send_ior (this->partial_ior_.c_str());
- }
- else
- {
- rh->send_ior (this->info_->partial_ior.c_str());
- }
- }
- else
+ rh->send_ior (this->partial_ior_.c_str());
+ }
+ else
+ {
+ rh->send_ior (this->info_->partial_ior.c_str());
+ }
+ }
+ else
+ {
+ try
+ {
+ switch (this->status_)
{
- try
- {
- switch (this->status_)
- {
- case ImplementationRepository::AAM_NO_ACTIVATOR:
- throw ImplementationRepository::CannotActivate
- ("No activator registered for server.");
- case ImplementationRepository::AAM_NOT_MANUAL:
- throw ImplementationRepository::CannotActivate
- ("Cannot implicitly activate MANUAL server.");
- case ImplementationRepository::AAM_NO_COMMANDLINE:
- throw ImplementationRepository::CannotActivate
- ("No command line registered for server.");
- case ImplementationRepository::AAM_RETRIES_EXCEEDED:
- throw ImplementationRepository::CannotActivate
- ("Restart attempt count exceeded.");
- case ImplementationRepository::AAM_ACTIVE_TERMINATE:
- throw ImplementationRepository::CannotActivate
- ("Server terminating.");
- default: {
- ACE_CString reason = ACE_CString ("AAM_Status is ") +
- status_name (this->status_);
- throw ImplementationRepository::CannotActivate (reason.c_str());
- }
- }
- }
- catch (const CORBA::Exception &ex)
- {
- rh->send_exception (ex._tao_duplicate());
- }
+ case ImplementationRepository::AAM_NO_ACTIVATOR:
+ throw ImplementationRepository::CannotActivate
+ ("No activator registered for server.");
+ case ImplementationRepository::AAM_NOT_MANUAL:
+ throw ImplementationRepository::CannotActivate
+ ("Cannot implicitly activate MANUAL server.");
+ case ImplementationRepository::AAM_NO_COMMANDLINE:
+ throw ImplementationRepository::CannotActivate
+ ("No command line registered for server.");
+ case ImplementationRepository::AAM_RETRIES_EXCEEDED:
+ throw ImplementationRepository::CannotActivate
+ ("Restart attempt count exceeded.");
+ case ImplementationRepository::AAM_ACTIVE_TERMINATE:
+ throw ImplementationRepository::CannotActivate
+ ("Server terminating.");
+ default: {
+ ACE_CString reason = ACE_CString ("AAM_Status is ") +
+ status_name (this->status_);
+ throw ImplementationRepository::CannotActivate (reason.c_str());
+ }
}
}
+ catch (const CORBA::Exception &ex)
+ {
+ rh->send_exception (ex._tao_duplicate());
+ }
+ }
+}
+
+void
+AsyncAccessManager::notify_waiters (void)
+{
+ if (ImR_Locator_i::debug () > 4)
+ {
+ this->report ("notify_waiters");
+ }
+
+ for (size_t i = 0; i < this->rh_list_.size(); i++)
+ {
+ // Sending the IOR through to the response handler could trigger
+ // an exception which we should catch here and log. This way when
+ // we have multiple waiters we do inform them all and not abort
+ // after the first exception
+ try
+ {
+ ImR_ResponseHandler *rh = this->rh_list_[i];
+ if (rh != 0)
+ {
+ this->notify_waiter (rh);
+ }
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ if (ImR_Locator_i::debug () > 1)
+ {
+ ex._tao_print_exception ("AsyncAccessManager::notify_waiters");
+ }
+ }
}
this->rh_list_.clear ();
}
@@ -316,8 +348,6 @@ AsyncAccessManager::status_name (ImplementationRepository::AAM_Status s)
return "INIT";
case ImplementationRepository::AAM_SERVER_STARTED_RUNNING:
return "SERVER_STARTED_RUNNING";
- case ImplementationRepository::AAM_ACTIVATION_SENT:
- return "ACTIVATION_SENT";
case ImplementationRepository::AAM_WAIT_FOR_RUNNING:
return "WAIT_FOR_RUNNING";
case ImplementationRepository::AAM_WAIT_FOR_PING:
@@ -368,24 +398,25 @@ void
AsyncAccessManager::update_status (ImplementationRepository::AAM_Status s)
{
this->status (s);
+ if (ImR_Locator_i::debug () > 4)
+ {
+ this->report ("update_status");
+ }
this->info_.notify_remote_access (s);
}
void
-AsyncAccessManager::activator_replied (bool success, int pid)
+AsyncAccessManager::activator_replied_start_running (bool success, int pid)
{
+ if (ImR_Locator_i::debug () > 4)
+ {
+ this->report ("activator_replied_start_running");
+ }
+
if (success)
{
- if (pid == 0)
- {
- this->update_status (ImplementationRepository::AAM_WAIT_FOR_RUNNING);
- }
- else
+ if (pid != 0)
{
- if (ImR_Locator_i::debug () > 4)
- {
- this->report ("activator_replied");
- }
this->update_status (ImplementationRepository::AAM_SERVER_READY);
this->info_.edit()->pid = pid;
this->final_state ();
@@ -490,14 +521,14 @@ AsyncAccessManager::notify_child_death (int pid)
if (ImR_Locator_i::debug () > 4)
{
ORBSVCS_DEBUG ((LM_DEBUG,
- ACE_TEXT ("(%P|%t) AsyncAccessManager(%@), child death, pid <%d>, status <%C> ")
+ ACE_TEXT ("(%P|%t) AsyncAccessManager(%@), child death, server <%C> pid <%d> status <%C> ")
ACE_TEXT ("this info_.pid <%d> prev_pid <%d> waiter count <%d>\n"),
- this, pid, status_name (status_),
- this->info_->pid, this->prev_pid_, this->rh_list_.size() ));
+ this, info_->ping_id (), pid, status_name (status_),
+ this->info_->pid, this->prev_pid_, this->rh_list_.size()));
}
if (this->info_->pid == pid || this->prev_pid_ == pid)
{
- if (this->status_ == ImplementationRepository::AAM_WAIT_FOR_DEATH &&
+ if ((this->status_ == ImplementationRepository::AAM_WAIT_FOR_DEATH) &&
this->rh_list_.size() > 0)
{
this->send_start_request ();
@@ -507,6 +538,17 @@ AsyncAccessManager::notify_child_death (int pid)
this->final_state ();
return true;
}
+ else
+ {
+ if (ImR_Locator_i::debug () > 1)
+ {
+ ORBSVCS_ERROR ((LM_ERROR,
+ ACE_TEXT ("(%P|%t) AsyncAccessManager(%@), child death, server <%C> pid <%d> does not match ")
+ ACE_TEXT ("this info_.pid <%d> prev_pid <%d>\n"),
+ this, info_->ping_id (), pid,
+ this->info_->pid, this->prev_pid_));
+ }
+ }
return false;
}
@@ -528,7 +570,7 @@ AsyncAccessManager::ping_replied (LiveStatus server)
if (ImR_Locator_i::debug () > 4)
{
ORBSVCS_DEBUG ((LM_DEBUG,
- ACE_TEXT ("(%P|%t) AsyncAccessManager(%@)::ping_replied <%C>,")
+ ACE_TEXT ("(%P|%t) AsyncAccessManager(%@)::ping_replied <%C>")
ACE_TEXT (" this status <%C>\n"),
this, LiveEntry::status_name (server), status_name (this->status_)));
}
@@ -562,7 +604,7 @@ AsyncAccessManager::ping_replied (LiveStatus server)
{
ORBSVCS_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%P|%t) AsyncAccessManager(%@)::ping_replied pid = %d,")
- ACE_TEXT (" transition to WAIT_FOR_DEATH\n"),
+ ACE_TEXT (" transition to <WAIT_FOR_DEATH>\n"),
this, this->info_->pid));
}
this->status (ImplementationRepository::AAM_WAIT_FOR_DEATH);
@@ -598,8 +640,8 @@ AsyncAccessManager::send_start_request (void)
if (ImR_Locator_i::debug () > 4)
{
ORBSVCS_DEBUG ((LM_DEBUG,
- ACE_TEXT ("(%P|%t) AsyncAccessManager(%@)::send_start_request, manual_start <%d>\n"),
- this, this->manual_start_));
+ ACE_TEXT ("(%P|%t) AsyncAccessManager(%@)::send_start_request, server <%C> manual_start <%d> retries <%d>\n"),
+ this, this->info_->ping_id(), this->manual_start_, this->retries_));
}
if ((this->locator_.opts ()->lockout () && !this->info_.edit ()->start_allowed ()) ||
@@ -650,6 +692,10 @@ AsyncAccessManager::send_start_request (void)
}
else
{
+ // When we start a new server we need set our process id back to zero
+ // so that we ignore an asynchronous child death which can happens after
+ // we already restarted the server
+ this->info_.edit()->pid = 0;
servername = unique_prefix + startup->key_name_;
}
@@ -658,7 +704,7 @@ AsyncAccessManager::send_start_request (void)
startup->cmdline.c_str (),
startup->dir.c_str (),
startup->env_vars);
- this->update_status (ImplementationRepository::AAM_ACTIVATION_SENT);
+ this->update_status (ImplementationRepository::AAM_WAIT_FOR_RUNNING);
return true;
}
@@ -695,7 +741,6 @@ ActivatorReceiver::ActivatorReceiver (AsyncAccessManager *aam,
{
}
-
ActivatorReceiver::~ActivatorReceiver (void)
{
}
@@ -703,7 +748,13 @@ ActivatorReceiver::~ActivatorReceiver (void)
void
ActivatorReceiver::start_server (void)
{
- this->aam_->activator_replied (true, 0);
+ if (ImR_Locator_i::debug () > 4)
+ {
+ ORBSVCS_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P|%t) ActivatorReceiver(%@)::start_server, received start_server reply\n"),
+ this));
+ }
+
PortableServer::ObjectId_var oid = this->poa_->servant_to_id (this);
poa_->deactivate_object (oid.in());
}
@@ -711,6 +762,13 @@ ActivatorReceiver::start_server (void)
void
ActivatorReceiver::start_server_excep (Messaging::ExceptionHolder *holder)
{
+ if (ImR_Locator_i::debug () > 4)
+ {
+ ORBSVCS_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P|%t) ActivatorReceiver(%@)::start_server_excep, received start_server_excep reply\n"),
+ this));
+ }
+
try
{
holder->raise_exception ();
@@ -720,11 +778,11 @@ ActivatorReceiver::start_server_excep (Messaging::ExceptionHolder *holder)
if (ACE_OS::strstr (ca.reason.in(),"pid:") == ca.reason.in())
{
int const pid = ACE_OS::atoi (ca.reason.in()+4);
- this->aam_->activator_replied (true, pid);
+ this->aam_->activator_replied_start_running (true, pid);
}
else
{
- this->aam_->activator_replied (false, 0);
+ this->aam_->activator_replied_start_running (false, 0);
}
}
PortableServer::ObjectId_var oid = this->poa_->servant_to_id (this);
diff --git a/TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.h b/TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.h
index 27038e826e4..1af3d7aa3b1 100644
--- a/TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.h
+++ b/TAO/orbsvcs/ImplRepo_Service/AsyncAccessManager.h
@@ -67,7 +67,7 @@ class Locator_Export AsyncAccessManager
ImplementationRepository::AAM_Status status (void) const;
bool force_remove_rh (ImR_ResponseHandler *rh);
- void activator_replied (bool success, int pid);
+ void activator_replied_start_running (bool success, int pid);
void server_is_running (const char *partial_ior,
ImplementationRepository::ServerObject_ptr ref);
void server_is_shutting_down (void);
@@ -85,6 +85,7 @@ class Locator_Export AsyncAccessManager
private:
void report (const char* operation) const;
void final_state (bool active = true);
+ void notify_waiter (ImR_ResponseHandler *rh);
void notify_waiters (void);
void status (ImplementationRepository::AAM_Status s);
void update_status (ImplementationRepository::AAM_Status s);
diff --git a/TAO/orbsvcs/ImplRepo_Service/AsyncListManager.cpp b/TAO/orbsvcs/ImplRepo_Service/AsyncListManager.cpp
index 4823ed44345..3504dd4d4ca 100644
--- a/TAO/orbsvcs/ImplRepo_Service/AsyncListManager.cpp
+++ b/TAO/orbsvcs/ImplRepo_Service/AsyncListManager.cpp
@@ -163,7 +163,7 @@ AsyncListManager::final_state (void)
}
bool excepted = false;
- CORBA::ULong len = this->server_list_.length ();
+ CORBA::ULong const len = this->server_list_.length ();
ImplementationRepository::ServerInformationList alt_list (this->how_many_);
ImplementationRepository::ServerInformationList *sil = &this->server_list_;
if (this->first_ > 0 || this->how_many_ < len)
@@ -301,7 +301,7 @@ AsyncListManager::ping_replied (CORBA::ULong index, LiveStatus status, int pid)
{
ORBSVCS_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%P|%t) AsyncListManager(%@)::ping_replied, index <%d> ")
- ACE_TEXT ("status <%C>, server pid <%d>, waiters <%d>\n"),
+ ACE_TEXT ("status <%C> server pid <%d> waiters <%d>\n"),
this,index, LiveEntry::status_name (status), pid, this->waiters_));
}
if (evaluate_status (index, status, pid))
diff --git a/TAO/orbsvcs/ImplRepo_Service/Forwarder.cpp b/TAO/orbsvcs/ImplRepo_Service/Forwarder.cpp
index dc8f16cd468..3ea492fdd0c 100644
--- a/TAO/orbsvcs/ImplRepo_Service/Forwarder.cpp
+++ b/TAO/orbsvcs/ImplRepo_Service/Forwarder.cpp
@@ -205,9 +205,8 @@ ImR_DSI_ResponseHandler::send_ior (const char *pior)
else
{
ORBSVCS_ERROR ((LM_ERROR,
- ACE_TEXT ("(%P|%t) ImR_ResponseHandler::send_ior (): Invalid corbaloc ior.\n")
- ACE_TEXT ("\t<%C>\n"),
- ior.c_str()));
+ ACE_TEXT ("(%P|%t) ImR_DSI_ResponseHandler::send_ior (): Invalid corbaloc ior for key <%C> server_name <%C> IOR <%C>\n"),
+ key_str_.in (), server_name_.in (), pior));
}
this->invoke_excep_i (new CORBA::OBJECT_NOT_EXIST
diff --git a/TAO/orbsvcs/ImplRepo_Service/ImR_Activator_i.cpp b/TAO/orbsvcs/ImplRepo_Service/ImR_Activator_i.cpp
index 9267d47a2c3..a7443d5e356 100644
--- a/TAO/orbsvcs/ImplRepo_Service/ImR_Activator_i.cpp
+++ b/TAO/orbsvcs/ImplRepo_Service/ImR_Activator_i.cpp
@@ -117,7 +117,9 @@ ImR_Activator_i::register_with_imr (ImplementationRepository::Activator_ptr acti
catch (const CORBA::Exception& ex)
{
if (debug_ > 1)
- ex._tao_print_exception ("ImR Activator: Can't register with ImR.");
+ {
+ ex._tao_print_exception ("ImR Activator: Can't register with ImR.");
+ }
}
if (debug_ > 0)
@@ -257,13 +259,13 @@ ImR_Activator_i::fini (void)
catch (const CORBA::COMM_FAILURE&)
{
if (debug_ > 1)
- ORBSVCS_DEBUG ((LM_DEBUG,
+ ORBSVCS_ERROR ((LM_ERROR,
ACE_TEXT ("(%P|%t) ImR Activator: COMM_FAILURE, unable to unregister from ImR.\n")));
}
catch (const CORBA::TRANSIENT&)
{
if (debug_ > 1)
- ORBSVCS_DEBUG ((LM_DEBUG,
+ ORBSVCS_ERROR ((LM_ERROR,
ACE_TEXT ("(%P|%t) ImR Activator: TRANSIENT, unable to unregister from ImR.\n")));
}
catch (const CORBA::Exception& ex)
@@ -469,14 +471,13 @@ ImR_Activator_i::start_server(const char* name,
{
if (debug_ > 0)
{
- ORBSVCS_DEBUG((LM_DEBUG,
+ ORBSVCS_ERROR((LM_ERROR,
"(%P|%t) ImR Activator: Unique instance already running pid <%d>\n",
static_cast<int> (pid)));
}
char reason[32];
ACE_OS::snprintf (reason,32,"pid:%d",static_cast<int> (pid));
- throw ImplementationRepository::CannotActivate(
- CORBA::string_dup (reason));
+ throw ImplementationRepository::CannotActivate(CORBA::string_dup (reason));
}
size_t const cmdline_buf_len = ACE_OS::strlen(cmdline);
@@ -497,7 +498,7 @@ ImR_Activator_i::start_server(const char* name,
// handles. This includes stdin, stdout, logs, etc.
proc_opts.handle_inheritance (0);
- // We always enable the unicode environmet buffer on Windows. This works
+ // We always enable the unicode environment buffer on Windows. This works
// around a 32kb environment buffer limitation. This must come before any of
// the setenv() calls, since the first of those will copy the current
// process's environment.
@@ -555,10 +556,25 @@ ImR_Activator_i::start_server(const char* name,
{
ORBSVCS_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%P|%t) ImR Activator: Notifying ImR that ")
- ACE_TEXT ("<%C> has started.\n"),
- name));
+ ACE_TEXT ("<%C> has started with pid <%d>.\n"),
+ name, static_cast<int> (pid)));
+ }
+ try
+ {
+ this->locator_->spawn_pid (name, pid);
+ }
+ catch (const CORBA::Exception &ex)
+ {
+ if (debug_ > 1)
+ {
+ ex._tao_print_exception ("ImR_Activator_i::start_server");
+ ORBSVCS_ERROR ((LM_ERROR,
+ ACE_TEXT ("(%P|%t) ImR Activator: From locator::spawn_pid for server <%C> pid <%d>\n"),
+ name,
+ static_cast<int> (pid)));
+ }
+ throw ImplementationRepository::CannotActivate(CORBA::string_dup ("Invocation of spawn_pid failed"));
}
- this->locator_->spawn_pid (name, pid);
}
}
}
@@ -604,9 +620,9 @@ ImR_Activator_i::handle_exit_i (pid_t pid)
{
if (debug_ > 1)
{
- ORBSVCS_DEBUG ((LM_DEBUG,
- ACE_TEXT ("(%P|%t) ImR Activator: caught <%C> from locator::child_death_pid for server <%C> pid <%d>\n"),
- ex._name(),
+ ex._tao_print_exception ("ImR_Activator_i::handle_exit_i");
+ ORBSVCS_ERROR ((LM_ERROR,
+ ACE_TEXT ("(%P|%t) ImR Activator: from locator::child_death_pid for server <%C> pid <%d>\n"),
name.c_str (),
static_cast<int> (pid)));
}
diff --git a/TAO/orbsvcs/ImplRepo_Service/ImR_Locator.idl b/TAO/orbsvcs/ImplRepo_Service/ImR_Locator.idl
index 078c935203c..e4ca1b9a665 100644
--- a/TAO/orbsvcs/ImplRepo_Service/ImR_Locator.idl
+++ b/TAO/orbsvcs/ImplRepo_Service/ImR_Locator.idl
@@ -6,22 +6,20 @@ module ImplementationRepository
interface Locator : AdministrationExt
{
- /// returns a token that can be used (along with activator name) to
+ /// Register an activator
+ /// @return Returns a token that can be used (along with activator name) to
/// unregister the activator.
long register_activator (in string name, in Activator act);
- /// You must pass in the token returned from register_activator.
+ /// Unregister an activator. You must pass in the token
+ /// returned from register_activator.
void unregister_activator (in string name, in long token);
- /// The ImR_Activator calls this method to notify death of child
- /// process that it had started.
- void notify_child_death (in string name);
-
- /// Newer Activators call this method to notify death of child
+ /// Activators call this method to notify death of child
/// process including pid to disambiguate child instances
void child_death_pid (in string name, in long pid);
- /// Newer Activators call this method to notify spawn of child
+ /// Activators call this method to notify spawn of child
/// process to supply pid for reference
void spawn_pid (in string name, in long pid);
};
@@ -49,7 +47,6 @@ module ImplementationRepository
{
AAM_INIT,
AAM_SERVER_STARTED_RUNNING,
- AAM_ACTIVATION_SENT,
AAM_WAIT_FOR_RUNNING,
AAM_WAIT_FOR_PING,
AAM_WAIT_FOR_ALIVE,
diff --git a/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.cpp b/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.cpp
index ab6170391e6..0d79c2a81c6 100644
--- a/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.cpp
+++ b/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.cpp
@@ -21,22 +21,6 @@
#include "ace/Vector_T.h"
#include "ace/Task.h"
-class ORB_Runner : public ACE_Task_Base
-{
-public:
- ORB_Runner (CORBA::ORB_ptr o)
- : orb_ (CORBA::ORB::_duplicate (o))
- { }
-
- int svc (void)
- {
- this->orb_->run ();
- return 0;
- }
-private:
- CORBA::ORB_var orb_;
-};
-
/// We want to give shutdown a little more time to work, so that we
/// can guarantee to the tao_imr utility that it has shutdown. The tao_imr
/// utility prints a different message depending on whether shutdown succeeds
@@ -198,8 +182,9 @@ ImR_Locator_i::init_with_orb (CORBA::ORB_ptr orb)
{
// We have read an existing configuration from the repository
// and when a server is not alive we reset it, it could have
- // been shutdown when we where offline
- this->pinger_.remove_server (active->ping_id());
+ // been shutdown when we where offline. We don't know its process
+ // id so pass zero
+ this->pinger_.remove_server (active->ping_id(), 0);
info.edit()->reset_runtime ();
active->reset_runtime ();
continue;
@@ -267,14 +252,12 @@ ImR_Locator_i::run (void)
ACE_TEXT ("\tPing Interval : %dms\n")
ACE_TEXT ("\tStartup Timeout : %ds\n")
ACE_TEXT ("\tPersistence : %s\n")
- ACE_TEXT ("\tMulticast : %C\n")
- ACE_TEXT ("\tThreads : %d\n"),
+ ACE_TEXT ("\tMulticast : %C\n"),
this->opts_->ping_interval ().msec (),
this->opts_->startup_timeout ().sec (),
this->repository_->repo_mode (),
(this->repository_->multicast () != 0 ?
- "Enabled" : "Disabled"),
- this->opts_->threads () ));
+ "Enabled" : "Disabled")));
ORBSVCS_DEBUG ((LM_DEBUG,
ACE_TEXT ("\tDebug : %d\n")
ACE_TEXT ("\tReadOnly : %C\n\n"),
@@ -283,16 +266,8 @@ ImR_Locator_i::run (void)
}
this->auto_start_servers ();
- if (true /* this->opts_->threads () == 1 */)
- {
- this->orb_->run ();
- }
- else
- {
- ORB_Runner runner (this->orb_);
- runner.activate (THR_NEW_LWP | THR_JOINABLE, this->opts_->threads ());
- runner.wait ();
- }
+ this->orb_->run ();
+
return 0;
}
@@ -339,8 +314,7 @@ ImR_Locator_i::shutdown
++shutdown_errs;
if (debug_ > 1)
{
- ex._tao_print_exception (
- ACE_TEXT ("(%P|%t) ImR: shutdown activator"));
+ ex._tao_print_exception (ACE_TEXT ("(%P|%t) ImR: shutdown activator"));
}
}
}
@@ -509,9 +483,11 @@ void
ImR_Locator_i::child_death_i (const char* name, int pid)
{
if (debug_ > 1)
- ORBSVCS_DEBUG ((LM_DEBUG,
- ACE_TEXT ("(%P|%t) ImR: Server[%d] has died <%C>.\n"),
- pid, name));
+ {
+ ORBSVCS_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P|%t) ImR: Server <%C> has died with pid <%d>.\n"),
+ name, pid));
+ }
this->pinger_.remove_server (name, pid);
AsyncAccessManager_ptr aam (this->find_aam (name, false));
@@ -529,19 +505,11 @@ ImR_Locator_i::child_death_i (const char* name, int pid)
else
{
if (debug_ > 1)
- ORBSVCS_DEBUG ((LM_DEBUG,
- ACE_TEXT ("(%P|%t) ImR: Failed to find server/pid in repository.\n")));
+ {
+ ORBSVCS_ERROR ((LM_ERROR,
+ ACE_TEXT ("(%P|%t) ImR: Failed to find server/pid in repository.\n")));
+ }
}
-
-}
-
-void
-ImR_Locator_i::notify_child_death
-(ImplementationRepository::AMH_LocatorResponseHandler_ptr _tao_rh,
- const char* name)
-{
- this->child_death_i (name, 0);
- _tao_rh->notify_child_death ();
}
void
@@ -559,8 +527,10 @@ ImR_Locator_i::spawn_pid
const char* name, CORBA::Long pid)
{
if (debug_ > 1)
- ORBSVCS_DEBUG ((LM_DEBUG, ACE_TEXT ("(%P|%t) ImR: Server<%d> spawned <%C>.\n"),
- pid, name));
+ {
+ ORBSVCS_DEBUG ((LM_DEBUG, ACE_TEXT ("(%P|%t) ImR: Server <%C> spawned with pid <%d>.\n"),
+ name, pid));
+ }
UpdateableServerInfo info(this->repository_, name);
if (!info.null ())
@@ -568,8 +538,8 @@ ImR_Locator_i::spawn_pid
if (debug_ > 4)
{
ORBSVCS_DEBUG ((LM_DEBUG,
- ACE_TEXT ("(%P|%t) ImR: Spawn_pid prev pid was <%d> becoming <%d>\n"),
- info.edit ()->active_info ()->pid, pid));
+ ACE_TEXT ("(%P|%t) ImR: Server <%C> spawn_pid prev pid was <%d> becoming <%d>\n"),
+ name, info.edit ()->active_info ()->pid, pid));
}
AsyncAccessManager_ptr aam (this->find_aam (name, true));
@@ -587,9 +557,11 @@ ImR_Locator_i::spawn_pid
else
{
if (debug_ > 1)
- ORBSVCS_DEBUG ((LM_DEBUG,
- ACE_TEXT ("(%P|%t) ImR: Failed to find server <%C> in repository\n"),
- name));
+ {
+ ORBSVCS_ERROR ((LM_ERROR,
+ ACE_TEXT ("(%P|%t) ImR: Failed to find server <%C> in repository\n"),
+ name));
+ }
}
this->pinger_.set_pid (name, pid);
@@ -751,8 +723,10 @@ ImR_Locator_i::set_timeout_policy (CORBA::Object_ptr obj, const ACE_Time_Value&
}
catch (const CORBA::Exception& ex)
{
- ex._tao_print_exception (
- ACE_TEXT ("(%P|%t) ImR_Locator_i::set_timeout_policy ()"));
+ if (debug_ > 0)
+ {
+ ex._tao_print_exception (ACE_TEXT ("(%P|%t) ImR_Locator_i::set_timeout_policy ()"));
+ }
}
return ret._retn ();
@@ -803,7 +777,7 @@ ImR_Locator_i::add_or_update_server
if (debug_ > 1)
{
// Note : The info var may be null, so we use options.
- ORBSVCS_DEBUG ((LM_DEBUG, ACE_TEXT ("(%P|%t) ImR: Server: %C\n")
+ ORBSVCS_DEBUG ((LM_DEBUG, ACE_TEXT ("(%P|%t) ImR: Server: <%C>\n")
ACE_TEXT ("\tActivator: <%C>\n")
ACE_TEXT ("\tCommand Line: <%C>\n")
ACE_TEXT ("\tWorking Directory: <%C>\n")
@@ -947,18 +921,31 @@ void
ImR_Locator_i::remove_server_i (const Server_Info_Ptr &info)
{
if (debug_ > 1)
+ {
ORBSVCS_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%P|%t) ImR: Removing Server <%C>...\n"),
info->key_name_.c_str()));
+ }
ACE_CString poa_name = info->poa_name;
if (this->repository_->remove_server (info->key_name_, this) == 0)
{
this->destroy_poa (poa_name);
if (debug_ > 0)
+ {
ORBSVCS_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%P|%t) ImR: Removed Server <%C>.\n"),
info->key_name_.c_str()));
+ }
+ }
+ else
+ {
+ if (debug_ > 0)
+ {
+ ORBSVCS_ERROR ((LM_ERROR,
+ ACE_TEXT ("(%P|%t) ImR: Cannot find server <%C>.\n"),
+ info->key_name_.c_str()));
+ }
}
}
@@ -1157,8 +1144,20 @@ ImR_Locator_i::shutdown_server_i (const Server_Info_Ptr &si,
DEFAULT_SHUTDOWN_TIMEOUT);
ImplementationRepository::ServerObject_var server =
ImplementationRepository::ServerObject::_unchecked_narrow (obj.in ());
- server->shutdown ();
- return true;
+ if (CORBA::is_nil(server.in ()))
+ {
+ if (debug_ > 1)
+ {
+ ORBSVCS_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P|%t) ImR: ServerObject reference with timeout is nil.\n")));
+ return false;
+ }
+ }
+ else
+ {
+ server->shutdown ();
+ return true;
+ }
}
catch (const CORBA::TIMEOUT &ex)
{
@@ -1192,7 +1191,7 @@ ImR_Locator_i::shutdown_server_i (const Server_Info_Ptr &si,
}
catch (const CORBA::TRANSIENT& ex)
{
- CORBA::ULong minor = ex.minor () & TAO_MINOR_MASK;
+ CORBA::ULong const minor = ex.minor () & TAO_MINOR_MASK;
if (minor != TAO_POA_DISCARDING && minor != TAO_POA_HOLDING)
{
info.edit ()->reset_runtime ();
@@ -1318,7 +1317,7 @@ ImR_Locator_i::server_is_running
return;
}
info.server_info (si);
- this->pinger_.add_server (si->ping_id (), this->opts_->ping_external (), srvobj.in());
+ this->pinger_.add_server (si->ping_id (), this->opts_->ping_external (), srvobj.in(), info->active_info ()->pid);
ACE_GUARD (TAO_SYNCH_MUTEX, mon, this->lock_);
AsyncAccessManager_ptr aam (this->create_aam (info, true));
@@ -1338,7 +1337,8 @@ ImR_Locator_i::server_is_running
info.edit ()->set_contact (partial_ior, sior.in(), srvobj.in());
info.update_repo();
- this->pinger_.add_server (info->ping_id(), true, srvobj.in());
+ // Add the server to our pinger list
+ this->pinger_.add_server (info->ping_id(), true, srvobj.in(), info->pid);
aam = this->find_aam (info->ping_id ());
}
@@ -1397,13 +1397,15 @@ ImR_Locator_i::server_is_shutting_down
}
if (debug_ > 0)
- ORBSVCS_DEBUG ((LM_DEBUG,
- ACE_TEXT ("(%P|%t) ImR: Server <%C> is shutting down\n"),
- fqname));
+ {
+ ORBSVCS_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P|%t) ImR: Server <%C> is shutting down\n"),
+ fqname));
+ }
if (!info->is_mode(ImplementationRepository::PER_CLIENT))
{
- this->pinger_.remove_server (info->ping_id());
+ this->pinger_.remove_server (info->ping_id(), info->pid);
{
AsyncAccessManager_ptr aam = this->find_aam (info->ping_id (), false);
if (aam.is_nil())
@@ -1586,7 +1588,8 @@ ImR_Locator_i::connect_server (UpdateableServerInfo& info)
{
this->pinger_.add_server (sip->key_name_.c_str(),
this->opts_->ping_external (),
- sip->server.in());
+ sip->server.in(),
+ sip->pid);
}
return; // already connected
}
@@ -1624,7 +1627,8 @@ ImR_Locator_i::connect_server (UpdateableServerInfo& info)
sip->key_name_.c_str ()));
this->pinger_.add_server (sip->key_name_.c_str(),
this->opts_->ping_external (),
- sip->server.in());
+ sip->server.in(),
+ sip->pid);
}
diff --git a/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.h b/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.h
index 92a54053b0e..0b5466381d0 100644
--- a/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.h
+++ b/TAO/orbsvcs/ImplRepo_Service/ImR_Locator_i.h
@@ -76,10 +76,6 @@ public:
const char* name,
CORBA::Long token);
- virtual void notify_child_death
- (ImplementationRepository::AMH_LocatorResponseHandler_ptr _tao_rh,
- const char* name);
-
virtual void child_death_pid
(ImplementationRepository::AMH_LocatorResponseHandler_ptr _tao_rh,
const char* name, CORBA::Long pid);
diff --git a/TAO/orbsvcs/ImplRepo_Service/ImplRepo_Service.mpc b/TAO/orbsvcs/ImplRepo_Service/ImplRepo_Service.mpc
index 2f2d1bafca6..bf8b9c5de39 100644
--- a/TAO/orbsvcs/ImplRepo_Service/ImplRepo_Service.mpc
+++ b/TAO/orbsvcs/ImplRepo_Service/ImplRepo_Service.mpc
@@ -42,7 +42,7 @@ project(ImR_Activator_IDL) : orbsvcslib, orbsvcs_output, conv_lib, valuetype, dy
-I$(TAO_ROOT)/tao/ImR_Client
idl_files {
- idlflags += -GH -GC
+ idlflags += -GH -GC
ImR_Activator.idl
}
source_files {
diff --git a/TAO/orbsvcs/ImplRepo_Service/LiveCheck.cpp b/TAO/orbsvcs/ImplRepo_Service/LiveCheck.cpp
index 576c744eb74..87f6317cfe1 100644
--- a/TAO/orbsvcs/ImplRepo_Service/LiveCheck.cpp
+++ b/TAO/orbsvcs/ImplRepo_Service/LiveCheck.cpp
@@ -102,7 +102,7 @@ LiveEntry::set_reping_limit (int max)
}
bool
-LiveEntry::reping_available (void)
+LiveEntry::reping_available (void) const
{
return this->repings_ < this->max_retry_;
}
@@ -129,7 +129,8 @@ LiveEntry::max_retry_msec (int msec)
LiveEntry::LiveEntry (LiveCheck *owner,
const char *server,
bool may_ping,
- ImplementationRepository::ServerObject_ptr ref)
+ ImplementationRepository::ServerObject_ptr ref,
+ int pid)
: owner_ (owner),
server_ (server),
ref_ (ImplementationRepository::ServerObject::_duplicate (ref)),
@@ -141,13 +142,13 @@ LiveEntry::LiveEntry (LiveCheck *owner,
listeners_ (),
lock_ (),
callback_ (0),
- pid_ (0)
+ pid_ (pid)
{
if (ImR_Locator_i::debug () > 4)
{
ORBSVCS_DEBUG ((LM_DEBUG,
- ACE_TEXT ("(%P|%t) LiveEntry::ctor server <%C> may_ping <%d>\n"),
- server, may_ping));
+ ACE_TEXT ("(%P|%t) LiveEntry::ctor server <%C> may_ping <%d> pid <%d>\n"),
+ server, may_ping, pid));
}
}
@@ -214,7 +215,7 @@ LiveEntry::reset_status (void)
if (ImR_Locator_i::debug () > 2)
{
ORBSVCS_DEBUG ((LM_DEBUG,
- ACE_TEXT ("(%P|%t) LiveEntry::reset_status this <%x>, ")
+ ACE_TEXT ("(%P|%t) LiveEntry::reset_status this <%x> ")
ACE_TEXT ("server <%C> status <%C>\n"),
this, this->server_.c_str(),
status_name (this->liveliness_)));
@@ -291,7 +292,7 @@ LiveEntry::status (LiveStatus l)
}
this->update_listeners ();
- if (this->listeners_.size() > 0)
+ if (!this->listeners_.is_empty ())
{
if (ImR_Locator_i::debug () > 2)
{
@@ -330,8 +331,14 @@ LiveEntry::set_pid (int pid)
this->pid_ = pid;
}
+int
+LiveEntry::pid (void) const
+{
+ return this->pid_;
+}
+
bool
-LiveEntry::has_pid (int pid)
+LiveEntry::has_pid (int pid) const
{
return this->pid_ == 0 || pid == 0 || pid == this->pid_;
}
@@ -341,15 +348,15 @@ LiveEntry::validate_ping (bool &want_reping, ACE_Time_Value& next)
{
if (this->liveliness_ == LS_PING_AWAY ||
this->liveliness_ == LS_DEAD ||
- this->listeners_.size () == 0)
+ this->listeners_.is_empty ())
{
if (ImR_Locator_i::debug () > 4)
{
ORBSVCS_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%P|%t) LiveEntry::validate_ping, status ")
- ACE_TEXT ("<%C>, listeners <%d> server <%C>\n"),
+ ACE_TEXT ("<%C> listeners <%d> server <%C> pid <%d>\n"),
status_name (this->liveliness_), this->listeners_.size (),
- this->server_.c_str()));
+ this->server_.c_str(), this->pid_));
}
return false;
}
@@ -367,10 +374,10 @@ LiveEntry::validate_ping (bool &want_reping, ACE_Time_Value& next)
{
ORBSVCS_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%P|%t) LiveEntry::validate_ping, ")
- ACE_TEXT ("status <%C>, listeners <%d>, ")
- ACE_TEXT ("msec <%d> server <%C>\n"),
+ ACE_TEXT ("status <%C> listeners <%d> ")
+ ACE_TEXT ("msec <%d> server <%C> pid <%d>\n"),
status_name (this->liveliness_), this->listeners_.size (),
- msec, this->server_.c_str()));
+ msec, this->server_.c_str(), this->pid_));
}
return false;
}
@@ -389,7 +396,7 @@ LiveEntry::validate_ping (bool &want_reping, ACE_Time_Value& next)
case LS_TRANSIENT:
case LS_LAST_TRANSIENT:
{
- int ms = this->next_reping ();
+ int const ms = this->next_reping ();
if (ms != -1)
{
ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, mon, this->lock_, false);
@@ -404,8 +411,8 @@ LiveEntry::validate_ping (bool &want_reping, ACE_Time_Value& next)
ORBSVCS_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%P|%t) LiveEntry::validate_ping, ")
ACE_TEXT ("transient, reping in <%d> ms, ")
- ACE_TEXT ("server <%C>\n"),
- ms, this->server_.c_str()));
+ ACE_TEXT ("server <%C> pid <%d>\n"),
+ ms, this->server_.c_str(), this->pid_));
}
}
else
@@ -420,10 +427,10 @@ LiveEntry::validate_ping (bool &want_reping, ACE_Time_Value& next)
ORBSVCS_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%P|%t) LiveEntry::validate_ping, ")
ACE_TEXT ("transient, no more repings, ")
- ACE_TEXT ("server <%C>\n"),
- this->server_.c_str()));
+ ACE_TEXT ("server <%C> pid <%d>\n"),
+ this->server_.c_str(), this->pid_));
}
- if (this->listeners_.size() > 0)
+ if (!this->listeners_.is_empty ())
{
this->update_listeners ();
}
@@ -609,21 +616,32 @@ LC_TimeoutGuard::LC_TimeoutGuard (LiveCheck *owner, LC_token_type token)
token_ (token),
blocked_ (owner->in_handle_timeout ())
{
- if (!blocked_)
+ if (ImR_Locator_i::debug () > 3)
{
- owner_->enter_handle_timeout ();
+ ORBSVCS_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P|%t) LC_TimeoutGuard(%d)::ctor, ")
+ ACE_TEXT ("blocked <%d>\n"),
+ this->token_, this->blocked_));
}
+ owner_->enter_handle_timeout ();
}
LC_TimeoutGuard::~LC_TimeoutGuard (void)
{
- if (blocked_)
- {
- return;
- }
-
owner_->exit_handle_timeout ();
+ if (blocked_)
+ {
+ if (ImR_Locator_i::debug () > 3)
+ {
+ ORBSVCS_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P|%t) LC_TimeoutGuard(%d)::dtor, ")
+ ACE_TEXT ("doing nothing because our owner is blocked\n"),
+ this->token_));
+ }
+ return;
+ }
+
owner_->remove_deferred_servers ();
if (owner_->want_timeout_)
@@ -639,7 +657,7 @@ LC_TimeoutGuard::~LC_TimeoutGuard (void)
if (ImR_Locator_i::debug () > 2)
{
ORBSVCS_DEBUG ((LM_DEBUG,
- ACE_TEXT ("(%P|%t) LC_TimeoutGuard(%d)::dtor,")
+ ACE_TEXT ("(%P|%t) LC_TimeoutGuard(%d)::dtor, ")
ACE_TEXT ("scheduling new timeout(%d), delay = %d,%d\n"),
this->token_, owner_->token_, delay.sec(), delay.usec()));
}
@@ -653,14 +671,14 @@ LC_TimeoutGuard::~LC_TimeoutGuard (void)
if (ImR_Locator_i::debug () > 3)
{
ORBSVCS_DEBUG ((LM_DEBUG,
- ACE_TEXT ("(%P|%t) LC_TimeoutGuard(%d)::dtor,")
+ ACE_TEXT ("(%P|%t) LC_TimeoutGuard(%d)::dtor, ")
ACE_TEXT ("no pending timeouts requested\n"),
this->token_));
}
}
}
-bool LC_TimeoutGuard::blocked (void)
+bool LC_TimeoutGuard::blocked (void) const
{
return this->blocked_;
}
@@ -672,7 +690,7 @@ LiveCheck::LiveCheck ()
:ping_interval_(),
running_ (false),
token_ (100),
- handle_timeout_busy_ (1),
+ handle_timeout_busy_ (0),
want_timeout_ (false),
deferred_timeout_ (0,0)
{
@@ -697,19 +715,19 @@ LiveCheck::~LiveCheck (void)
void
LiveCheck::enter_handle_timeout (void)
{
- --this->handle_timeout_busy_;
+ ++this->handle_timeout_busy_;
}
void
LiveCheck::exit_handle_timeout (void)
{
- ++this->handle_timeout_busy_;
+ --this->handle_timeout_busy_;
}
bool
LiveCheck::in_handle_timeout (void)
{
- return this->handle_timeout_busy_ == 0;
+ return this->handle_timeout_busy_ != 0;
}
void
@@ -769,8 +787,8 @@ LiveCheck::handle_timeout (const ACE_Time_Value &,
{
ORBSVCS_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%P|%t) LiveCheck::handle_timeout(%d)")
- ACE_TEXT (", ping sent\n"),
- token));
+ ACE_TEXT (", ping sent to server <%C>\n"),
+ token, entry->server_name ()));
}
}
else
@@ -779,8 +797,8 @@ LiveCheck::handle_timeout (const ACE_Time_Value &,
{
ORBSVCS_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%P|%t) LiveCheck::handle_timeout(%d)")
- ACE_TEXT (", ping skipped\n"),
- token));
+ ACE_TEXT (", ping skipped for server <%C>\n"),
+ token, entry->server_name ()));
}
}
}
@@ -821,14 +839,15 @@ LiveCheck::has_server (const char *server)
void
LiveCheck::add_server (const char *server,
bool may_ping,
- ImplementationRepository::ServerObject_ptr ref)
+ ImplementationRepository::ServerObject_ptr ref,
+ int pid)
{
if (ImR_Locator_i::debug () > 2)
{
ORBSVCS_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%P|%t) LiveCheck::add_server <%C> ")
- ACE_TEXT ("running <%d>\n"),
- server, this->running_));
+ ACE_TEXT ("running <%d> pid <%d>\n"),
+ server, this->running_, pid));
}
if (!this->running_)
@@ -836,7 +855,7 @@ LiveCheck::add_server (const char *server,
ACE_CString s (server);
LiveEntry *entry = 0;
- ACE_NEW (entry, LiveEntry (this, server, may_ping, ref));
+ ACE_NEW (entry, LiveEntry (this, server, may_ping, ref, pid));
int result = entry_map_.bind (s, entry);
if (result != 0)
{
@@ -853,6 +872,12 @@ LiveCheck::add_server (const char *server,
void
LiveCheck::set_pid (const char *server, int pid)
{
+ if (ImR_Locator_i::debug () > 0)
+ {
+ ORBSVCS_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P|%t) LiveCheck::set_pid <%C> pid <%d>\n"),
+ server, pid));
+ }
ACE_CString s(server);
LiveEntry *entry = 0;
int const result = entry_map_.find (s, entry);
@@ -860,18 +885,39 @@ LiveCheck::set_pid (const char *server, int pid)
{
entry->set_pid (pid);
}
+ else
+ {
+ if (ImR_Locator_i::debug () > 0)
+ {
+ ORBSVCS_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P|%t) LiveCheck::set_pid <%C> pid <%d> cannot find entry\n"),
+ server, pid));
+ }
+ }
}
void
LiveCheck::remove_server (const char *server, int pid)
{
+ if (ImR_Locator_i::debug () > 0)
+ {
+ ORBSVCS_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P|%t) LiveCheck::remove_server <%C> pid <%d>\n"),
+ server, pid));
+ }
ACE_CString s(server);
LiveEntry *entry = 0;
int const result = entry_map_.find (s, entry);
- if (result != -1 && entry->has_pid (pid))
+ if (result != -1 && entry != 0 && entry->has_pid (pid))
{
if (!this->in_handle_timeout ())
{
+ if (ImR_Locator_i::debug () > 0)
+ {
+ ORBSVCS_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P|%t) LiveCheck::remove_server removing <%C> pid <%d> entry pid <%d> status <%C>\n "),
+ server, pid, entry->pid (), LiveEntry::status_name (entry->status ())));
+ }
if (entry_map_.unbind (s, entry) == 0)
{
delete entry;
@@ -879,23 +925,38 @@ LiveCheck::remove_server (const char *server, int pid)
}
else
{
+ // We got a request to remove the server but we are in handle timeout, so we have to postpone
+ // the remove. We do set the status to dead so that we make sure that we only remove later
+ // on the dead server and not a possible restart
+ entry->status (LS_DEAD);
+
if (ImR_Locator_i::debug () > 0)
{
ORBSVCS_DEBUG ((LM_DEBUG,
- ACE_TEXT ("(%P|%t) LiveCheck::remove_server <%C> ")
- ACE_TEXT ("called during handle_timeout\n"), server));
+ ACE_TEXT ("(%P|%t) LiveCheck::remove_server <%C> pid <%d> entry pid <%d> status <%C> ")
+ ACE_TEXT ("called during handle_timeout\n"), server, pid, entry->pid (), LiveEntry::status_name (entry->status ())));
}
- this->removed_entries_.insert_tail (s);
+ this->removed_entries_.insert_tail (std::make_pair (s, pid));
}
}
else
{
- if (entry != 0 && ImR_Locator_i::debug () > 0)
+ if (ImR_Locator_i::debug () > 0)
{
- ORBSVCS_DEBUG ((LM_DEBUG,
- ACE_TEXT ("(%P|%t) LiveCheck::remove_server <%C> ")
- ACE_TEXT ("pid <%d> does not match entry\n"),
- server, pid));
+ if (entry == 0)
+ {
+ ORBSVCS_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P|%t) LiveCheck::remove_server <%C> ")
+ ACE_TEXT ("Can't find server entry, server probably already removed earlier\n"),
+ server));
+ }
+ else
+ {
+ ORBSVCS_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P|%t) LiveCheck::remove_server <%C> ")
+ ACE_TEXT ("pid <%d> does not match entry pid <%d>\n"),
+ server, pid, entry->pid ()));
+ }
}
}
}
@@ -903,29 +964,91 @@ LiveCheck::remove_server (const char *server, int pid)
void
LiveCheck::remove_deferred_servers (void)
{
- if (this->removed_entries_.size () == 0)
- return;
-
- NameStack::iterator re_end = this->removed_entries_.end();
- for (NameStack::iterator re = this->removed_entries_.begin();
- re != re_end;
- ++re)
+ if (!this->removed_entries_.is_empty ())
{
- if (ImR_Locator_i::debug () > 0)
+ // When we are in handle_timeout we can't remove deferred servers
+ if (!this->in_handle_timeout ())
{
- ORBSVCS_DEBUG ((LM_DEBUG,
- ACE_TEXT ("(%P|%t) LiveCheck::remove_deferred_entries ")
- ACE_TEXT ("removing <%C>\n"), (*re).c_str()));
+ NamePidStack::iterator re_end = this->removed_entries_.end();
+ for (NamePidStack::iterator re = this->removed_entries_.begin();
+ re != re_end;
+ ++re)
+ {
+ NamePidPair const & name_pid_pair = (*re);
+ if (ImR_Locator_i::debug () > 4)
+ {
+ ORBSVCS_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P|%t) LiveCheck::remove_deferred_servers ")
+ ACE_TEXT ("removing <%C> pid <%d>\n"),
+ name_pid_pair.first.c_str(), name_pid_pair.second));
+ }
+ // Now try to remove the server, we have to make sure
+ // that we only remove the server when the
+ // name and pid match. These could potentially not
+ // match when the server has already been restarted between the
+ // moment it got in the removed_entries_ stack and this point
+ // where we remove it from the internal administration
+ LiveEntry *entry = 0;
+ int const result = entry_map_.find (name_pid_pair.first, entry);
+ if (result != -1 && entry != 0)
+ {
+ if (entry->pid () == name_pid_pair.second)
+ {
+ if (entry->status () == LS_DEAD)
+ {
+ // We have a matched process id
+ if (ImR_Locator_i::debug () > 4)
+ {
+ ORBSVCS_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P|%t) LiveCheck::remove_deferred_servers <%C> ")
+ ACE_TEXT ("removing dead server using matched pid <%d>\n"),
+ name_pid_pair.first.c_str(), name_pid_pair.second));
+ }
+ if (entry_map_.unbind (name_pid_pair.first, entry) == 0)
+ {
+ delete entry;
+ }
+ }
+ else
+ {
+ ORBSVCS_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P|%t) LiveCheck::remove_deferred_servers <%C> ")
+ ACE_TEXT ("matched pid <%d> but is not dead but <%C>\n"),
+ name_pid_pair.first.c_str(), name_pid_pair.second, LiveEntry::status_name (entry->status ())));
+ }
+ }
+ else
+ {
+ ORBSVCS_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P|%t) LiveCheck::remove_deferred_servers <%C> ")
+ ACE_TEXT ("pid <%d> does not match entry pid <%d>\n"),
+ name_pid_pair.first.c_str(), name_pid_pair.second, entry->pid ()));
+ }
+ }
+ else
+ {
+ if (ImR_Locator_i::debug () > 0)
+ {
+ ORBSVCS_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P|%t) LiveCheck::remove_deferred_servers <%C> ")
+ ACE_TEXT ("Can't find server entry, server probably already removed earlier\n"),
+ name_pid_pair.first.c_str()));
+ }
+ }
+ }
+ this->removed_entries_.reset ();
}
- LiveEntry *entry = 0;
- int const result = entry_map_.unbind (*re, entry);
- if (result == 0)
+ else
{
- delete entry;
+ if (ImR_Locator_i::debug () > 0)
+ {
+ ORBSVCS_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("(%P|%t) LiveCheck::remove_deferred_servers ")
+ ACE_TEXT ("Can't remove <%d> servers because we are still in handle timeout\n"),
+ this->removed_entries_.size ()));
+ }
}
}
- this->removed_entries_.reset ();
-
}
bool
@@ -942,7 +1065,7 @@ LiveCheck::add_per_client_listener (LiveListener *l,
return false;
LiveEntry *entry = 0;
- ACE_NEW_RETURN (entry, LiveEntry (this, l->server (), true, ref), false);
+ ACE_NEW_RETURN (entry, LiveEntry (this, l->server (), true, ref, 0), false);
if (this->per_client_.insert_tail(entry) == 0)
{
@@ -1024,16 +1147,16 @@ LiveCheck::schedule_ping (LiveEntry *entry)
if (!this->running_)
return false;
- LiveStatus status = entry->status();
+ LiveStatus const status = entry->status();
if (status == LS_PING_AWAY || status == LS_DEAD)
{
return status != LS_DEAD;
}
- ACE_Time_Value now (ACE_OS::gettimeofday());
- ACE_Time_Value next = entry->next_check ();
+ ACE_Time_Value const now (ACE_OS::gettimeofday());
+ ACE_Time_Value const next = entry->next_check ();
- if (!this->in_handle_timeout () )
+ if (!this->in_handle_timeout ())
{
ACE_Time_Value delay = ACE_Time_Value::zero;
if (next > now)
@@ -1080,7 +1203,7 @@ LiveCheck::schedule_ping (LiveEntry *entry)
if (ImR_Locator_i::debug () > 2)
{
ORBSVCS_DEBUG ((LM_DEBUG,
- ACE_TEXT ("(%P|%t) LiveCheck::schedule_ping deferred")));
+ ACE_TEXT ("(%P|%t) LiveCheck::schedule_ping deferred because we are in handle timeout\n")));
}
if (!this->want_timeout_ || next < this->deferred_timeout_)
{
diff --git a/TAO/orbsvcs/ImplRepo_Service/LiveCheck.h b/TAO/orbsvcs/ImplRepo_Service/LiveCheck.h
index 6bf8b811b06..fa9daf3c5ce 100644
--- a/TAO/orbsvcs/ImplRepo_Service/LiveCheck.h
+++ b/TAO/orbsvcs/ImplRepo_Service/LiveCheck.h
@@ -114,7 +114,8 @@ class Locator_Export LiveEntry
LiveEntry (LiveCheck *owner,
const char *server,
bool may_ping,
- ImplementationRepository::ServerObject_ptr ref);
+ ImplementationRepository::ServerObject_ptr ref,
+ int pid);
~LiveEntry (void);
void release_callback (void);
@@ -132,12 +133,13 @@ class Locator_Export LiveEntry
void do_ping (PortableServer::POA_ptr poa);
const ACE_Time_Value &next_check (void) const;
static void set_reping_limit (int max);
- bool reping_available (void);
+ bool reping_available (void) const;
int next_reping (void);
void max_retry_msec (int max);
const char *server_name (void) const;
void set_pid (int pid);
- bool has_pid (int pid);
+ bool has_pid (int pid) const;
+ int pid (void) const;
private:
LiveCheck *owner_;
@@ -157,7 +159,6 @@ class Locator_Export LiveEntry
static const int reping_msec_ [];
static int reping_limit_;
-
};
//---------------------------------------------------------------------------
@@ -214,16 +215,16 @@ typedef ACE_INT32 LC_token_type;
class Locator_Export LC_TimeoutGuard
{
public:
- /// construct a new stack-based guard. This sets a flag in the owner that will
+ /// Construct a new stack-based guard. This sets a flag in the owner that will
/// be cleared on destruction.
LC_TimeoutGuard (LiveCheck *owner, LC_token_type token);
- /// releases the flag. If the LiveCheck received any requests for an immediate
- /// or defered ping during this time, schedule it now.
+ /// Releases the flag. If the LiveCheck received any requests for an immediate
+ /// or deferred ping during this time, schedule it now.
~LC_TimeoutGuard (void);
- /// Returns true if the busy flag in the owner was already set.
- bool blocked (void);
+ /// Returns true if the in handle timeout in the owner was already set.
+ bool blocked (void) const;
private:
LiveCheck *owner_;
@@ -258,9 +259,10 @@ class Locator_Export LiveCheck : public ACE_Event_Handler
bool has_server (const char *server);
void add_server (const char *server,
bool may_ping,
- ImplementationRepository::ServerObject_ptr ref);
+ ImplementationRepository::ServerObject_ptr ref,
+ int pid);
void set_pid (const char *server, int pid);
- void remove_server (const char *server, int pid = 0);
+ void remove_server (const char *server, int pid);
bool remove_per_client_entry (LiveEntry *entry);
bool add_listener (LiveListener *listener);
bool add_poll_listener (LiveListener *listener);
@@ -283,7 +285,8 @@ class Locator_Export LiveCheck : public ACE_Event_Handler
ACE_Equal_To<ACE_CString>,
ACE_Null_Mutex> LiveEntryMap;
typedef ACE_Unbounded_Set<LiveEntry *> PerClientStack;
- typedef ACE_Unbounded_Set<ACE_CString> NameStack;
+ typedef std::pair<ACE_CString, int> NamePidPair;
+ typedef ACE_Unbounded_Set<NamePidPair> NamePidStack;
LiveEntryMap entry_map_;
PerClientStack per_client_;
@@ -291,10 +294,14 @@ class Locator_Export LiveCheck : public ACE_Event_Handler
ACE_Time_Value ping_interval_;
bool running_;
LC_token_type token_;
+ /// Flag to check whether we are in handle timeout. Because this can be
+ /// called re-entrant it is zero when we are not in handle timeout
int handle_timeout_busy_;
bool want_timeout_;
ACE_Time_Value deferred_timeout_;
- NameStack removed_entries_;
+ /// Contains a list of servers which got removed during the handle_timeout,
+ /// these will be removed at the end of the handle_timeout.
+ NamePidStack removed_entries_;
};
#endif /* IMR_LIVECHECK_H_ */
diff --git a/TAO/orbsvcs/ImplRepo_Service/Locator_Options.cpp b/TAO/orbsvcs/ImplRepo_Service/Locator_Options.cpp
index 5c759327e81..4f66897ae24 100644
--- a/TAO/orbsvcs/ImplRepo_Service/Locator_Options.cpp
+++ b/TAO/orbsvcs/ImplRepo_Service/Locator_Options.cpp
@@ -39,7 +39,6 @@ Options::Options ()
, imr_type_ (STANDALONE_IMR)
, throw_shutdown_exceptions_ (false)
, pinger_ (0)
-, threads_ (1)
, ft_endpoint_ ()
, ft_update_delay_ (0, DEFAULT_FT_UPDATE_DELAY)
{
@@ -279,22 +278,6 @@ Options::parse_args (int &argc, ACE_TCHAR *argv[])
this->ping_timeout_ =
ACE_Time_Value (0, 1000 * ACE_OS::atoi (shifter.get_current ()));
}
-#if 0
- else if (ACE_OS::strcasecmp (shifter.get_current (),
- ACE_TEXT ("--threads")) == 0)
- {
- shifter.consume_arg ();
-
- if (!shifter.is_anything_left () || shifter.get_current ()[0] == '-')
- {
- ORBSVCS_ERROR ((LM_ERROR,
- ACE_TEXT ("Error: --threads option needs a value\n")));
- this->print_usage ();
- return -1;
- }
- this->threads_ = ACE_OS::atoi (shifter.get_current ());
- }
-#endif
else if (ACE_OS::strcasecmp (shifter.get_current (),
ACE_TEXT ("--ftendpoint")) == 0)
{
@@ -495,10 +478,6 @@ Options::save_registry_options ()
(LPBYTE) &this->imr_type_ , sizeof (this->imr_type_));
ACE_ASSERT (err == ERROR_SUCCESS);
- err = ACE_TEXT_RegSetValueEx (key, ACE_TEXT ("Threads"), 0, REG_DWORD,
- (LPBYTE) &this->threads_ , sizeof (this->threads_));
- ACE_ASSERT (err == ERROR_SUCCESS);
-
err = ACE_TEXT_RegSetValueEx (key, ACE_TEXT ("FtEndpoint"), 0, REG_SZ,
(LPBYTE) this->ft_endpoint_.c_str (), (DWORD) this->ft_endpoint_.length () + 1);
ACE_ASSERT (err == ERROR_SUCCESS);
@@ -657,14 +636,6 @@ Options::load_registry_options ()
ACE_ASSERT (type == REG_DWORD);
}
- sz = sizeof(threads_);
- err = ACE_TEXT_RegQueryValueEx (key, ACE_TEXT ("Threads"), 0, &type,
- (LPBYTE) &this->threads_, &sz);
- if (err == ERROR_SUCCESS)
- {
- ACE_ASSERT (type == REG_DWORD);
- }
-
sz = sizeof(tmpstr);
err = ACE_TEXT_RegQueryValueEx (key, ACE_TEXT ("FtEndpoint"), 0, &type,
(LPBYTE) tmpstr, &sz);
@@ -809,12 +780,6 @@ Options::imr_type (void) const
return this->imr_type_;
}
-int
-Options::threads (void) const
-{
- return this->threads_;
-}
-
const ACE_CString &
Options::ft_endpoint (void) const
{
diff --git a/TAO/orbsvcs/ImplRepo_Service/Locator_Options.h b/TAO/orbsvcs/ImplRepo_Service/Locator_Options.h
index 73d477936ac..0000bb2bc7b 100644
--- a/TAO/orbsvcs/ImplRepo_Service/Locator_Options.h
+++ b/TAO/orbsvcs/ImplRepo_Service/Locator_Options.h
@@ -122,8 +122,6 @@ public:
enum ImrType { BACKUP_IMR, PRIMARY_IMR, STANDALONE_IMR };
ImrType imr_type(void) const;
- int threads (void) const;
-
const ACE_CString &ft_endpoint (void) const;
ACE_Time_Value ft_update_delay (void) const;
@@ -203,8 +201,6 @@ private:
LiveCheck *pinger_;
- int threads_;
-
ACE_CString ft_endpoint_;
ACE_Time_Value ft_update_delay_;
diff --git a/TAO/orbsvcs/ImplRepo_Service/Locator_Repository.cpp b/TAO/orbsvcs/ImplRepo_Service/Locator_Repository.cpp
index 391ed6e9600..a5559fa0d27 100644
--- a/TAO/orbsvcs/ImplRepo_Service/Locator_Repository.cpp
+++ b/TAO/orbsvcs/ImplRepo_Service/Locator_Repository.cpp
@@ -331,7 +331,7 @@ Locator_Repository::unregister_if_address_reused (const ACE_CString& fqname,
ACE_TEXT ("(%P|%t) ImR: reuse address <%C> so remove server <%C>\n"),
info->partial_ior.c_str (), info->poa_name.c_str ()));
}
- imr_locator->pinger ().remove_server (info->key_name_.c_str());
+ imr_locator->pinger ().remove_server (info->key_name_.c_str(), info->pid);
AsyncAccessManager_ptr aam = imr_locator->find_aam (info->key_name_.c_str ());
if (!aam.is_nil())
{
@@ -483,7 +483,7 @@ Locator_Repository::get_active_server (const ACE_CString& name, int pid)
if (name.find ("JACORB:") == ACE_CString::npos)
{
ACE_CString jo_key ("JACORB:");
- ACE_CString::size_type pos = name.find (':');
+ ACE_CString::size_type const pos = name.find (':');
if (pos == ACE_CString::npos)
{
jo_key += name;
@@ -509,7 +509,7 @@ Locator_Repository::get_active_server (const ACE_CString& name, int pid)
{
ORBSVCS_DEBUG ((LM_DEBUG,
ACE_TEXT ("(%P|%t) ImR: get_active_server could not")
- ACE_TEXT (" find <%C>, pid <%d> != <%d>\n"),
+ ACE_TEXT (" find <%C> pid <%d> != <%d>\n"),
name.c_str(), pid, si->pid));
}
si.reset ();
@@ -521,7 +521,7 @@ int
Locator_Repository::remove_server (const ACE_CString& name,
ImR_Locator_i* imr_locator)
{
- int err = sync_load ();
+ int const err = sync_load ();
if (err != 0)
{
return err;
@@ -557,7 +557,7 @@ Locator_Repository::remove_server (const ACE_CString& name,
for (CORBA::ULong i = 0; i < si->peers.length(); i++)
{
ACE_CString key;
- ACE_CString peer (si->peers[i]);
+ ACE_CString const peer (si->peers[i]);
Server_Info::gen_key (si->server_id, peer, key);
Server_Info_Ptr si2;
diff --git a/TAO/orbsvcs/ImplRepo_Service/Locator_XMLHandler.cpp b/TAO/orbsvcs/ImplRepo_Service/Locator_XMLHandler.cpp
index 30dc886520e..a4f4145949f 100644
--- a/TAO/orbsvcs/ImplRepo_Service/Locator_XMLHandler.cpp
+++ b/TAO/orbsvcs/ImplRepo_Service/Locator_XMLHandler.cpp
@@ -39,7 +39,7 @@ Locator_XMLHandler::Locator_XMLHandler (XML_Backing_Store& repo)
static void convertEnvList (const Locator_XMLHandler::EnvList& in,
ImplementationRepository::EnvironmentList& out)
{
- CORBA::ULong sz = static_cast<CORBA::ULong> (in.size ());
+ CORBA::ULong const sz = static_cast<CORBA::ULong> (in.size ());
out.length (sz);
for (CORBA::ULong i = 0; i < sz; ++i)
{
@@ -51,7 +51,7 @@ static void convertEnvList (const Locator_XMLHandler::EnvList& in,
static void convertPeerList (const Locator_XMLHandler::PeerList& in,
CORBA::StringSeq& out)
{
- CORBA::ULong sz = static_cast<CORBA::ULong> (in.size ());
+ CORBA::ULong const sz = static_cast<CORBA::ULong> (in.size ());
out.length (sz);
for (CORBA::ULong i = 0; i < sz; ++i)
{
diff --git a/TAO/orbsvcs/ImplRepo_Service/Server_Info.h b/TAO/orbsvcs/ImplRepo_Service/Server_Info.h
index 823f136e7e1..69badf3be32 100644
--- a/TAO/orbsvcs/ImplRepo_Service/Server_Info.h
+++ b/TAO/orbsvcs/ImplRepo_Service/Server_Info.h
@@ -130,7 +130,7 @@ struct Server_Info
/// Last known process ID reported by the activator
int pid;
- /// the locator should expect a notification on server death from activator
+ /// The locator should expect a notification on server death from activator
bool death_notify;
};
diff --git a/TAO/orbsvcs/ImplRepo_Service/Shared_Backing_Store.cpp b/TAO/orbsvcs/ImplRepo_Service/Shared_Backing_Store.cpp
index eebec0f1b3f..4d1a0915e3c 100644
--- a/TAO/orbsvcs/ImplRepo_Service/Shared_Backing_Store.cpp
+++ b/TAO/orbsvcs/ImplRepo_Service/Shared_Backing_Store.cpp
@@ -161,7 +161,11 @@ namespace {
#endif
}
+#if defined (ACE_HAS_CPP11)
+ std::unique_ptr <ACE_File_Lock> file_lock_;
+#else
auto_ptr<ACE_File_Lock> file_lock_;
+#endif
FILE* file_;
int flags_;
bool locked_;
@@ -610,7 +614,7 @@ Shared_Backing_Store::init_repo(PortableServer::POA_ptr)
else
{
const ACE_Vector<ACE_TString>& filenames = listings->filenames();
- size_t sz = filenames.size ();
+ size_t const sz = filenames.size ();
for (CORBA::ULong i = 0; i < sz; ++i)
{
if (this->opts_.debug() > 9)
@@ -659,7 +663,7 @@ Shared_Backing_Store::persistent_load (bool only_changes)
}
const ACE_Vector<ACE_TString>& filenames = listings->filenames ();
- size_t sz = filenames.size ();
+ size_t const sz = filenames.size ();
if (this->opts_.debug() > 9)
{
ORBSVCS_DEBUG((LM_INFO, ACE_TEXT ("(%P|%t) persistent_load %d files\n"), sz));
@@ -731,7 +735,7 @@ Shared_Backing_Store::sync_load ()
}
else if (this->sync_needed_ == INC_SYNC)
{
- if (this->sync_files_.size () == 0)
+ if (this->sync_files_.empty ())
{
return 0;
}
@@ -941,7 +945,7 @@ Shared_Backing_Store::load_server (Server_Info *info,
this->create_server (server_started, si);
if (was_started && !is_started)
{
- this->opts_.pinger ()->remove_server (si->key_name_.c_str ());
+ this->opts_.pinger ()->remove_server (si->key_name_.c_str (), 0);
}
if (!was_started && is_started)
{
@@ -951,7 +955,8 @@ Shared_Backing_Store::load_server (Server_Info *info,
si->server = ImplementationRepository::ServerObject::_narrow (obj.in ());
this->opts_.pinger ()->add_server (si->key_name_.c_str (),
this->opts_.ping_external (),
- si->server.in ());
+ si->server.in (),
+ si->pid);
}
}
@@ -1085,7 +1090,7 @@ Shared_Backing_Store::process_updates (void)
}
else
{
- this->opts_.pinger ()->remove_server (name.c_str());
+ this->opts_.pinger ()->remove_server (name.c_str(), 0);
this->servers().unbind (name);
}
break;
diff --git a/TAO/orbsvcs/ImplRepo_Service/tao_imr_i.cpp b/TAO/orbsvcs/ImplRepo_Service/tao_imr_i.cpp
index 80795493a74..c3019685522 100644
--- a/TAO/orbsvcs/ImplRepo_Service/tao_imr_i.cpp
+++ b/TAO/orbsvcs/ImplRepo_Service/tao_imr_i.cpp
@@ -894,7 +894,7 @@ TAO_IMR_Op_Activate::run (void)
if (!this->quiet_)
{
ORBSVCS_ERROR ((LM_ERROR,
- "Cannot activate server <%C>, reason: <%C>\n",
+ "Cannot activate server <%C> reason <%C>\n",
this->server_name_.c_str (),
ex.reason.in ()));
}
@@ -952,9 +952,7 @@ TAO_IMR_Op_Autostart::run (void)
}
catch (const CORBA::Exception& ex)
{
- ex._tao_print_exception (
- server_list[i].server.in (
- ));
+ ex._tao_print_exception (server_list[i].server.in ());
// Ignore exception
}
}
@@ -1090,7 +1088,7 @@ TAO_IMR_Op_Kill::run (void)
if (!this->quiet_)
{
ORBSVCS_ERROR ((LM_ERROR,
- "Cannot complete kill of <%C>, reason: <%C>\n",
+ "Cannot complete kill of <%C> reason <%C>\n",
this->server_name_.c_str (),
ex.reason.in ()));
}
@@ -1134,7 +1132,7 @@ TAO_IMR_Op_Link::run (void)
catch (const ImplementationRepository::CannotComplete& ex)
{
ORBSVCS_ERROR ((LM_ERROR,
- "Cannot complete kill of <%C>, reason: <%C>\n",
+ "Cannot complete kill of <%C> reason <%C>\n",
this->server_name_.c_str (),
ex.reason.in ()));
return TAO_IMR_Op::CANNOT_COMPLETE;
diff --git a/TAO/orbsvcs/orbsvcs/HTIOP.mpc b/TAO/orbsvcs/orbsvcs/HTIOP.mpc
index 67fc0f96766..4178a55c569 100644
--- a/TAO/orbsvcs/orbsvcs/HTIOP.mpc
+++ b/TAO/orbsvcs/orbsvcs/HTIOP.mpc
@@ -15,6 +15,7 @@ project : htbp, orbsvcslib, orbsvcs_output, install, tao_versioning_idl_defaults
idlflags += -Sci -Gp -Gd -Sa -Sorb \
-o HTIOP
idlflags -= -St
+ gendir = HTIOP
HTIOP/htiop_endpoints.pidl
}
diff --git a/TAO/orbsvcs/orbsvcs/SSLIOP.mpc b/TAO/orbsvcs/orbsvcs/SSLIOP.mpc
index 30e99c0ffa4..afcc8c0a05d 100644
--- a/TAO/orbsvcs/orbsvcs/SSLIOP.mpc
+++ b/TAO/orbsvcs/orbsvcs/SSLIOP.mpc
@@ -58,6 +58,7 @@ project(SSLIOP) : orbsvcslib, orbsvcs_output, install, security, ssl, pi_server,
idlflags += -Sci -Gp -Gd -Sa -Sorb \
-o SSLIOP
idlflags -= -St
+ gendir = SSLIOP
SSLIOP/ssl_endpoints.pidl
}
}
diff --git a/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Connector.cpp b/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Connector.cpp
index eb6303b9b37..6aebd8005d2 100644
--- a/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Connector.cpp
+++ b/TAO/orbsvcs/orbsvcs/SSLIOP/SSLIOP_Connector.cpp
@@ -286,7 +286,7 @@ TAO::SSLIOP::Connector::corbaloc_scan (const char *endpoint, size_t &len)
}
len = ACE_OS::strlen (endpoint);
}
- else if (slash_pos != 0 || comma_pos > slash_pos)
+ else if (comma_pos == 0 || comma_pos > slash_pos)
{
// The endpoint address does not extend past the first '/' or ','
len = slash_pos - endpoint;
diff --git a/TAO/orbsvcs/tests/Bug_3216_Regression/client.cpp b/TAO/orbsvcs/tests/Bug_3216_Regression/client.cpp
index e65cce6fe4e..04aab458c3c 100644
--- a/TAO/orbsvcs/tests/Bug_3216_Regression/client.cpp
+++ b/TAO/orbsvcs/tests/Bug_3216_Regression/client.cpp
@@ -111,7 +111,7 @@ ACE_TMAIN(int argc, ACE_TCHAR *argv[])
{
hello->check_extended_context ();
}
- catch (Test::MyException& my_ex)
+ catch (const Test::MyException&)
{
ACE_DEBUG ((LM_ERROR, "Error - REGRESSION - extended format service context not transmitted\n"));
result = 1;
@@ -130,7 +130,6 @@ ACE_TMAIN(int argc, ACE_TCHAR *argv[])
return 1;
}
-
if (result)
{
ACE_DEBUG ((LM_ERROR, "Error: REGRESSION identified!!!\n"));
diff --git a/TAO/orbsvcs/tests/FT_Naming/FaultTolerant/client.cpp b/TAO/orbsvcs/tests/FT_Naming/FaultTolerant/client.cpp
index 5f900e05b55..8e486c88e5e 100644
--- a/TAO/orbsvcs/tests/FT_Naming/FaultTolerant/client.cpp
+++ b/TAO/orbsvcs/tests/FT_Naming/FaultTolerant/client.cpp
@@ -656,7 +656,7 @@ do_failover_name_test (
CosNaming::NamingContext_var nc =
CosNaming::NamingContext::_narrow (obj1_on_replica.in ());
}
- catch (const CosNaming::NamingContext::NotFound& ex)
+ catch (const CosNaming::NamingContext::NotFound&)
{
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("INFO: Unable to resolve wide context object from ")
@@ -1291,7 +1291,7 @@ do_persistence_name_test (
CosNaming::NamingContext_var nc =
CosNaming::NamingContext::_narrow (obj1_on_replica.in ());
}
- catch (const CosNaming::NamingContext::NotFound& ex)
+ catch (const CosNaming::NamingContext::NotFound&)
{
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("INFO: Unable to resolve wide context object from ")
@@ -1876,7 +1876,7 @@ do_equivalence_name_test (
CosNaming::NamingContext_var nc =
CosNaming::NamingContext::_narrow (obj1_on_replica.in ());
}
- catch (const CosNaming::NamingContext::NotFound& ex)
+ catch (const CosNaming::NamingContext::NotFound&)
{
ACE_DEBUG ((LM_DEBUG,
ACE_TEXT ("INFO: Unable to resolve wide context object from ")
diff --git a/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/README b/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/README
index f38d6ee082b..28ac5a5d6c8 100644
--- a/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/README
+++ b/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/README
@@ -1,5 +1,3 @@
-
-
This test verifies the fix for bug 4152 by starting the IMR Activator with a
parameter to induce a delay between the time when a child server dies and when
the Locator is informed of the death. This gap provides the opportunity for the
@@ -8,8 +6,8 @@ allowing for a spurious 3rd instance to be started. With the fix in place, only
two instances are started.
The server instances append their pid to a status file, which the run script
-interogates for judging success.
+interrogates for judging success.
Runtime options are -debug to turn on verbose debugging to separate log files
and -no_dns, which forces the use of 127.0.0.1 in endpoints for running in
-environments inwhich DNS is not properly configured.
+environments in which DNS is not properly configured.
diff --git a/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/Test.idl b/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/Test.idl
index 8a71f966081..2a333b4a6e5 100644
--- a/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/Test.idl
+++ b/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/Test.idl
@@ -1,7 +1,5 @@
interface Test
{
-
short get_server_num ();
oneway void terminate ();
-
};
diff --git a/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/Test_i.cpp b/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/Test_i.cpp
index 742c0dca56a..3091a829c2c 100644
--- a/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/Test_i.cpp
+++ b/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/Test_i.cpp
@@ -13,5 +13,6 @@ Test_i::get_server_num (void)
void
Test_i::terminate (void)
{
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t) Server received terminate and going to exit\n"));
exit (0);
}
diff --git a/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/Test_i.h b/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/Test_i.h
index 4fe622f87c7..984bc38669f 100644
--- a/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/Test_i.h
+++ b/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/Test_i.h
@@ -12,12 +12,9 @@
class Test_i : public virtual POA_Test
{
public:
-
virtual CORBA::Short get_server_num (void);
virtual void terminate (void);
-
-private:
};
#endif /* TEST_I_H_ */
diff --git a/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/client.cpp b/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/client.cpp
index 011f1e903d9..e9f5e6c73f0 100644
--- a/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/client.cpp
+++ b/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/client.cpp
@@ -3,7 +3,6 @@
#include "ace/Get_Opt.h"
#include "ace/OS_NS_unistd.h"
-
bool killit = false;
int
@@ -33,6 +32,8 @@ parse_args (int argc, ACE_TCHAR *argv[])
int
ACE_TMAIN (int argc, ACE_TCHAR *argv[])
{
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t) Start client main\n"));
+
try {
// Initialize orb
CORBA::ORB_var orb = CORBA::ORB_init( argc, argv );
@@ -49,30 +50,41 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[])
if (killit)
{
test->terminate ();
+ ACE_DEBUG ((LM_DEBUG,
+ "(%P|%t) Client send terminate request\n"));
}
else
{
- CORBA::Short n = test->get_server_num ();
+ CORBA::Short const n = test->get_server_num ();
ACE_DEBUG ((LM_DEBUG,
- "Client received reply from server %d on first attempt\n",
+ "(%P|%t) Client received reply from server %d on first attempt\n",
n));
}
}
catch (const CORBA::Exception &ex)
{
ACE_DEBUG ((LM_DEBUG,
- "Client caught: %s on first attempt, retrying\n",
- ex._name ()));
+ "(%P|%t) Client caught: %C on first attempt, retrying killit %d\n",
+ ex._name (), killit));
try
{
if (CORBA::is_nil (test.in()))
{
test = Test::_narrow( obj.in() );
}
- CORBA::Short n = test->get_server_num ();
- ACE_DEBUG ((LM_DEBUG,
- "Client received reply from server %d on second attempt\n",
- n));
+ if (killit)
+ {
+ test->terminate ();
+ ACE_DEBUG ((LM_DEBUG,
+ "(%P|%t) Client send terminate request on second attempt\n"));
+ }
+ else
+ {
+ CORBA::Short const n = test->get_server_num ();
+ ACE_DEBUG ((LM_DEBUG,
+ "(%P|%t) Client received reply from server %d on second attempt\n",
+ n));
+ }
}
catch (const CORBA::Exception &ex)
{
@@ -80,14 +92,15 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[])
}
}
- orb->destroy ();
-
- return 0;
- }
+ orb->destroy ();
+ }
catch (const CORBA::Exception& ex)
{
ex._tao_print_exception ("client:");
+ return -1;
}
- return -1;
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t) End client main\n"));
+
+ return 0;
}
diff --git a/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/run_test.pl b/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/run_test.pl
index ffe0ac4b538..6216317b394 100755
--- a/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/run_test.pl
+++ b/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/run_test.pl
@@ -16,16 +16,16 @@ $poa_delay = 3;
if ($#ARGV >= 0) {
for (my $i = 0; $i <= $#ARGV; $i++) {
- if ($ARGV[$i] eq '-debug') {
- $debug_level = 10;
- }
+ if ($ARGV[$i] eq '-debug') {
+ $debug_level = 10;
+ }
elsif ($ARGV[$i] eq '-no_dns') {
$no_dns = 1;
}
- else {
- usage();
- exit 1;
- }
+ else {
+ usage();
+ exit 1;
+ }
}
}
@@ -348,8 +348,8 @@ sub double_server_test
my $IMR_status = $IMR->TerminateWaitKill ($imr->ProcessStopWaitInterval());
if ($IMR_status != 0) {
- print STDERR "ERROR: IMR returned $IMR_status\n";
- $status = 1;
+ print STDERR "ERROR: IMR returned $IMR_status\n";
+ $status = 1;
}
$status = validate_servers();
@@ -363,7 +363,7 @@ sub double_server_test
sub usage() {
print "Usage: run_test.pl ".
- "[-debug]\n";
+ "[-debug]\n";
}
###############################################################################
diff --git a/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/server.cpp b/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/server.cpp
index 0e5de1cd8e5..dd010b3a7cd 100644
--- a/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/server.cpp
+++ b/TAO/orbsvcs/tests/ImplRepo/Bug_4152_Regression/server.cpp
@@ -65,6 +65,8 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[])
ORB_Runner *runner = new ORB_Runner (orb);
int poa_delay = 10;
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t) Start server main\n"));
+
try
{
ACE_Get_Opt get_opts (argc, argv, ACE_TEXT ("p:?"));
@@ -105,14 +107,14 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[])
Test_var tva = Test::_narrow (obj.in());
- ACE_DEBUG ((LM_DEBUG, "Started Server pid = %d poa delay %d\n", ACE_OS::getpid (), poa_delay));
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t) Started Server pid = %d poa delay %d\n", ACE_OS::getpid (), poa_delay));
{
ACE_CString status_file = base + ACE_CString(".status");
ofstream out(status_file.c_str (), ios_base::app);
if (!out.good())
{
- ACE_DEBUG ((LM_DEBUG, "server did not get good bit from %s\n", status_file.c_str()));
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t) server did not get good bit from %s\n", status_file.c_str()));
}
out << ACE_OS::getpid () << endl;
out.close ();
@@ -121,7 +123,7 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[])
ACE_OS::sleep (tv);
activatePOAs ();
- ACE_DEBUG ((LM_DEBUG, "Activated POA pid = %d \n", ACE_OS::getpid ()));
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t) Activated POA pid = %d\n", ACE_OS::getpid ()));
TAO_Root_POA* tpoa = dynamic_cast<TAO_Root_POA*> (poa_a.in ());
ACE_ASSERT (tpoa != 0);
@@ -134,7 +136,7 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[])
test_ior = orb->object_to_string (tva.in());
base += "_a";
- ACE_DEBUG ((LM_DEBUG, "%s:\n%s\n", base.c_str(), test_ior.in()));
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t) %s:\n%s\n", base.c_str(), test_ior.in()));
table->bind (base.c_str (), test_ior.in ());
runner->wait ();
@@ -149,7 +151,8 @@ ACE_TMAIN (int argc, ACE_TCHAR *argv[])
delete runner;
orb = CORBA::ORB::_nil ();
- ACE_DEBUG ((LM_DEBUG, "Exiting Server pid = %d \n",
+
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t) Exiting Server pid = %d \n",
ACE_OS::getpid ()));
return 0;
diff --git a/TAO/orbsvcs/tests/ImplRepo/ReconnectServer/README.txt b/TAO/orbsvcs/tests/ImplRepo/ReconnectServer/README.txt
index d8779ffd729..de3cd54bb48 100644
--- a/TAO/orbsvcs/tests/ImplRepo/ReconnectServer/README.txt
+++ b/TAO/orbsvcs/tests/ImplRepo/ReconnectServer/README.txt
@@ -1,5 +1,3 @@
-
-
Tests reconnection when a group of servers share a portspan, and restart in a different
order. Automated test uses C++ client only. To test Java, first build C++, then use
ant to build Java client, dependent on JacORB 3.6. Set your $JACORB_HOME then run
diff --git a/TAO/orbsvcs/tests/ImplRepo/ReconnectServer/client.cpp b/TAO/orbsvcs/tests/ImplRepo/ReconnectServer/client.cpp
index ea728fbfe2f..147819b1617 100644
--- a/TAO/orbsvcs/tests/ImplRepo/ReconnectServer/client.cpp
+++ b/TAO/orbsvcs/tests/ImplRepo/ReconnectServer/client.cpp
@@ -146,11 +146,11 @@ ACE_TMAIN(int argc, ACE_TCHAR *argv[])
if (task.test_passed ())
{
- ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%P|%t)Client test passed \n")));
+ ACE_DEBUG ((LM_DEBUG, ACE_TEXT ("(%P|%t) Client test passed \n")));
}
else
{
- ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("(%P|%t)Client test failed.\n")), 1);
+ ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("(%P|%t) Client test failed.\n")), 1);
}
}
catch (const CORBA::Exception &ex)
diff --git a/TAO/orbsvcs/tests/Notify/Bug_1884_Regression/supplier.cpp b/TAO/orbsvcs/tests/Notify/Bug_1884_Regression/supplier.cpp
index a97114e1d40..b9e1fd75cab 100644
--- a/TAO/orbsvcs/tests/Notify/Bug_1884_Regression/supplier.cpp
+++ b/TAO/orbsvcs/tests/Notify/Bug_1884_Regression/supplier.cpp
@@ -57,7 +57,7 @@ int ACE_TMAIN (int argc, ACE_TCHAR *argv[])
{
proxyCon_obj = sa->obtain_notification_push_consumer(ctype, proxy_id);
}
- catch(CosNotifyChannelAdmin::AdminLimitExceeded& err)
+ catch(const CosNotifyChannelAdmin::AdminLimitExceeded&)
{
std::cerr << "CosNotifyChannelAdmin::AdminLimitExceeded Exception!" << std::endl;
throw;
@@ -71,7 +71,7 @@ int ACE_TMAIN (int argc, ACE_TCHAR *argv[])
{
ppc->connect_structured_push_supplier(sps.in());
}
- catch (CosEventChannelAdmin::AlreadyConnected& ac)
+ catch (const CosEventChannelAdmin::AlreadyConnected&)
{
std::cerr << "CosEventChannelAdmin::AlreadyConnected" << std::endl;
throw;
diff --git a/TAO/orbsvcs/tests/Notify/Bug_3688_Regression/supplier.cpp b/TAO/orbsvcs/tests/Notify/Bug_3688_Regression/supplier.cpp
index 9aa4bca5e30..78440bec547 100644
--- a/TAO/orbsvcs/tests/Notify/Bug_3688_Regression/supplier.cpp
+++ b/TAO/orbsvcs/tests/Notify/Bug_3688_Regression/supplier.cpp
@@ -59,7 +59,7 @@ int ACE_TMAIN (int argc, ACE_TCHAR *argv[])
{
proxyCon_obj = sa->obtain_notification_push_consumer(ctype, proxy_id);
}
- catch(CosNotifyChannelAdmin::AdminLimitExceeded& err)
+ catch(const CosNotifyChannelAdmin::AdminLimitExceeded&)
{
std::cerr << "CosNotifyChannelAdmin::AdminLimitExceeded Exception!" << std::endl;
throw;
@@ -73,7 +73,7 @@ int ACE_TMAIN (int argc, ACE_TCHAR *argv[])
{
ppc->connect_structured_push_supplier(sps.in());
}
- catch (CosEventChannelAdmin::AlreadyConnected& ac)
+ catch (const CosEventChannelAdmin::AlreadyConnected&)
{
std::cerr << "CosEventChannelAdmin::AlreadyConnected" << std::endl;
throw;
diff --git a/TAO/orbsvcs/tests/Notify/MC/.gitignore b/TAO/orbsvcs/tests/Notify/MC/.gitignore
new file mode 100644
index 00000000000..4ffa0e3055a
--- /dev/null
+++ b/TAO/orbsvcs/tests/Notify/MC/.gitignore
@@ -0,0 +1 @@
+notify.conf
diff --git a/TAO/orbsvcs/tests/Security/BiDirectional/README b/TAO/orbsvcs/tests/Security/BiDirectional/README
index 006c572b7e1..a547f6dc903 100644
--- a/TAO/orbsvcs/tests/Security/BiDirectional/README
+++ b/TAO/orbsvcs/tests/Security/BiDirectional/README
@@ -1,5 +1,3 @@
-
-
This is a test that exercises the birectional GIOP connection
implementation in TAO over SSLIOP connection.
@@ -24,6 +22,6 @@ would crash itself.
To determine that no new connections have been opened or used the test
relies on the fact that TAO uses a transport cache. It can provide us
-iwith the number of currently cashed transports before and after making an
+with the number of currently cashed transports before and after making an
invocation. Both the client and at the server make this check.
diff --git a/TAO/orbsvcs/tests/Security/Secure_Invocation/README b/TAO/orbsvcs/tests/Security/Secure_Invocation/README
index 702c69220ff..9f2845b2f3a 100644
--- a/TAO/orbsvcs/tests/Security/Secure_Invocation/README
+++ b/TAO/orbsvcs/tests/Security/Secure_Invocation/README
@@ -1,15 +1,13 @@
-
-
This test verifies that the ORB's secure invocation mechanism is
functioning properly. It does so by the doing the following:
- - Invoking a request over standard (insecure) IIOP on a target
- object that requires secure invocation (e.g. over SSLIOP).
- The client should receive a CORBA::NO_PERMISSION exception.
+- Invoking a request over standard (insecure) IIOP on a target
+ object that requires secure invocation (e.g. over SSLIOP).
+ The client should receive a CORBA::NO_PERMISSION exception.
- - Invoking a request via a security mechanism, such as
- SSLIOP. The AccessId associated with the given request is
- obtained from the SecurityCurrent object, and displayed.
+- Invoking a request via a security mechanism, such as
+ SSLIOP. The AccessId associated with the given request is
+ obtained from the SecurityCurrent object, and displayed.
The expected test output is the following (actual "certificate issuer"
contents may differ):
diff --git a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/README b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/README
index a47619b779e..8b8b2301c1a 100644
--- a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/README
+++ b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/README
@@ -1,5 +1,3 @@
-
-
These application tests address various features of TAO's
Naming Service. The functionality is the same as in the
Simple_Naming test, but the difference is that all the
@@ -7,15 +5,15 @@ communication is done over SSLIOP and clients are using
INS-style corbaloc URLs.
To run all tests automatically -
- execute Perl script run_test.pl
+ execute Perl script run_test.pl
To run tests manually -
- start the Naming Service (see
- TAO/orbsvcs/Naming_Service/README for valid options).
+ start the Naming Service (see
+ TAO/orbsvcs/Naming_Service/README for valid options).
Make sure you use " -ORBSvcConf server.conf" and
"-ORBEndpoint iiop://localhost:23456/ssl_port=12345"
- Then run ./client with one of the options below.
+ Then run ./client with one of the options below.
Make sure you add " -ORBSvcConf client.conf" and
"-ORBInitRef NameService=corbaloc:ssliop:localhost:12345/NameService"
@@ -25,15 +23,15 @@ after themselves).
The following options exist:
---------------------------
--s Run the Simple test of the Naming Service.
+-s Run the Simple test of the Naming Service.
--t Run the Tree test of the Naming Service.
+-t Run the Tree test of the Naming Service.
--e Run the Exceptions test of the Naming Service
+-e Run the Exceptions test of the Naming Service
--i Run the Iterator test of the Naming Service.
+-i Run the Iterator test of the Naming Service.
--y Run the Destroy test of the Naming Service.
+-y Run the Destroy test of the Naming Service.
Persistent test consists of two parts (below).
@@ -81,7 +79,6 @@ Persistent test consists of two parts (below).
If no option is specified, Simple test is run. If more than one
option is specified, only one test runs.
-
DESCRIPTION AND EXPECTED OUTPUT FOR EACH TEST
*******************************************
Please see $TAO_ROOT/orbsvcs/tests/Simple_Naming/README
diff --git a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/cacert.pem b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/cacert.pem
new file mode 100644
index 00000000000..d98dd5918cb
--- /dev/null
+++ b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/cacert.pem
@@ -0,0 +1,16 @@
+-----BEGIN CERTIFICATE-----
+MIICgDCCAemgAwIBAgIJAO8E230uBaq+MA0GCSqGSIb3DQEBBQUAMDUxCzAJBgNV
+BAYTAlVTMRIwEAYDVQQIEwlUZW5uZXNzZWUxEjAQBgNVBAoTCURPQyBHcm91cDAe
+Fw0xMTA2MTUxMzU2MDRaFw0yMTA2MTIxMzU2MDRaMDUxCzAJBgNVBAYTAlVTMRIw
+EAYDVQQIEwlUZW5uZXNzZWUxEjAQBgNVBAoTCURPQyBHcm91cDCBnzANBgkqhkiG
+9w0BAQEFAAOBjQAwgYkCgYEAxzlgJm5rZMTZEQCa7m3/JPbykh4FT7DwcrWBgDRF
+Jk0wgi4K7AKOFdCfOMqbW1Ps5ITbzgwq2yNXOrocKYs//02ewppKx5bxOE5wTA9v
+qwvaoJUeQ8PVEY+RVi2z+CP1xFIVKOCJtrg5WwWE9Vwvu3iyTe95dR1T95Hkrl0I
+yHECAwEAAaOBlzCBlDAdBgNVHQ4EFgQU/XO+9DMzOBifuZxp1BL+gTGVAwowZQYD
+VR0jBF4wXIAU/XO+9DMzOBifuZxp1BL+gTGVAwqhOaQ3MDUxCzAJBgNVBAYTAlVT
+MRIwEAYDVQQIEwlUZW5uZXNzZWUxEjAQBgNVBAoTCURPQyBHcm91cIIJAO8E230u
+Baq+MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAUxxR/7U35mIGJ7c/
+KfZZYze4/Aio7mf9QG0DA55F9DlB16IOJuRXqeMY2Lo+WFo7pszDX8TbucWtWJC6
+pMIVamWLTpgfVrWeTcafio/puqTALKfZ5LHzHieu1QNvFPQxMx1DZ5Eawowhl7ua
+4ERB9b/3K4StZjMUkPmBolSIkPo=
+-----END CERTIFICATE-----
diff --git a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/client.conf b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/client.conf
index f1ebc8c1b57..dea4604403a 100644
--- a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/client.conf
+++ b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/client.conf
@@ -1,6 +1,5 @@
-
dynamic SSLIOP_Factory Service_Object *
TAO_SSLIOP:_make_TAO_SSLIOP_Protocol_Factory()
- "-SSLPrivateKey PEM:pvtkey-client.pem -SSLCertificate PEM:selfsigncert-client.pem"
+ "-SSLPrivateKey PEM:client_key.pem -SSLCertificate PEM:client_cert.pem -SSLCAfile PEM:cacert.pem"
static Resource_Factory "-ORBProtocolFactory SSLIOP_Factory"
diff --git a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/client.conf.xml b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/client.conf.xml
index 388ce2b122c..11f3ac0aa91 100644
--- a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/client.conf.xml
+++ b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/client.conf.xml
@@ -2,7 +2,7 @@
<!-- Converted from client.conf by svcconf-convert.pl -->
<ACE_Svc_Conf>
<dynamic id="SSLIOP_Factory" type="Service_Object">
- <initializer path="TAO_SSLIOP" init="_make_TAO_SSLIOP_Protocol_Factory" params="-SSLPrivateKey PEM:pvtkey-client.pem -SSLCertificate PEM:selfsigncert-client.pem"/>
+ <initializer path="TAO_SSLIOP" init="_make_TAO_SSLIOP_Protocol_Factory" params="-SSLPrivateKey PEM:client_key.pem -SSLCertificate PEM:client_cert.pem -SSLCAfile PEM:cacert.pem"/>
</dynamic>
<static id="Resource_Factory" params="-ORBProtocolFactory SSLIOP_Factory"/>
</ACE_Svc_Conf>
diff --git a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/client.cpp b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/client.cpp
index bf458d40749..bce3bba7b98 100644
--- a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/client.cpp
+++ b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/client.cpp
@@ -12,12 +12,10 @@
*/
//=============================================================================
-
#include "client.h"
#include "tao/debug.h"
#include "ace/Get_Opt.h"
-
-
+#include <orbsvcs/SecurityLevel2C.h>
#if defined (_MSC_VER)
# pragma warning (disable : 4250)
@@ -182,7 +180,14 @@ CosNaming_Client::parse_args (void)
int
CosNaming_Client::run (void)
{
- return test_->execute (naming_client_);
+ this->activate();
+ int rv = test_->execute (naming_client_);
+ {
+ CORBA::ORB_var orb = this->orbmgr_.orb();
+ orb->shutdown();
+ }
+ this->wait();
+ return rv;
}
CosNaming_Client::~CosNaming_Client (void)
@@ -209,6 +214,21 @@ CosNaming_Client::init (int argc, ACE_TCHAR **argv)
return -1;
CORBA::ORB_var orb = this->orbmgr_.orb ();
+
+ // In order to allow collocated invocations we need to allow unsecured
+ // collocated invocations to the object else our security manager will
+ // block the collocated invocation unless you explicitly allow it
+ CORBA::Object_var sec_man =
+ orb->resolve_initial_references ("SecurityLevel2:SecurityManager");
+ SecurityLevel2::SecurityManager_var sec2manager =
+ SecurityLevel2::SecurityManager::_narrow (sec_man.in ());
+ SecurityLevel2::AccessDecision_var ad_tmp =
+ sec2manager->access_decision ();
+ TAO::SL2::AccessDecision_var ad =
+ TAO::SL2::AccessDecision::_narrow (ad_tmp.in ());
+ // Allow unsecured collocated invocations
+ ad->default_collocated_decision (true);
+
return this->naming_client_.init (orb.in ());
}
catch (const CORBA::Exception& ex)
@@ -1061,6 +1081,13 @@ Persistent_Test_End::execute (TAO_Naming_Client &root_context)
return 0;
}
+int CosNaming_Client::svc()
+{
+ CORBA::ORB_var orb = orbmgr_.orb();
+ orb->run ();
+ return 0;
+}
+
// This function runs the test.
int
diff --git a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/client.h b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/client.h
index 9cb24c8ea14..62789a5d4bd 100644
--- a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/client.h
+++ b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/client.h
@@ -295,7 +295,7 @@ private:
* the server is hidden in the class. Just the <run> interface
* is needed.
*/
-class CosNaming_Client
+class CosNaming_Client : public ACE_Task_Base
{
public:
// = Initialization and termination methods.
@@ -309,6 +309,8 @@ public:
/// Execute client example code.
int run (void);
+ int svc (void);
+
/// Initialize the client communication endpoint with server.
int init (int argc, ACE_TCHAR **argv);
diff --git a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/client_cert.pem b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/client_cert.pem
new file mode 100644
index 00000000000..b86bd5de1d2
--- /dev/null
+++ b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/client_cert.pem
@@ -0,0 +1,59 @@
+Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number: 4097 (0x1001)
+ Signature Algorithm: sha1WithRSAEncryption
+ Issuer: C=US, ST=Tennessee, O=DOC Group
+ Validity
+ Not Before: Jun 15 14:01:34 2011 GMT
+ Not After : May 25 14:01:34 2032 GMT
+ Subject: C=US, ST=Tennessee, O=DOC Group, CN=Build Czar Client
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ RSA Public Key: (1024 bit)
+ Modulus (1024 bit):
+ 00:cf:7f:8e:42:bf:bb:c0:a6:23:7e:07:a4:13:ba:
+ b6:ba:cd:4c:ed:c4:9c:97:46:32:dc:d5:e9:63:59:
+ 59:b8:7c:0d:7a:97:ad:3f:29:dd:fc:40:4e:48:cc:
+ b2:1b:15:c4:98:59:a8:b0:b0:38:23:d2:d8:81:22:
+ 27:1b:77:64:d6:40:c0:02:41:b6:db:a8:25:4d:c6:
+ a1:f5:03:f6:fa:8a:d3:1c:b5:a4:a9:4c:a5:62:19:
+ 89:e3:dc:d8:ac:68:47:96:0f:3c:10:1a:ec:00:81:
+ 10:aa:13:3d:99:48:3a:ae:2b:ac:b9:de:5b:20:7c:
+ 06:4e:57:64:af:2d:b3:88:ef
+ Exponent: 65537 (0x10001)
+ X509v3 extensions:
+ X509v3 Basic Constraints:
+ CA:FALSE
+ Netscape Comment:
+ OpenSSL Generated Certificate
+ X509v3 Subject Key Identifier:
+ 6F:13:BA:8B:91:ED:FA:22:DC:28:26:D4:74:5C:46:A7:B2:B2:A9:10
+ X509v3 Authority Key Identifier:
+ keyid:FD:73:BE:F4:33:33:38:18:9F:B9:9C:69:D4:12:FE:81:31:95:03:0A
+
+ Signature Algorithm: sha1WithRSAEncryption
+ bc:6f:d5:c7:68:a0:3c:8d:3a:39:61:ff:50:80:c7:a3:b9:28:
+ aa:c8:7b:7e:2d:af:26:e1:0a:39:94:9d:a8:94:c8:cd:82:f5:
+ a5:fc:d1:df:3d:3f:55:c7:5b:f9:89:14:78:59:d6:64:2d:32:
+ 42:23:d9:96:9c:50:34:d2:81:17:e3:cc:09:57:13:fc:ae:3b:
+ ed:ff:55:03:d5:c2:dd:a5:5a:f1:c5:66:55:9f:a2:77:74:2f:
+ 76:84:93:7c:03:b9:c1:9f:df:41:20:06:57:e4:e2:eb:e7:10:
+ 67:42:63:02:d1:a8:53:f1:4d:9b:91:71:37:e4:c2:02:dd:e1:
+ b9:04
+-----BEGIN CERTIFICATE-----
+MIICeDCCAeGgAwIBAgICEAEwDQYJKoZIhvcNAQEFBQAwNTELMAkGA1UEBhMCVVMx
+EjAQBgNVBAgTCVRlbm5lc3NlZTESMBAGA1UEChMJRE9DIEdyb3VwMB4XDTExMDYx
+NTE0MDEzNFoXDTMyMDUyNTE0MDEzNFowUTELMAkGA1UEBhMCVVMxEjAQBgNVBAgT
+CVRlbm5lc3NlZTESMBAGA1UEChMJRE9DIEdyb3VwMRowGAYDVQQDExFCdWlsZCBD
+emFyIENsaWVudDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAz3+OQr+7wKYj
+fgekE7q2us1M7cScl0Yy3NXpY1lZuHwNepetPynd/EBOSMyyGxXEmFmosLA4I9LY
+gSInG3dk1kDAAkG226glTcah9QP2+orTHLWkqUylYhmJ49zYrGhHlg88EBrsAIEQ
+qhM9mUg6riusud5bIHwGTldkry2ziO8CAwEAAaN7MHkwCQYDVR0TBAIwADAsBglg
+hkgBhvhCAQ0EHxYdT3BlblNTTCBHZW5lcmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0O
+BBYEFG8TuouR7foi3Cgm1HRcRqeysqkQMB8GA1UdIwQYMBaAFP1zvvQzMzgYn7mc
+adQS/oExlQMKMA0GCSqGSIb3DQEBBQUAA4GBALxv1cdooDyNOjlh/1CAx6O5KKrI
+e34trybhCjmUnaiUyM2C9aX80d89P1XHW/mJFHhZ1mQtMkIj2ZacUDTSgRfjzAlX
+E/yuO+3/VQPVwt2lWvHFZlWfond0L3aEk3wDucGf30EgBlfk4uvnEGdCYwLRqFPx
+TZuRcTfkwgLd4bkE
+-----END CERTIFICATE-----
diff --git a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/client_key.pem b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/client_key.pem
new file mode 100644
index 00000000000..e761037f237
--- /dev/null
+++ b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/client_key.pem
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQDPf45Cv7vApiN+B6QTura6zUztxJyXRjLc1eljWVm4fA16l60/
+Kd38QE5IzLIbFcSYWaiwsDgj0tiBIicbd2TWQMACQbbbqCVNxqH1A/b6itMctaSp
+TKViGYnj3NisaEeWDzwQGuwAgRCqEz2ZSDquK6y53lsgfAZOV2SvLbOI7wIDAQAB
+AoGACTQ0QDu2/U2hR2bZXVKr5k9S+Tz+YSto+Ci46II/G5LNGkH+Gk4mHZlQn6QM
+xmzJwqQ/ek7mvpgMqHW2XF6IZ3AUmgNqpKdkFMbmkRworAEGRHvJcXy6RhiZI4kv
+UQWc9qEBA6/iR/B0sGsCgTTkv4davCs+5You5+oSyRiRu7kCQQDuQTkSkNm7fwFS
+lrEGmJjzJ3gXMHuv/lL2n2HJV67BBv7Aq7JDdciVLr90chcmXkIwPCywbdWVV9jz
+HWQ6GXKTAkEA3vPm3CKRHMFoSGwiX6qhM2432yLIlpjlfmSj3S6LnhhTJhYS6KMO
+6Ddv4vZ20zl3r4GAaXOyMTtZ6vQlZ8W9tQJBAMvRAAHh6GF9RKRiRQ5ffHiGSzWL
+RERKTK6tqfmUCOsYENbCCr2rBOyaES6Ma0FnYTfiQlirnQslG3Lesd8B5gECQQDS
+FG6PNP8ZYmDaBRJqpIQayxtUoDT0OoPckgYZrvcd8/u9YoVUsfik9T+3U9dpdrgB
+JvyR4NOiMjOrAXyRiLEVAkA9DutrYXzznEAyOvEEtyK92Eb2oTpu1svzRATc/i0w
+UTwLkFi+1m24HJ5MIGyRTHsNj79lj5v5U91lGIINHXXU
+-----END RSA PRIVATE KEY-----
diff --git a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/corbaloc_ssliop.mpc b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/corbaloc_ssliop.mpc
index 9070ed3509e..e46d1c03545 100644
--- a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/corbaloc_ssliop.mpc
+++ b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/corbaloc_ssliop.mpc
@@ -1,5 +1,5 @@
// -*- MPC -*-
-project(*Client) : namingexe, portableserver, utils {
+project(*Client) : namingexe, portableserver, utils, security, ssliop {
exename = client
Source_Files {
client.cpp
diff --git a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/pvtkey-client.pem b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/pvtkey-client.pem
deleted file mode 100644
index cf53308cae2..00000000000
--- a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/pvtkey-client.pem
+++ /dev/null
@@ -1,16 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIICXwIBAAKBgQD3LcZOo8tF7BHEYMsm5pn3zYV+u6NhhvPC5G5bErY8qi8Xt4CZ
-PSQPm4JmVFvLsY2H6Eme8Oe7j4bCquRuB1D/U5auKdINQ1aG2CgKqPtBy1SliHE3
-FD1Ht43O+z2mRzGHtqLowhEvFEpEVHcJLUQ7HVHPJaRNQkn80DA/nN9+5wIDAQAB
-AoGBANpBJPWTU43uINIR1dAHlrRkWRfKfz1CeEMCiR8JqrhuXR7H/VlRz2Goor/Q
-hS2bHal/xmH9veCznv6M/x7Yfv74hhUJxyqngNxbwGI4G+LfR3/x1fqVcweDGmv6
-LYLL4JWyDLEL5I3PEZP/dUnT6+bmmuXWU5z83itqYw8VRbsBAkEA/MnqXFlWl1KF
-jTee5pijKOXGAvllrpN8MkTKM2MdjltzOkuhC1OEwhXYy86e90gRQvXAs3t7A4dT
-Q5/eUYHgYQJBAPpRnYcqqDP0Rj/JqMDapwIVjMoMDQP+thB4Ey6fSRC7dYiX4+Qo
-cyX8j0YnF0RYl426+Qv2O6egmOmzrQwQxEcCQQDAfUBocd7t+3iWv/PPxAr56X2O
-Zjp3ZPb9kEQoPSEUda6YhV5sMXy2Dcy35O5Hfikmw9uo0C4r0bAlnma7yhoBAkEA
-tI0/6ansDyVnskTbktdj1Q4EMgxFKxeC7RgfBebghdAg87hTKVO/0qt8EGbL0oFw
-N0ugrW8bEkq1YQQ3kldZqwJBAJPIe/NE+NhSOoSo3kEQ70SkjU5EB2sbVxhjq6ci
-UdXa+EOAna5JS5ZFMDq4AI+qU8OoSgI26hdH5S8lf10fIDo=
------END RSA PRIVATE KEY-----
-
diff --git a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/pvtkey.pem b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/pvtkey.pem
deleted file mode 100644
index 81ba8e3f968..00000000000
--- a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/pvtkey.pem
+++ /dev/null
@@ -1,10 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIBOwIBAAJBAPXZ7YNyFU8T8PVitNwZmdwuc4tG64V/lDYHnmzolmFPQ6gvI2uo
-KBQeHeJFPI6LJ5TGb8hCnypy+zbc+pve8vECAwEAAQJAE/fmZbW/a1PYT2X8AKCH
-sa2ILvjMqmQpWpYV1QyzIiYQPEmQ/5GMUj/t3PZd/17BOH8aPakBT/c1Gp+os6vR
-zQIhAP2RDmm6UyMrJhAtAcNC5s8nbfhKPG80Q0DZ2kiodjQfAiEA+DXqwEZlCh0j
-VPzEXY7vrdQa641zQ5XIX1S/+WbCdu8CIDT9m4V86uLuoYW/4h5sXM/t7Y119itH
-QMbMwFFu40UBAiEA9z+mN6An2BpMbsVXyiavREYMBuahkgprTeM7VHHzdssCIQCY
-QEgmpzGzfdZoREy9B7ooNeRO919lR9qvbte9vvJvWQ==
------END RSA PRIVATE KEY-----
-
diff --git a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/run_test.pl b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/run_test.pl
index fc09f50e2ef..a2b3352b09b 100755
--- a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/run_test.pl
+++ b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/run_test.pl
@@ -120,6 +120,8 @@ $orb_debug_level = ($quiet || $debug_level == 0) ? "" : "-ORBDebugLevel $debug_
@opts = (
"-s -ORBInitRef NameService=corbaloc:ssliop:$TARGETHOSTNAME:$ns_ssl_port/NameService"
. " -ORBSvcConf $cli_cliconffile $orb_debug_level",
+ "-s -ORBInitRef NameService=corbaloc:ssliop:$TARGETHOSTNAME:$ns_ssl_port,iiop:$TARGETHOSTNAME:$ns_orb_port/NameService"
+ . " -ORBSvcConf $cli_cliconffile $orb_debug_level",
"-t -ORBInitRef NameService=corbaloc:ssliop:$TARGETHOSTNAME:$ns_ssl_port/NameService"
. " -ORBSvcConf $cli_cliconffile $orb_debug_level",
"-i -ORBInitRef NameService=corbaloc:ssliop:$TARGETHOSTNAME:$ns_ssl_port/NameService"
@@ -142,11 +144,13 @@ $orb_debug_level = ($quiet || $debug_level == 0) ? "" : "-ORBDebugLevel $debug_
. " -ORBSvcConf $ns_nsconffile $orb_debug_level",
"-ORBEndpoint iiop://$TARGETHOSTNAME:$ns_orb_port/ssl_port=$ns_ssl_port"
. " -ORBSvcConf $ns_nsconffile $orb_debug_level",
-
+ "-ORBEndpoint iiop://$TARGETHOSTNAME:$ns_orb_port/ssl_port=$ns_ssl_port"
+ . " -ORBSvcConf $ns_nsconffile $orb_debug_level",
);
@comments = (
"(SSL) Simple Test:",
+ "(SSL) Simple Multi-Profile Corbaloc Test:",
"(SSL) Tree Test:",
"(SSL) Iterator Test:",
"(SSL) Exceptions Test:",
diff --git a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/selfsigncert-client.pem b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/selfsigncert-client.pem
deleted file mode 100644
index dc0a69d76e6..00000000000
--- a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/selfsigncert-client.pem
+++ /dev/null
@@ -1,24 +0,0 @@
------BEGIN CERTIFICATE-----
-MIID3zCCA0igAwIBAgIBADANBgkqhkiG9w0BAQUFADCBrDELMAkGA1UEBhMCVVMx
-ETAPBgNVBAgTCE1pc3NvdXJpMRMwEQYDVQQHEwpDcmV2ZSBDb3JlMR4wHAYDVQQK
-ExVPYmplY3QgQ29tcHV0aW5nIEluYy4xETAPBgNVBAsTCFRBTyBUZWFtMRswGQYD
-VQQDExJvY2kxMTc5Lm9jaXdlYi5jb20xJTAjBgkqhkiG9w0BCQEWFmplbGlhemtv
-dl9pQG9jaXdlYi5jb20wHhcNMDQwOTEwMTY0MjMwWhcNMDUwOTEwMTY0MjMxWjCB
-rDELMAkGA1UEBhMCVVMxETAPBgNVBAgTCE1pc3NvdXJpMRMwEQYDVQQHEwpDcmV2
-ZSBDb3JlMR4wHAYDVQQKExVPYmplY3QgQ29tcHV0aW5nIEluYy4xETAPBgNVBAsT
-CFRBTyBUZWFtMRswGQYDVQQDExJvY2kxMTc5Lm9jaXdlYi5jb20xJTAjBgkqhkiG
-9w0BCQEWFmplbGlhemtvdl9pQG9jaXdlYi5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD
-gY0AMIGJAoGBAPctxk6jy0XsEcRgyybmmffNhX67o2GG88LkblsStjyqLxe3gJk9
-JA+bgmZUW8uxjYfoSZ7w57uPhsKq5G4HUP9Tlq4p0g1DVobYKAqo+0HLVKWIcTcU
-PUe3jc77PaZHMYe2oujCES8USkRUdwktRDsdUc8lpE1CSfzQMD+c337nAgMBAAGj
-ggENMIIBCTAdBgNVHQ4EFgQUgtnhUdIQh1ESq81PL+urdJj1LRkwgdkGA1UdIwSB
-0TCBzoAUgtnhUdIQh1ESq81PL+urdJj1LRmhgbKkga8wgawxCzAJBgNVBAYTAlVT
-MREwDwYDVQQIEwhNaXNzb3VyaTETMBEGA1UEBxMKQ3JldmUgQ29yZTEeMBwGA1UE
-ChMVT2JqZWN0IENvbXB1dGluZyBJbmMuMREwDwYDVQQLEwhUQU8gVGVhbTEbMBkG
-A1UEAxMSb2NpMTE3OS5vY2l3ZWIuY29tMSUwIwYJKoZIhvcNAQkBFhZqZWxpYXpr
-b3ZfaUBvY2l3ZWIuY29tggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD
-gYEAVZSDOJ40+iAJPb1GZWmmh5y5Y1DVXsQF5vRENYq15Pi5Y9GBhHaYFn3qjN2U
-+zyO2Cp2IJJG4HNazhBoDEj7EhDsxEyOYZiG2pd6BLe1dPl/viy6ysvdijjpcXw7
-bFPbXpCIa5rg8VKQsGYscWerLxvi79uoo+p6DrOU1FxDcYo=
------END CERTIFICATE-----
-
diff --git a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/selfsigncert.pem b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/selfsigncert.pem
deleted file mode 100644
index e616730ca63..00000000000
--- a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/selfsigncert.pem
+++ /dev/null
@@ -1,16 +0,0 @@
------BEGIN CERTIFICATE-----
-MIICeDCCAiKgAwIBAgIBADANBgkqhkiG9w0BAQQFADBjMQswCQYDVQQGEwJVUzEL
-MAkGA1UECBMCTU8xDDAKBgNVBAcTA1NUTDELMAkGA1UEChMCV1UxDDAKBgNVBAsT
-A0RPQzELMAkGA1UEAxMCS0ExETAPBgkqhkiG9w0BCQEWAktBMB4XDTAxMDgyNzE2
-NTUxMVoXDTAxMDkyNjE2NTUxMVowYzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAk1P
-MQwwCgYDVQQHEwNTVEwxCzAJBgNVBAoTAldVMQwwCgYDVQQLEwNET0MxCzAJBgNV
-BAMTAktBMREwDwYJKoZIhvcNAQkBFgJLQTBcMA0GCSqGSIb3DQEBAQUAA0sAMEgC
-QQD12e2DchVPE/D1YrTcGZncLnOLRuuFf5Q2B55s6JZhT0OoLyNrqCgUHh3iRTyO
-iyeUxm/IQp8qcvs23Pqb3vLxAgMBAAGjgcAwgb0wHQYDVR0OBBYEFL8LnC8csuIX
-+TUw6FCoReB27PHoMIGNBgNVHSMEgYUwgYKAFL8LnC8csuIX+TUw6FCoReB27PHo
-oWekZTBjMQswCQYDVQQGEwJVUzELMAkGA1UECBMCTU8xDDAKBgNVBAcTA1NUTDEL
-MAkGA1UEChMCV1UxDDAKBgNVBAsTA0RPQzELMAkGA1UEAxMCS0ExETAPBgkqhkiG
-9w0BCQEWAktBggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADQQAZP9CT
-TVRxAz3Acxxxn32rsnwSeNJr1uTA4hew7f4QZ187oZia+rcFLOILrwgCmtqEmWVj
-dj6COUrqKo60BI5V
------END CERTIFICATE-----
diff --git a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/server.conf b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/server.conf
index ccf92593f69..2310cda1145 100644
--- a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/server.conf
+++ b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/server.conf
@@ -1,6 +1,6 @@
dynamic SSLIOP_Factory Service_Object *
TAO_SSLIOP:_make_TAO_SSLIOP_Protocol_Factory()
- "-SSLPrivateKey PEM:pvtkey.pem -SSLCertificate PEM:selfsigncert.pem"
+ "-SSLPrivateKey PEM:server_key.pem -SSLCertificate PEM:server_cert.pem -SSLCAfile PEM:cacert.pem"
static Resource_Factory "-ORBProtocolFactory SSLIOP_Factory"
diff --git a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/server.conf.xml b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/server.conf.xml
index 42d208bc1e8..4a0945ff435 100644
--- a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/server.conf.xml
+++ b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/server.conf.xml
@@ -2,7 +2,7 @@
<!-- Converted from server.conf by svcconf-convert.pl -->
<ACE_Svc_Conf>
<dynamic id="SSLIOP_Factory" type="Service_Object">
- <initializer path="TAO_SSLIOP" init="_make_TAO_SSLIOP_Protocol_Factory" params="-SSLPrivateKey PEM:pvtkey.pem -SSLCertificate PEM:selfsigncert.pem"/>
+ <initializer path="TAO_SSLIOP" init="_make_TAO_SSLIOP_Protocol_Factory" params="-SSLPrivateKey PEM:server_key.pem -SSLCertificate PEM:server_cert.pem -SSLCAfile PEM:cacert.pem"/>
</dynamic>
<static id="Resource_Factory" params="-ORBProtocolFactory SSLIOP_Factory"/>
</ACE_Svc_Conf>
diff --git a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/server_cert.pem b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/server_cert.pem
new file mode 100644
index 00000000000..5402ae2497a
--- /dev/null
+++ b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/server_cert.pem
@@ -0,0 +1,59 @@
+Certificate:
+ Data:
+ Version: 3 (0x2)
+ Serial Number: 4096 (0x1000)
+ Signature Algorithm: sha1WithRSAEncryption
+ Issuer: C=US, ST=Tennessee, O=DOC Group
+ Validity
+ Not Before: Jun 15 14:01:15 2011 GMT
+ Not After : May 25 14:01:15 2032 GMT
+ Subject: C=US, ST=Tennessee, O=DOC Group, CN=DOC Group Build Czar Server
+ Subject Public Key Info:
+ Public Key Algorithm: rsaEncryption
+ RSA Public Key: (1024 bit)
+ Modulus (1024 bit):
+ 00:b2:03:27:b9:d6:24:a4:6d:e1:9f:0e:d7:8a:71:
+ 86:62:df:2b:f8:64:3b:51:53:e0:fa:71:9a:c2:10:
+ 40:97:bd:06:27:43:5a:1a:1c:62:f4:ca:3e:b3:b9:
+ 20:16:89:a2:aa:2e:1e:97:3a:70:3d:fe:f7:ff:ba:
+ d5:1e:b2:68:07:7e:d0:68:18:8a:3b:aa:9c:01:0e:
+ 1e:ef:b5:97:96:d5:0b:a5:a0:fd:a3:02:21:b5:5a:
+ 6f:e4:c1:36:bf:61:7b:40:ac:73:03:3d:40:75:e7:
+ 9d:ba:22:ab:95:81:8b:74:9e:fa:df:27:18:a7:7f:
+ 23:83:36:f0:15:22:22:db:7b
+ Exponent: 65537 (0x10001)
+ X509v3 extensions:
+ X509v3 Basic Constraints:
+ CA:FALSE
+ Netscape Comment:
+ OpenSSL Generated Certificate
+ X509v3 Subject Key Identifier:
+ 0C:27:05:12:9B:D5:4B:F9:43:32:6B:77:7B:A2:0D:34:7F:6C:0A:BC
+ X509v3 Authority Key Identifier:
+ keyid:FD:73:BE:F4:33:33:38:18:9F:B9:9C:69:D4:12:FE:81:31:95:03:0A
+
+ Signature Algorithm: sha1WithRSAEncryption
+ 0d:bf:65:2a:a5:02:75:6c:c4:5a:3c:1d:3c:25:51:16:1a:f8:
+ 78:ad:49:f6:f4:a4:c1:97:e4:c8:0b:ac:9e:71:0e:be:1e:e6:
+ 1d:2e:c7:d2:4f:1e:e8:c7:21:7c:58:27:0e:6d:93:11:7e:64:
+ 24:57:44:c1:c1:5a:d0:76:82:79:70:82:36:06:f2:48:60:e8:
+ 6a:20:a7:92:09:00:73:75:b2:f9:cb:97:35:d6:aa:8e:87:11:
+ 20:e2:dd:8a:c3:9c:c4:aa:f0:57:04:4e:e2:b3:8b:fb:9a:4f:
+ 4b:60:b7:2e:3b:89:98:38:02:25:24:ff:b1:f1:c0:ad:01:eb:
+ 37:bd
+-----BEGIN CERTIFICATE-----
+MIICgjCCAeugAwIBAgICEAAwDQYJKoZIhvcNAQEFBQAwNTELMAkGA1UEBhMCVVMx
+EjAQBgNVBAgTCVRlbm5lc3NlZTESMBAGA1UEChMJRE9DIEdyb3VwMB4XDTExMDYx
+NTE0MDExNVoXDTMyMDUyNTE0MDExNVowWzELMAkGA1UEBhMCVVMxEjAQBgNVBAgT
+CVRlbm5lc3NlZTESMBAGA1UEChMJRE9DIEdyb3VwMSQwIgYDVQQDExtET0MgR3Jv
+dXAgQnVpbGQgQ3phciBTZXJ2ZXIwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB
+ALIDJ7nWJKRt4Z8O14pxhmLfK/hkO1FT4PpxmsIQQJe9BidDWhocYvTKPrO5IBaJ
+oqouHpc6cD3+9/+61R6yaAd+0GgYijuqnAEOHu+1l5bVC6Wg/aMCIbVab+TBNr9h
+e0CscwM9QHXnnboiq5WBi3Se+t8nGKd/I4M28BUiItt7AgMBAAGjezB5MAkGA1Ud
+EwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmlj
+YXRlMB0GA1UdDgQWBBQMJwUSm9VL+UMya3d7og00f2wKvDAfBgNVHSMEGDAWgBT9
+c770MzM4GJ+5nGnUEv6BMZUDCjANBgkqhkiG9w0BAQUFAAOBgQANv2UqpQJ1bMRa
+PB08JVEWGvh4rUn29KTBl+TIC6yecQ6+HuYdLsfSTx7oxyF8WCcObZMRfmQkV0TB
+wVrQdoJ5cII2BvJIYOhqIKeSCQBzdbL5y5c11qqOhxEg4t2Kw5zEqvBXBE7is4v7
+mk9LYLcuO4mYOAIlJP+x8cCtAes3vQ==
+-----END CERTIFICATE-----
diff --git a/TAO/orbsvcs/tests/Security/ssliop_corbaloc/server_key.pem b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/server_key.pem
new file mode 100644
index 00000000000..be238899a9f
--- /dev/null
+++ b/TAO/orbsvcs/tests/Security/ssliop_corbaloc/server_key.pem
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXgIBAAKBgQCyAye51iSkbeGfDteKcYZi3yv4ZDtRU+D6cZrCEECXvQYnQ1oa
+HGL0yj6zuSAWiaKqLh6XOnA9/vf/utUesmgHftBoGIo7qpwBDh7vtZeW1QuloP2j
+AiG1Wm/kwTa/YXtArHMDPUB15526IquVgYt0nvrfJxinfyODNvAVIiLbewIDAQAB
+AoGAMV1KoPBPjQGjtbYp84xz1etJiEJTaMQ3+XuTjQlwwCN9F1pIHEGO9482QCSw
+T0+vuj274fgktCyGnXY0L6UNz7+0wNhUj5oP2IeJdmgcJbv9tcR126rhryr4bx6H
+2sZdLL4MtxjzRNkURS748zeGET/NuIhpQ4YjnUJ27YOeNtECQQDiItcRkyfMcj+r
+/8JU8h9ifOV5tMOyPV4z6Hfli1X+Xa1OcIieE2nzkaa9LHPEi3+LNw41LItUDbMZ
+/Aztm4VVAkEAyYVbbbebVrgoOF7ueafHZeNToc96FEn04H+tN8AgwaI4+U1Q7oga
+EAjVD++e0NfUUJpeyiygBa9NlzB9XYXdjwJBAJobUCHD/R1Qxp96fn7ROh4uK1xT
+mgG/3JDXXc3qtMHSKScJfbDsXgoFOnI09vf8cQD4lhAauSCg7WtJ362VjLkCQQCu
+eVRoUNAgK78+1wo3sAiWcVRGQyDaEhH+kOxC2YhCvZYAWm1Yp+OQwGTfsEHbZRIA
+Wzb4adx+L4HJBYV1BGKHAkEAvSCAANbm8iaLkCG4EfEyrhIpbJDY2Cx3WO08+ZOz
+ekMspMikGmMQfXXroBpnJ8SGVLYSjf2hQQySwDa00hmyBA==
+-----END RSA PRIVATE KEY-----
diff --git a/TAO/tao/CORBALOC_Parser.cpp b/TAO/tao/CORBALOC_Parser.cpp
index 63cd20f81ae..fd98b445944 100644
--- a/TAO/tao/CORBALOC_Parser.cpp
+++ b/TAO/tao/CORBALOC_Parser.cpp
@@ -136,7 +136,7 @@ TAO_CORBALOC_Parser::parse_string (const char * ior, CORBA::ORB_ptr orb)
size_t len = 0;
size_t ndx = endpoints.size();
endpoints.size(ndx+1);
- int uiop_compatible = 0;
+ bool uiop_compatible = false;
TAO_ConnectorSetIterator conn_iter = 0;
for (conn_iter = conn_reg->begin();
conn_iter != conn_reg->end() &&
@@ -148,8 +148,7 @@ TAO_CORBALOC_Parser::parse_string (const char * ior, CORBA::ORB_ptr orb)
if (endpoints[ndx].profile_)
{
- endpoints[ndx].obj_key_sep_ =
- (*conn_iter)->object_key_delimiter();
+ endpoints[ndx].obj_key_sep_ = (*conn_iter)->object_key_delimiter();
uiop_compatible = (endpoints[ndx].obj_key_sep_ == '|');
this->make_canonical (ior,len,endpoints[ndx].prot_addr_);
ior += len;
@@ -172,7 +171,7 @@ TAO_CORBALOC_Parser::parse_string (const char * ior, CORBA::ORB_ptr orb)
continue;
}
- if (*ior == '/') // found key separator
+ if (*ior == endpoints[ndx].obj_key_sep_) // found key separator
{
++ior;
break;
@@ -192,7 +191,7 @@ TAO_CORBALOC_Parser::parse_string (const char * ior, CORBA::ORB_ptr orb)
if (TAO_debug_level)
TAOLIB_ERROR ((LM_ERROR,
ACE_TEXT("TAO (%P|%t) - TAO_CORBALOC_Parser::parse_string ")
- ACE_TEXT("could not parse from %C\n"),
+ ACE_TEXT("could not parse from <%C>\n"),
ior));
throw ::CORBA::BAD_PARAM (CORBA::OMGVMCID | 10, CORBA::COMPLETED_NO);
} // end of while
@@ -211,7 +210,7 @@ TAO_CORBALOC_Parser::parse_string (const char * ior, CORBA::ORB_ptr orb)
obj_key;
const char * str = full_ep.c_str();
endpoints[i].profile_->parse_string (str);
- int share = orb->orb_core()->orb_params()->shared_profile();
+ int const share = orb->orb_core()->orb_params()->shared_profile();
if (mprofile.give_profile(endpoints[i].profile_, share) != -1)
endpoints[i].profile_ = 0;
else
diff --git a/TAO/tao/DynamicInterface/DII_Reply_Dispatcher.cpp b/TAO/tao/DynamicInterface/DII_Reply_Dispatcher.cpp
index 7e987815b35..f7cab432921 100644
--- a/TAO/tao/DynamicInterface/DII_Reply_Dispatcher.cpp
+++ b/TAO/tao/DynamicInterface/DII_Reply_Dispatcher.cpp
@@ -58,8 +58,8 @@ TAO_DII_Deferred_Reply_Dispatcher::dispatch_reply (
// Steal the buffer, that way we don't do any unnecessary copies of
// this data.
- CORBA::ULong max = params.svc_ctx_.maximum ();
- CORBA::ULong len = params.svc_ctx_.length ();
+ CORBA::ULong const max = params.svc_ctx_.maximum ();
+ CORBA::ULong const len = params.svc_ctx_.length ();
IOP::ServiceContext* context_list = params.svc_ctx_.get_buffer (1);
this->reply_service_info_.replace (max, len, context_list, 1);
@@ -78,7 +78,7 @@ TAO_DII_Deferred_Reply_Dispatcher::dispatch_reply (
{
if (TAO_debug_level >= 4)
{
- ex._tao_print_exception ("Exception during reply handler");
+ ex._tao_print_exception ("TAO_Asynch_Reply_Dispatcher::dispatch_reply, exception during reply handler");
}
}
@@ -167,8 +167,8 @@ TAO_DII_Asynch_Reply_Dispatcher::dispatch_reply (
// Steal the buffer, that way we don't do any unnecessary copies of
// this data.
- CORBA::ULong max = params.svc_ctx_.maximum ();
- CORBA::ULong len = params.svc_ctx_.length ();
+ CORBA::ULong const max = params.svc_ctx_.maximum ();
+ CORBA::ULong const len = params.svc_ctx_.length ();
IOP::ServiceContext* context_list = params.svc_ctx_.get_buffer (1);
this->reply_service_info_.replace (max, len, context_list, 1);
@@ -191,7 +191,7 @@ TAO_DII_Asynch_Reply_Dispatcher::dispatch_reply (
{
if (TAO_debug_level >= 4)
{
- ex._tao_print_exception ("Exception during reply handler");
+ ex._tao_print_exception ("TAO_DII_Asynch_Reply_Dispatcher::dispatch_reply, exception during reply handler");
}
}
// This was dynamically allocated. Now the job is done.
diff --git a/TAO/tao/Fixed_Array_Argument_T.inl b/TAO/tao/Fixed_Array_Argument_T.inl
index 92bf9518788..5ca66d03114 100644
--- a/TAO/tao/Fixed_Array_Argument_T.inl
+++ b/TAO/tao/Fixed_Array_Argument_T.inl
@@ -6,19 +6,7 @@ template<typename S_forany,
ACE_INLINE
TAO::In_Fixed_Array_Argument_T<S_forany,Insert_Policy>::
In_Fixed_Array_Argument_T (const typename S_forany::_slice_type * x)
- : x_ (
-#if defined __IBMCPP__ && __IBMCPP__ <= 800
- // @@ (OO) IBMCPP can't handle the const_cast<> in the
- // multi-dimensional array case so C-style
- // "sledgehammer" cast instead (reinterpret_cast<>
- // doesn't work either). It's not clear if this is
- // really the right thing to do but the code won't
- // compile without it.
- (typename S_forany::_slice_type *) x
-#else
- const_cast<typename S_forany::_slice_type *> (x)
-#endif /* IBMCPP */
- )
+ : x_ (const_cast<typename S_forany::_slice_type *> (x))
{
}
diff --git a/TAO/tao/IIOP_Connection_Handler.cpp b/TAO/tao/IIOP_Connection_Handler.cpp
index b282597af12..66900bc5dc8 100644
--- a/TAO/tao/IIOP_Connection_Handler.cpp
+++ b/TAO/tao/IIOP_Connection_Handler.cpp
@@ -349,7 +349,7 @@ TAO_IIOP_Connection_Handler::open (void*)
TAOLIB_DEBUG ((LM_DEBUG,
ACE_TEXT ("TAO (%P|%t) - IIOP_Connection_Handler::open, IIOP ")
- ACE_TEXT ("connection to peer <%s> on %d\n"),
+ ACE_TEXT ("connection to peer <%s> on [%d]\n"),
client_addr, this->peer ().get_handle ()));
}
diff --git a/TAO/tao/ImR_Client/ImplRepo.idl b/TAO/tao/ImR_Client/ImplRepo.idl
index fda944c0d08..bcd9e4a3026 100644
--- a/TAO/tao/ImR_Client/ImplRepo.idl
+++ b/TAO/tao/ImR_Client/ImplRepo.idl
@@ -89,6 +89,7 @@ module ImplementationRepository
/// just the ObjectKey missing.
string partial_ior;
+ /// Server status
ServerActiveStatus activeStatus;
};
diff --git a/TAO/tao/Messaging/Asynch_Reply_Dispatcher.cpp b/TAO/tao/Messaging/Asynch_Reply_Dispatcher.cpp
index 3d17c8a8d35..31e20589456 100644
--- a/TAO/tao/Messaging/Asynch_Reply_Dispatcher.cpp
+++ b/TAO/tao/Messaging/Asynch_Reply_Dispatcher.cpp
@@ -137,7 +137,7 @@ TAO_Asynch_Reply_Dispatcher::dispatch_reply (TAO_Pluggable_Reply_Params &params)
catch (const ::CORBA::Exception& ex)
{
if (TAO_debug_level >= 4)
- ex._tao_print_exception ("Exception during reply handler");
+ ex._tao_print_exception ("Asynch_Reply_Dispatcher::dispatch_reply, exception during reply handler");
}
}
diff --git a/TAO/tao/Messaging/Messaging.h b/TAO/tao/Messaging/Messaging.h
index 709e0afbd11..d9520e92332 100644
--- a/TAO/tao/Messaging/Messaging.h
+++ b/TAO/tao/Messaging/Messaging.h
@@ -36,13 +36,7 @@ public:
static int init (void);
};
-static int
-TAO_Requires_Messaging_Initializer = TAO_Messaging_Initializer::init ();
-
-// Typedef for the Reply Handler Skeleton.
-// This is handcrafted not generated by the IDL compiler.
-
-class TAO_InputCDR;
+static const int TAO_Requires_Messaging_Initializer = TAO_Messaging_Initializer::init ();
enum TAO_AMI_Reply_Status
{
@@ -65,7 +59,10 @@ enum TAO_AMI_Reply_Status
TAO_AMI_REPLY_LOCATION_FORWARD_PERM
};
+class TAO_InputCDR;
+/// Typedef for the Reply Handler Skeleton.
+/// This is handcrafted not generated by the IDL compiler.
typedef void (*TAO_Reply_Handler_Stub)(
TAO_InputCDR &,
Messaging::ReplyHandler_ptr,
diff --git a/TAO/tao/Strategies/SCIOP_Connection_Handler.cpp b/TAO/tao/Strategies/SCIOP_Connection_Handler.cpp
index ca78a469494..c538040a969 100644
--- a/TAO/tao/Strategies/SCIOP_Connection_Handler.cpp
+++ b/TAO/tao/Strategies/SCIOP_Connection_Handler.cpp
@@ -238,7 +238,7 @@ TAO_SCIOP_Connection_Handler::open (void*)
TAOLIB_DEBUG ((LM_DEBUG,
ACE_TEXT ("TAO (%P|%t) - SCIOP_Connection_Handler::open, SCIOP ")
- ACE_TEXT ("connection to peer <%s> on %d\n"),
+ ACE_TEXT ("connection to peer <%s> on [%d]\n"),
client, this->peer ().get_handle ()));
}
diff --git a/TAO/tao/Strategies/SHMIOP_Profile.cpp b/TAO/tao/Strategies/SHMIOP_Profile.cpp
index 94c29e1ff66..17a3b19add8 100644
--- a/TAO/tao/Strategies/SHMIOP_Profile.cpp
+++ b/TAO/tao/Strategies/SHMIOP_Profile.cpp
@@ -386,7 +386,7 @@ TAO_SHMIOP_Profile::create_profile_body (TAO_OutputCDR &encap) const
else
{
TAOLIB_ERROR ((LM_ERROR,
- "(%P|%t) TAO - UIOP_Profile::create_profile_body "
+ "(%P|%t) TAO - SHMIOP_Profile::create_profile_body "
"no object key marshalled\n"));
}
diff --git a/TAO/tao/Strategies/UIOP_Connection_Handler.cpp b/TAO/tao/Strategies/UIOP_Connection_Handler.cpp
index 92ee31f5679..e6638ac8f3f 100644
--- a/TAO/tao/Strategies/UIOP_Connection_Handler.cpp
+++ b/TAO/tao/Strategies/UIOP_Connection_Handler.cpp
@@ -120,7 +120,7 @@ TAO_UIOP_Connection_Handler::open (void*)
if (TAO_debug_level > 0)
TAOLIB_DEBUG ((LM_DEBUG,
- ACE_TEXT ("TAO (%P|%t) UIOP connection to server ")
+ ACE_TEXT ("TAO (%P|%t) - UIOP_Connection_Handler::open, connection to server ")
ACE_TEXT ("<%C> on %d\n"),
addr.get_path_name (), this->peer ().get_handle ()));
diff --git a/TAO/tao/Strategies/UIOP_Connector.cpp b/TAO/tao/Strategies/UIOP_Connector.cpp
index 1d739ccd8c8..c4abd8dd420 100644
--- a/TAO/tao/Strategies/UIOP_Connector.cpp
+++ b/TAO/tao/Strategies/UIOP_Connector.cpp
@@ -86,7 +86,7 @@ TAO_UIOP_Connector::corbaloc_scan (const char *str, size_t &len)
str));
return 0;
}
- len = (separator - str) + 1;
+ len = separator - str;
return this->make_profile ();
}
diff --git a/TAO/tao/Transport.cpp b/TAO/tao/Transport.cpp
index 43fe81ae0e5..9792cd3ab69 100644
--- a/TAO/tao/Transport.cpp
+++ b/TAO/tao/Transport.cpp
@@ -2797,7 +2797,7 @@ TAO_Transport::post_open (size_t id)
if (TAO_debug_level > 9)
{
TAOLIB_DEBUG ((LM_DEBUG, ACE_TEXT ("TAO (%P|%t) - Transport::post_open, ")
- ACE_TEXT ("tport id changed from %d to %d\n"), this->id_, id));
+ ACE_TEXT ("tport id changed from [%d] to [%d]\n"), this->id_, id));
}
this->id_ = id;
@@ -2851,10 +2851,10 @@ TAO_Transport::post_open (size_t id)
this->is_connected_ = true;
}
- if (TAO_debug_level > 9 && !this->cache_map_entry_)
+ if (TAO_debug_level > 9)
{
TAOLIB_DEBUG ((LM_DEBUG, ACE_TEXT ("TAO (%P|%t) - Transport[%d]::post_open")
- ACE_TEXT (", cache_map_entry_ is 0\n"), this->id_));
+ ACE_TEXT (", cache_map_entry_ is [%@]\n"), this->id_, this->cache_map_entry_));
}
this->transport_cache_manager ().mark_connected (this->cache_map_entry_,
diff --git a/TAO/tao/Valuetype/ValueFactory_Map.h b/TAO/tao/Valuetype/ValueFactory_Map.h
index b410dc59066..e2653291683 100644
--- a/TAO/tao/Valuetype/ValueFactory_Map.h
+++ b/TAO/tao/Valuetype/ValueFactory_Map.h
@@ -50,13 +50,13 @@ public:
int rebind (const char *repo_id,
CORBA::ValueFactory &factory);
- /// Removes entry for repo_id from the map and sets factory to
+ /// Removes entry for @a repo_id from the map and sets factory to
/// the tied one.
int unbind (const char *repo_id,
CORBA::ValueFactory &factory);
/**
- * Lookup a matching factory for repo_id.
+ * Lookup a matching factory for @a repo_id.
* Invokes _add_ref () on the factory if found.
* Returns -1 on failure and 0 on success.
*/
diff --git a/TAO/tao/Valuetype/Valuetype_Adapter_Factory_Impl.h b/TAO/tao/Valuetype/Valuetype_Adapter_Factory_Impl.h
index 93bfc9d2fd2..d2c013cf17d 100644
--- a/TAO/tao/Valuetype/Valuetype_Adapter_Factory_Impl.h
+++ b/TAO/tao/Valuetype/Valuetype_Adapter_Factory_Impl.h
@@ -47,11 +47,9 @@ public:
static int Initializer (void);
};
-static int
-TAO_Requires_ValueType_Initializer =
+static const int TAO_Requires_ValueType_Initializer =
TAO_Valuetype_Adapter_Factory_Impl::Initializer ();
-
ACE_STATIC_SVC_DECLARE (TAO_Valuetype_Adapter_Factory_Impl)
ACE_FACTORY_DECLARE (TAO_Valuetype, TAO_Valuetype_Adapter_Factory_Impl)
diff --git a/TAO/tao/Version.h b/TAO/tao/Version.h
index 87760ca851a..eba91f3bf38 100644
--- a/TAO/tao/Version.h
+++ b/TAO/tao/Version.h
@@ -4,9 +4,9 @@
#define TAO_MAJOR_VERSION 2
#define TAO_MINOR_VERSION 5
-#define TAO_MICRO_VERSION 2
-#define TAO_BETA_VERSION 2
-#define TAO_VERSION "2.5.2"
-#define TAO_VERSION_CODE 132354
+#define TAO_MICRO_VERSION 3
+#define TAO_BETA_VERSION 3
+#define TAO_VERSION "2.5.3"
+#define TAO_VERSION_CODE 132355
#define TAO_MAKE_VERSION_CODE(a,b,c) (((a) << 16) + ((b) << 8) + (c))
diff --git a/TAO/tests/Bug_3940_Regression/Bug_3940_Regression.mpc b/TAO/tests/Bug_3940_Regression/Bug_3940_Regression.mpc
index 92fc577565c..18232e96e23 100644
--- a/TAO/tests/Bug_3940_Regression/Bug_3940_Regression.mpc
+++ b/TAO/tests/Bug_3940_Regression/Bug_3940_Regression.mpc
@@ -1,3 +1,4 @@
// -*- MPC -*-
project (test3940) : taolib_with_idl {
+ idlflags += --idl-version 4
}
diff --git a/TAO/tests/Bug_3940_Regression/test.idl b/TAO/tests/Bug_3940_Regression/test.idl
index 0bb7fbcc68c..904c8910ddc 100644
--- a/TAO/tests/Bug_3940_Regression/test.idl
+++ b/TAO/tests/Bug_3940_Regression/test.idl
@@ -1,5 +1,25 @@
#if !defined (__BORLANDC__)
+@annotation unit {
+ string value;
+};
+
+@annotation range {
+ double min;
+ double max;
+};
+
+@annotation min {
+ long value;
+};
+
+@annotation max {
+ long value;
+};
+
+@annotation key {
+};
+
module test {
@unit("deg")
diff --git a/TAO/tests/Bug_4213_Regression/Bug_4213_Regression.mpc b/TAO/tests/Bug_4213_Regression/Bug_4213_Regression.mpc
new file mode 100644
index 00000000000..370086e5f73
--- /dev/null
+++ b/TAO/tests/Bug_4213_Regression/Bug_4213_Regression.mpc
@@ -0,0 +1,35 @@
+// -*- MPC -*-
+project(*idl): taoidldefaults {
+ idlflags += -Sp
+ IDL_Files {
+ Test.idl
+ }
+ custom_only = 1
+}
+
+project(*Server): strategies, taoserver, iortable {
+ after += *idl
+ Source_Files {
+ Hello.cpp
+ server.cpp
+ }
+ Source_Files {
+ TestC.cpp
+ TestS.cpp
+ }
+ IDL_Files {
+ }
+}
+
+project(*Client): strategies, taoclient {
+ after += *idl
+ Source_Files {
+ client.cpp
+ }
+ Source_Files {
+ TestC.cpp
+ }
+ IDL_Files {
+ }
+}
+
diff --git a/TAO/tests/Bug_4213_Regression/Hello.cpp b/TAO/tests/Bug_4213_Regression/Hello.cpp
new file mode 100644
index 00000000000..733fe2bfcaf
--- /dev/null
+++ b/TAO/tests/Bug_4213_Regression/Hello.cpp
@@ -0,0 +1,18 @@
+#include "Hello.h"
+
+Hello::Hello (CORBA::ORB_ptr orb)
+ : orb_ (CORBA::ORB::_duplicate (orb))
+{
+}
+
+char *
+Hello::get_string (void)
+{
+ return CORBA::string_dup ("Hello there!");
+}
+
+void
+Hello::shutdown (void)
+{
+ this->orb_->shutdown (0);
+}
diff --git a/TAO/tests/Bug_4213_Regression/Hello.h b/TAO/tests/Bug_4213_Regression/Hello.h
new file mode 100644
index 00000000000..8b2124d9fe5
--- /dev/null
+++ b/TAO/tests/Bug_4213_Regression/Hello.h
@@ -0,0 +1,28 @@
+
+#ifndef HELLO_H
+#define HELLO_H
+#include /**/ "ace/pre.h"
+
+#include "TestS.h"
+
+/// Implement the Test::Hello interface
+class Hello
+ : public virtual POA_Test::Hello
+{
+public:
+ /// Constructor
+ Hello (CORBA::ORB_ptr orb);
+
+ // = The skeleton methods
+ virtual char * get_string (void);
+
+ virtual void shutdown (void);
+
+private:
+ /// Use an ORB reference to convert strings to objects and shutdown
+ /// the application.
+ CORBA::ORB_var orb_;
+};
+
+#include /**/ "ace/post.h"
+#endif /* HELLO_H */
diff --git a/TAO/tests/Bug_4213_Regression/Test.idl b/TAO/tests/Bug_4213_Regression/Test.idl
new file mode 100644
index 00000000000..6cd2805ea74
--- /dev/null
+++ b/TAO/tests/Bug_4213_Regression/Test.idl
@@ -0,0 +1,17 @@
+
+/// Put the interfaces in a module, to avoid global namespace pollution
+module Test
+{
+ /// A very simple interface
+ interface Hello
+ {
+ /// Return a simple string
+ string get_string ();
+
+ /// A method to shutdown the ORB
+ /**
+ * This method is used to simplify the test shutdown process
+ */
+ oneway void shutdown ();
+ };
+};
diff --git a/TAO/tests/Bug_4213_Regression/client.cpp b/TAO/tests/Bug_4213_Regression/client.cpp
new file mode 100644
index 00000000000..0c84ecddb37
--- /dev/null
+++ b/TAO/tests/Bug_4213_Regression/client.cpp
@@ -0,0 +1,71 @@
+#include "TestC.h"
+#include "ace/Get_Opt.h"
+#include "tao/Strategies/advanced_resource.h"
+
+const ACE_TCHAR *ior = ACE_TEXT ("file://test.ior");
+
+int
+parse_args (int argc, ACE_TCHAR *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("k:"));
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'k':
+ ior = get_opts.opt_arg ();
+ break;
+
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s "
+ "-k <ior> "
+ "\n",
+ argv [0]),
+ -1);
+ }
+ // Indicates successful parsing of the command line
+ return 0;
+}
+
+int
+ACE_TMAIN(int argc, ACE_TCHAR *argv[])
+{
+ try
+ {
+ CORBA::ORB_var orb = CORBA::ORB_init (argc, argv);
+
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+ CORBA::Object_var tmp = orb->string_to_object(ior);
+
+ Test::Hello_var hello = Test::Hello::_narrow(tmp.in ());
+
+ if (CORBA::is_nil (hello.in ()))
+ {
+ ACE_ERROR_RETURN ((LM_DEBUG,
+ "Nil Test::Hello reference <%s>\n",
+ ior),
+ 1);
+ }
+
+ CORBA::String_var the_string = hello->get_string ();
+
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t) - string returned <%C>\n",
+ the_string.in ()));
+
+ hello->shutdown ();
+
+ orb->destroy ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception caught:");
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/TAO/tests/Bug_4213_Regression/run_test.pl b/TAO/tests/Bug_4213_Regression/run_test.pl
new file mode 100755
index 00000000000..4e8dc670d68
--- /dev/null
+++ b/TAO/tests/Bug_4213_Regression/run_test.pl
@@ -0,0 +1,83 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# -*- perl -*-
+
+use lib "$ENV{ACE_ROOT}/bin";
+use PerlACE::TestTarget;
+
+$status = 0;
+$debug_level = '0';
+$cdebug_level = '0';
+foreach $i (@ARGV) {
+ if ($i eq '-debug') {
+ $debug_level = '10';
+ }
+ if ($i eq '-cdebug') {
+ $cdebug_level = '10';
+ }
+}
+
+my $server = PerlACE::TestTarget::create_target (1) || die "Create target 1 failed\n";
+my $client = PerlACE::TestTarget::create_target (2) || die "Create target 2 failed\n";
+
+my $iorbase = "server.ior";
+my $socket_name = "/tmp/endpoint";
+my $server_iorfile = $server->LocalFile ($iorbase);
+my $server_socket = $server->LocalFile ($socket_name);
+my $client_iorfile = $client->LocalFile ($iorbase);
+my $client_socket = $client->LocalFile ($socket_name);
+
+$server->DeleteFile($iorbase);
+$server->DeleteFile($socket_name);
+$client->DeleteFile($iorbase);
+$client->DeleteFile($socket_name);
+
+$SV = $server->CreateProcess ("server", "-ORBdebuglevel $debug_level -o $server_iorfile -ORBEndpoint uiop://$server_socket");
+$CL = $client->CreateProcess ("client", "-ORBdebuglevel $cdebug_level -k corbaloc:uiop:$server_socket|Hello");
+$server_status = $SV->Spawn ();
+
+if ($server_status != 0) {
+ print STDERR "ERROR: server returned $server_status\n";
+ exit 1;
+}
+
+if ($server->WaitForFileTimed ($iorbase,
+ $server->ProcessStartWaitInterval()) == -1) {
+ print STDERR "ERROR: cannot find file <$server_iorfile>\n";
+ $SV->Kill (); $SV->TimedWait (1);
+ exit 1;
+}
+
+if ($server->GetFile ($iorbase) == -1) {
+ print STDERR "ERROR: cannot retrieve file <$server_iorfile>\n";
+ $SV->Kill (); $SV->TimedWait (1);
+ exit 1;
+}
+if ($client->PutFile ($iorbase) == -1) {
+ print STDERR "ERROR: cannot set file <$client_iorfile>\n";
+ $SV->Kill (); $SV->TimedWait (1);
+ exit 1;
+}
+
+$client_status = $CL->SpawnWaitKill ($client->ProcessStartWaitInterval());
+
+if ($client_status != 0) {
+ print STDERR "ERROR: client returned $client_status\n";
+ $status = 1;
+}
+
+$server_status = $SV->WaitKill ($server->ProcessStopWaitInterval());
+
+if ($server_status != 0) {
+ print STDERR "ERROR: server returned $server_status\n";
+ $status = 1;
+}
+
+$server->DeleteFile($iorbase);
+$server->DeleteFile($socket_name);
+$client->DeleteFile($iorbase);
+$client->DeleteFile($socket_name);
+
+exit $status;
diff --git a/TAO/tests/Bug_4213_Regression/server.cpp b/TAO/tests/Bug_4213_Regression/server.cpp
new file mode 100644
index 00000000000..8a476508f3e
--- /dev/null
+++ b/TAO/tests/Bug_4213_Regression/server.cpp
@@ -0,0 +1,113 @@
+#include "Hello.h"
+#include "ace/Get_Opt.h"
+#include "ace/OS_NS_stdio.h"
+#include "tao/Strategies/advanced_resource.h"
+#include "tao/IORTable/IORTable.h"
+
+const ACE_TCHAR *ior_output_file = ACE_TEXT ("test.ior");
+
+int
+parse_args (int argc, ACE_TCHAR *argv[])
+{
+ ACE_Get_Opt get_opts (argc, argv, ACE_TEXT("o:"));
+ int c;
+
+ while ((c = get_opts ()) != -1)
+ switch (c)
+ {
+ case 'o':
+ ior_output_file = get_opts.opt_arg ();
+ break;
+
+ case '?':
+ default:
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "usage: %s "
+ "-o <iorfile>"
+ "\n",
+ argv [0]),
+ -1);
+ }
+ // Indicates successful parsing of the command line
+ return 0;
+}
+
+int
+ACE_TMAIN(int argc, ACE_TCHAR *argv[])
+{
+ try
+ {
+ CORBA::ORB_var orb =
+ CORBA::ORB_init (argc, argv);
+
+ CORBA::Object_var poa_object =
+ orb->resolve_initial_references("RootPOA");
+
+ PortableServer::POA_var root_poa =
+ PortableServer::POA::_narrow (poa_object.in ());
+
+ if (CORBA::is_nil (root_poa.in ()))
+ ACE_ERROR_RETURN ((LM_ERROR,
+ " (%P|%t) Panic: nil RootPOA\n"),
+ 1);
+
+ PortableServer::POAManager_var poa_manager = root_poa->the_POAManager ();
+
+ if (parse_args (argc, argv) != 0)
+ return 1;
+
+ Hello *hello_impl = 0;
+ ACE_NEW_RETURN (hello_impl,
+ Hello (orb.in ()),
+ 1);
+ PortableServer::ServantBase_var owner_transfer(hello_impl);
+
+ PortableServer::ObjectId_var id =
+ root_poa->activate_object (hello_impl);
+
+ CORBA::Object_var object = root_poa->id_to_reference (id.in ());
+
+ Test::Hello_var hello = Test::Hello::_narrow (object.in ());
+
+ CORBA::String_var ior = orb->object_to_string (hello.in ());
+
+ CORBA::Object_var table_object = orb->resolve_initial_references ("IORTable");
+
+ IORTable::Table_var adapter = IORTable::Table::_narrow (table_object.in ());
+ if (CORBA::is_nil (adapter.in ()))
+ {
+ ACE_ERROR ((LM_ERROR, "Nil IORTable\n"));
+ }
+ else
+ {
+ adapter->bind ("Hello", ior.in ());
+ }
+
+ // Output the IOR to the <ior_output_file>
+ FILE *output_file= ACE_OS::fopen (ior_output_file, "w");
+ if (output_file == 0)
+ ACE_ERROR_RETURN ((LM_ERROR,
+ "Cannot open output file for writing IOR: <%s>\n",
+ ior_output_file),
+ 1);
+ ACE_OS::fprintf (output_file, "%s", ior.in ());
+ ACE_OS::fclose (output_file);
+
+ poa_manager->activate ();
+
+ orb->run ();
+
+ ACE_DEBUG ((LM_DEBUG, "(%P|%t) server - event loop finished\n"));
+
+ root_poa->destroy (1, 1);
+
+ orb->destroy ();
+ }
+ catch (const CORBA::Exception& ex)
+ {
+ ex._tao_print_exception ("Exception caught:");
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/TAO/tests/Connection_Purging/README b/TAO/tests/Connection_Purging/README
index 95524a2116d..d4b9df91f89 100644
--- a/TAO/tests/Connection_Purging/README
+++ b/TAO/tests/Connection_Purging/README
@@ -1,5 +1,3 @@
-
-
Connection Purging
------------------
diff --git a/TAO/tests/Connection_Purging/test.idl b/TAO/tests/Connection_Purging/test.idl
index 7c5dec9cd92..5713764cb2a 100644
--- a/TAO/tests/Connection_Purging/test.idl
+++ b/TAO/tests/Connection_Purging/test.idl
@@ -1,6 +1,4 @@
interface test
{
void send_stuff(in string foo);
-
-// oneway void shutdown ();
};
diff --git a/TAO/tests/Hello/README b/TAO/tests/Hello/README
index 8ad74ef9611..926f2f9c674 100644
--- a/TAO/tests/Hello/README
+++ b/TAO/tests/Hello/README
@@ -1,7 +1,5 @@
/**
-
-
@page Hello Test README File
The simplest possible test for TAO. This is a very simple
diff --git a/TAO/tests/IDL_Test/.gitignore b/TAO/tests/IDL_Test/.gitignore
index 9a159eea34b..ab69fed79c6 100644
--- a/TAO/tests/IDL_Test/.gitignore
+++ b/TAO/tests/IDL_Test/.gitignore
@@ -1,457 +1,11 @@
-/anonymousA.cpp
-/anonymousA.h
-/anonymousC.cpp
-/anonymousC.h
-/anonymousC.inl
-/anonymousS.cpp
-/anonymousS.h
-/anonymousS_T.cpp
-/anonymousS_T.h
-/anyunionC.cpp
-/anyunionC.h
-/anyunionC.inl
-/anyunionS.cpp
-/anyunionS.h
-/anyunionS_T.cpp
-/anyunionS_T.h
-/array_anon_nestedC.cpp
-/array_anon_nestedC.h
-/array_anon_nestedC.inl
-/array_anon_nestedS.cpp
-/array_anon_nestedS.h
-/array_anon_nestedS_T.cpp
-/array_anon_nestedS_T.h
-/array_onlyA.cpp
-/array_onlyA.h
-/array_onlyC.cpp
-/array_onlyC.h
-/array_onlyC.inl
-/array_onlyS.cpp
-/array_onlyS.h
-/array_onlyS_T.cpp
-/array_onlyS_T.h
-/array_onlySupport.cxx
-/array_onlySupport.h
-/arrayA.cpp
-/arrayC.cpp
-/arrayC.h
-/arrayC.inl
-/arrayS.cpp
-/arrayS.h
-/arrayS_T.cpp
-/arrayS_T.h
-/attribute.cxx
-/attribute.h
-/attributeC.cpp
-/attributeC.h
-/attributeC.inl
-/attributePlugin.cxx
-/attributePlugin.h
-/attributeS.cpp
-/attributeS.h
-/attributeS_T.cpp
-/attributeS_T.h
-/attributeSupport.cxx
-/attributeSupport.h
-/Bug_2350_RegressionC.cpp
-/Bug_2350_RegressionC.h
-/Bug_2350_RegressionC.inl
-/Bug_2350_RegressionS.cpp
-/Bug_2350_RegressionS.h
-/Bug_2350_RegressionS_T.cpp
-/Bug_2350_RegressionS_T.h
-/Bug_2577_RegressionC.cpp
-/Bug_2577_RegressionC.h
-/Bug_2577_RegressionC.inl
-/Bug_2577_RegressionS.cpp
-/Bug_2577_RegressionS.h
-/Bug_2577_RegressionS_T.cpp
-/Bug_2577_RegressionS_T.h
-/Bug_2582_RegressionC.cpp
-/Bug_2582_RegressionC.h
-/Bug_2582_RegressionC.inl
-/Bug_2582_RegressionS.cpp
-/Bug_2582_RegressionS.h
-/Bug_2582_RegressionS_T.cpp
-/Bug_2582_RegressionS_T.h
-/Bug_2583_RegressionC.cpp
-/Bug_2583_RegressionC.h
-/Bug_2583_RegressionC.inl
-/Bug_2583_RegressionS.cpp
-/Bug_2583_RegressionS.h
-/Bug_2583_RegressionS_T.cpp
-/Bug_2583_RegressionS_T.h
-/Bug_2616_RegressionC.cpp
-/Bug_2616_RegressionC.h
-/Bug_2616_RegressionC.inl
-/Bug_2616_RegressionS.cpp
-/Bug_2616_RegressionS.h
-/Bug_2616_RegressionS_T.cpp
-/Bug_2616_RegressionS_T.h
-/Bug_2619_RegressionC.cpp
-/Bug_2619_RegressionC.h
-/Bug_2619_RegressionC.inl
-/Bug_2619_RegressionS.cpp
-/Bug_2619_RegressionS.h
-/Bug_2619_RegressionS_T.cpp
-/Bug_2619_RegressionS_T.h
-/Bug_3243_RegressionC.cpp
-/Bug_3243_RegressionC.h
-/Bug_3243_RegressionC.inl
-/Bug_3243_RegressionS.cpp
-/Bug_3243_RegressionS.h
-/Bug_3243_RegressionS_T.cpp
-/Bug_3243_RegressionS_T.h
-/Bug_3312_RegressionC.cpp
-/Bug_3312_RegressionC.h
-/Bug_3312_RegressionC.inl
-/Bug_3312_RegressionS.cpp
-/Bug_3312_RegressionS.h
-/Bug_3312_RegressionS_T.cpp
-/Bug_3312_RegressionS_T.h
-/Bug_3819_RegressionC.cpp
-/Bug_3819_RegressionC.h
-/Bug_3819_RegressionC.inl
-/Bug_3819_RegressionS.cpp
-/Bug_3819_RegressionS.h
-/Bug_3819_RegressionS_T.cpp
-/Bug_3819_RegressionS_T.h
-/Bug_3821_RegressionC.cpp
-/Bug_3821_RegressionC.h
-/Bug_3821_RegressionC.inl
-/Bug_3821_RegressionS.cpp
-/Bug_3821_RegressionS.h
-/Bug_3821_RegressionS_T.cpp
-/Bug_3821_RegressionS_T.h
-/constants.cxx
-/constants.h
-/constantsA.cpp
-/constantsA.h
-/constantsC.cpp
-/constantsC.h
-/constantsC.inl
-/constantsPlugin.cxx
-/constantsPlugin.h
-/constantsS.cpp
-/constantsS.h
-/constantsS_T.cpp
-/constantsS_T.h
-/constantsSupport.cxx
-/constantsSupport.h
-/dif2.cxx
-/dif2.h
-/dif2A.cpp
-/dif2A.h
-/dif2C.cpp
-/dif2C.h
-/dif2C.inl
-/dif2Plugin.cxx
-/dif2Plugin.h
-/dif2S.cpp
-/dif2S.h
-/dif2S_T.cpp
-/dif2S_T.h
-/dif2Support.cxx
-/dif2Support.h
-/enum_in_struct.cxx
-/enum_in_struct.h
-/enum_in_structA.cpp
-/enum_in_structC.cpp
-/enum_in_structC.h
-/enum_in_structC.inl
-/enum_in_structPlugin.cxx
-/enum_in_structPlugin.h
-/enum_in_structS.cpp
-/enum_in_structS.h
-/enum_in_structS_T.cpp
-/enum_in_structS_T.h
-/enum_in_structSupport.cxx
-/enum_in_structSupport.h
-/fullA.cpp
-/fullC.cpp
-/fullC.h
-/fullC.inl
-/fullS.cpp
-/fullS.h
-/fullS_T.cpp
-/fullS_T.h
-/fwdA.cpp
-/fwdC.cpp
-/fwdC.h
-/fwdC.inl
-/fwdS.cpp
-/fwdS.h
-/fwdS_T.cpp
-/fwdS_T.h
-/generic_objectA.cpp
-/generic_objectA.h
-/generic_objectC.cpp
-/generic_objectC.h
-/generic_objectC.inl
-/generic_objectS.cpp
-/generic_objectS.h
-/generic_objectS_T.cpp
-/generic_objectS_T.h
-/gperfA.cpp
-/gperfC.cpp
-/gperfC.h
-/gperfC.inl
-/gperfS.cpp
-/gperfS.h
-/gperfS_T.cpp
-/gperfS_T.h
-/includedA.cpp
-/includedC.cpp
-/includedC.h
-/includedC.inl
-/includedS.cpp
-/includedS.h
-/includedS_T.cpp
-/includedS_T.h
-/includedSupport.cxx
-/includedSupport.h
-/including.cxx
-/includingA.cpp
-/includingC.cpp
-/includingC.h
-/includingC.inl
-/includingS.cpp
-/includingS.h
-/includingS_T.cpp
-/includingS_T.h
-/inheritA.cpp
-/inheritA.h
-/inheritC.cpp
-/inheritC.h
-/inheritC.inl
-/inheritS.cpp
-/inheritS.h
-/inheritS_T.cpp
-/inheritS_T.h
-/interfaceA.cpp
-/interfaceC.cpp
-/interfaceC.h
-/interfaceC.inl
-/interfaceS.cpp
-/interfaceS.h
-/interfaceS_T.cpp
-/interfaceS_T.h
-/keywordsA.cpp
-/keywordsA.h
-/keywordsC.cpp
-/keywordsC.h
-/keywordsC.inl
-/keywordsS.cpp
-/keywordsS.h
-/keywordsS_T.cpp
-/keywordsS_T.h
-/loader_constC.cpp
-/loader_constC.h
-/loader_constC.inl
-/loader_constS.cpp
-/loader_constS.h
-/loader_constS_T.cpp
-/loader_constS_T.h
+/*A.cpp
+/*A.h
+/*C.cpp
+/*C.h
+/*C.inl
+/*S.cpp
+/*S.h
+/*S_T.cpp
+/*S_T.h
/main
-/moduleA.cpp
-/moduleA.h
-/moduleC.cpp
-/moduleC.h
-/moduleC.inl
-/moduleS.cpp
-/moduleS.h
-/moduleS_T.cpp
-/moduleS_T.h
-/nested_scopeA.cpp
-/nested_scopeC.cpp
-/nested_scopeC.h
-/nested_scopeC.inl
-/nested_scopeS.cpp
-/nested_scopeS.h
-/nested_scopeS_T.cpp
-/nested_scopeS_T.h
-/old_arrayC.cpp
-/old_arrayC.h
-/old_arrayC.inl
-/old_arrayS.cpp
-/old_arrayS.h
-/old_arrayS_T.cpp
-/old_arrayS_T.h
-/old_constantsC.cpp
-/old_constantsC.h
-/old_constantsC.inl
-/old_constantsS.cpp
-/old_constantsS.h
-/old_constantsS_T.cpp
-/old_constantsS_T.h
-/old_sequenceC.cpp
-/old_sequenceC.h
-/old_sequenceC.inl
-/old_sequenceS.cpp
-/old_sequenceS.h
-/old_sequenceS_T.cpp
-/old_sequenceS_T.h
-/old_structC.cpp
-/old_structC.h
-/old_structC.inl
-/old_structS.cpp
-/old_structS.h
-/old_structS_T.cpp
-/old_structS_T.h
-/old_union2C.cpp
-/old_union2C.h
-/old_union2C.inl
-/old_union2S.cpp
-/old_union2S.h
-/old_union2S_T.cpp
-/old_union2S_T.h
-/old_unionC.cpp
-/old_unionC.h
-/old_unionC.inl
-/old_unionS.cpp
-/old_unionS.h
-/old_unionS_T.cpp
-/old_unionS_T.h
-/paramsA.cpp
-/paramsC.cpp
-/paramsC.h
-/paramsC.inl
-/paramsS.cpp
-/paramsS.h
-/paramsS_T.cpp
-/paramsS_T.h
-/PEMNamingC.cpp
-/PEMNamingC.h
-/PEMNamingC.inl
-/PEMNamingS.cpp
-/PEMNamingS.h
-/PEMNamingS_T.cpp
-/PEMNamingS_T.h
-/pragmaA.cpp
-/pragmaA.h
-/pragmaC.cpp
-/pragmaC.h
-/pragmaC.inl
-/pragmaS.cpp
-/pragmaS.h
-/pragmaS_T.cpp
-/pragmaS_T.h
-/primtypesA.cpp
-/primtypesA.h
-/primtypesC.cpp
-/primtypesC.h
-/primtypesC.inl
-/primtypesS.cpp
-/primtypesS.h
-/primtypesS_T.cpp
-/primtypesS_T.h
-/reopen_include1A.cpp
-/reopen_include1C.cpp
-/reopen_include1C.h
-/reopen_include1C.inl
-/reopen_include1S.cpp
-/reopen_include1S.h
-/reopen_include1S_T.cpp
-/reopen_include1S_T.h
-/reopen_include2A.cpp
-/reopen_include2C.cpp
-/reopen_include2C.h
-/reopen_include2C.inl
-/reopen_include2S.cpp
-/reopen_include2S.h
-/reopen_include2S_T.cpp
-/reopen_include2S_T.h
-/reopened_modulesA.cpp
-/reopened_modulesC.cpp
-/reopened_modulesC.h
-/reopened_modulesC.inl
-/reopened_modulesS.cpp
-/reopened_modulesS.h
-/reopened_modulesS_T.cpp
-/reopened_modulesS_T.h
-/repo_id_modA.cpp
-/repo_id_modA.h
-/repo_id_modC.cpp
-/repo_id_modC.h
-/repo_id_modC.inl
-/repo_id_modS.cpp
-/repo_id_modS.h
-/repo_id_modS_T.cpp
-/repo_id_modS_T.h
-/sequenceA.cpp
-/sequenceC.cpp
-/sequenceC.h
-/sequenceC.inl
-/sequenceS.cpp
-/sequenceS.h
-/sequenceS_T.cpp
-/sequenceS_T.h
-/simple2C.cpp
-/simple2C.h
-/simple2C.inl
-/simple2S.cpp
-/simple2S.h
-/simple2S_T.cpp
-/simple2S_T.h
-/simpleC.cpp
-/simpleC.h
-/simpleC.inl
-/simpleS.cpp
-/simpleS.h
-/simpleS_T.cpp
-/simpleS_T.h
-/string_valueC.cpp
-/string_valueC.h
-/string_valueC.inl
-/string_valueS.cpp
-/string_valueS.h
-/string_valueS_T.cpp
-/string_valueS_T.h
-/structC.cpp
-/structC.h
-/structC.inl
-/structS.cpp
-/structS.h
-/structS_T.cpp
-/structS_T.h
/TAO_IDL_TEST_stub_export.h
-/typecodeA.cpp
-/typecodeA.h
-/typecodeC.cpp
-/typecodeC.h
-/typecodeC.inl
-/typecodeS.cpp
-/typecodeS.h
-/typecodeS_T.cpp
-/typecodeS_T.h
-/typedefA.cpp
-/typedefA.h
-/typedefC.cpp
-/typedefC.h
-/typedefC.inl
-/typedefS.cpp
-/typedefS.h
-/typedefS_T.cpp
-/typedefS_T.h
-/typeprefixC.cpp
-/typeprefixC.h
-/typeprefixC.inl
-/typeprefixS.cpp
-/typeprefixS.h
-/typeprefixS_T.cpp
-/typeprefixS_T.h
-/unionA.cpp
-/unionC.cpp
-/unionC.h
-/unionC.inl
-/unionS.cpp
-/unionS.h
-/unionS_T.cpp
-/unionS_T.h
-/valuetypeC.cpp
-/valuetypeC.h
-/valuetypeC.inl
-/valuetypeS.cpp
-/valuetypeS.h
-/valuetypeS_T.cpp
-/valuetypeS_T.h
diff --git a/TAO/tests/IDLv4/README.md b/TAO/tests/IDLv4/README.md
new file mode 100644
index 00000000000..442ab7a8666
--- /dev/null
+++ b/TAO/tests/IDLv4/README.md
@@ -0,0 +1,3 @@
+# IDLv4
+
+Tests for IDLv4.x features in tao\_idl.
diff --git a/TAO/tests/IDLv4/TestIDLv4.idl b/TAO/tests/IDLv4/TestIDLv4.idl
new file mode 100644
index 00000000000..d46d65705e7
--- /dev/null
+++ b/TAO/tests/IDLv4/TestIDLv4.idl
@@ -0,0 +1,111 @@
+// IDL v4.2 OMG formal/2018-01-05
+
+// 7.4.13 Building Block Extended Data-Types
+
+// 7.4.13.4.1 Extended Structs
+
+struct StructA {
+ long a;
+};
+
+struct StructB : StructA {
+ long b;
+};
+
+struct StructC : StructB {
+};
+
+// 7.4.13.4.2 Union Discriminators
+
+union UnionWC switch (wchar) {
+ case L'a':
+ long a;
+};
+
+union UnionOC switch (octet) {
+ case 42:
+ long a;
+};
+
+// 7.4.13.4.3.1 Maps
+
+typedef map<long, string> MapType;
+
+typedef map<long, string, 23> MapTypeBounded;
+
+// 7.4.13.4.3.2 Bit Sets
+
+bitset BitSet1 {
+ bitfield<1> bit0;
+ bitfield<1>; // skip bit1
+ bitfield<2, unsigned short> bits2_3;
+};
+
+bitset BitSet2 : BitSet1 {
+ bitfield<3>; // skip bits4-6
+ bitfield<1> bit7;
+};
+
+// 7.4.13.4.3.3 Bit Masks
+
+bitmask BitMask1 {
+ val0, val1, val2, val3
+};
+
+// 7.4.13.4.4 8-bit Integers
+
+typedef int8 ByteSigned;
+typedef uint8 ByteUnsigned;
+
+// 7.4.13.4.5 Alternate Names for Integer Types
+
+typedef int16 ShortSigned;
+typedef int32 LongSigned;
+typedef int64 LongLongSigned;
+typedef uint16 ShortUnsigned;
+typedef uint32 LongUnsigned;
+typedef uint64 LongLongUnsigned;
+
+// 7.4.14 Building Block Anonymous Types
+
+struct TestAnon {
+ sequence<string> a;
+ long b[4];
+};
+
+// 7.4.15 Building Block Annotations
+
+// 7.4.15.4.2 Applying Annotations
+
+@abc
+struct Annotated1 {
+
+ @def(1) octet a;
+ @ghi(2.3) octet b;
+ @jkl('m') octet c;
+ @nop(L'q') octet d;
+ @rst(TRUE) octet e;
+ @uvw("xyz") octet f;
+ @aa(L"bbcc") octet g;
+ @ddee(4 + 5) octet h;
+
+ const double dub = 6.78;
+ @ffgg(dub) octet i;
+
+ @hhii(jj = FALSE) octet j;
+ @kkll(mm = 3, nn = 'oo') octet k;
+};
+
+@bit_bound(8)
+bitmask BitMask2 {
+ @position(1) flag1
+};
+
+// 7.4.15.4.1 Defining Annotations
+// This should be able to be parsed but it will not effect anything except the
+// compiler will produce an warning that defining annotations will be ignored.
+// TODO: Make more cases
+@annotation Annotation1 {
+ short somevalue;
+};
+
diff --git a/TAO/tests/IDLv4/annotations/.gitignore b/TAO/tests/IDLv4/annotations/.gitignore
new file mode 100644
index 00000000000..a51abdaa9bc
--- /dev/null
+++ b/TAO/tests/IDLv4/annotations/.gitignore
@@ -0,0 +1 @@
+/annotest_idl
diff --git a/TAO/tests/IDLv4/annotations/README.md b/TAO/tests/IDLv4/annotations/README.md
new file mode 100644
index 00000000000..6d72e80db1a
--- /dev/null
+++ b/TAO/tests/IDLv4/annotations/README.md
@@ -0,0 +1,5 @@
+# Annotation Test IDL Compiler
+
+This is a instance of the `tao_idl` compiler that doesn't produces any output
+and just verifies annotations can be defined and read by the backend and that
+annotation data is correct. This testing is taking place in `be_init.cpp`.
diff --git a/TAO/tests/IDLv4/annotations/annotest_idl.cpp b/TAO/tests/IDLv4/annotations/annotest_idl.cpp
new file mode 100644
index 00000000000..9c19d4bede6
--- /dev/null
+++ b/TAO/tests/IDLv4/annotations/annotest_idl.cpp
@@ -0,0 +1 @@
+#include "TAO_IDL/tao_idl.cpp"
diff --git a/TAO/tests/IDLv4/annotations/annotest_idl.mpc b/TAO/tests/IDLv4/annotations/annotest_idl.mpc
new file mode 100644
index 00000000000..4f0b53d2071
--- /dev/null
+++ b/TAO/tests/IDLv4/annotations/annotest_idl.mpc
@@ -0,0 +1,6 @@
+project: aceexe {
+ exename = *
+ after += TAO_IDL_FE
+ libs += TAO_IDL_FE
+ includes += . $(TAO_ROOT)/TAO_IDL/include $(TAO_ROOT)/TAO_IDL/fe $(TAO_ROOT)
+}
diff --git a/TAO/tests/IDLv4/annotations/be_extern.h b/TAO/tests/IDLv4/annotations/be_extern.h
new file mode 100644
index 00000000000..4f9fc818dae
--- /dev/null
+++ b/TAO/tests/IDLv4/annotations/be_extern.h
@@ -0,0 +1,16 @@
+#ifndef ANNOTEST_IDL_BE_EXTERN_HEADER
+#define ANNOTEST_IDL_BE_EXTERN_HEADER
+
+#include "be_global.h"
+
+extern BE_GlobalData *be_global;
+
+extern int BE_init(int&, ACE_TCHAR*[]);
+extern void BE_post_init(char*[], long);
+extern void BE_version();
+extern void BE_produce();
+extern void BE_abort();
+extern void BE_cleanup();
+
+#endif
+
diff --git a/TAO/tests/IDLv4/annotations/be_global.cpp b/TAO/tests/IDLv4/annotations/be_global.cpp
new file mode 100644
index 00000000000..6ded8148d59
--- /dev/null
+++ b/TAO/tests/IDLv4/annotations/be_global.cpp
@@ -0,0 +1,38 @@
+#include "be_global.h"
+#include "be_util.h"
+#include "ast_generator.h"
+#include "global_extern.h"
+#include "idl_defines.h"
+#include "utl_err.h"
+#include "utl_string.h"
+
+#include "ace/OS_NS_strings.h"
+#include "ace/OS_NS_sys_stat.h"
+#include "ace/ARGV.h"
+
+BE_GlobalData *be_global = 0;
+
+BE_GlobalData::BE_GlobalData ()
+{
+}
+
+void
+BE_GlobalData::destroy ()
+{
+}
+
+ACE_CString
+BE_GlobalData::spawn_options ()
+{
+ return idl_global->idl_flags ();
+}
+
+void
+BE_GlobalData::parse_args (long &i, char **av)
+{
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("IDL: I don't understand the '%C' option\n"),
+ av[i]
+ ));
+ idl_global->parse_args_exit (1);
+}
diff --git a/TAO/tests/IDLv4/annotations/be_global.h b/TAO/tests/IDLv4/annotations/be_global.h
new file mode 100644
index 00000000000..3f98e13e94d
--- /dev/null
+++ b/TAO/tests/IDLv4/annotations/be_global.h
@@ -0,0 +1,23 @@
+#ifndef ANNOTEST_IDL_BE_GLOBAL_HEADER
+#define ANNOTEST_IDL_BE_GLOBAL_HEADER
+
+#include "ace/SString.h"
+
+class BE_GlobalData {
+public:
+ BE_GlobalData ();
+
+ void destroy ();
+
+ /**
+ * Spawn Command Line Options
+ */
+ ACE_CString spawn_options ();
+
+ /**
+ * Parse an argument that the frontend did not recognize.
+ */
+ void parse_args (long &i, char **av);
+};
+
+#endif
diff --git a/TAO/tests/IDLv4/annotations/be_init.cpp b/TAO/tests/IDLv4/annotations/be_init.cpp
new file mode 100644
index 00000000000..2d7124c7182
--- /dev/null
+++ b/TAO/tests/IDLv4/annotations/be_init.cpp
@@ -0,0 +1,1265 @@
+#include "tao/Version.h"
+#include "global_extern.h"
+#include "be_extern.h"
+#include "drv_extern.h"
+#include "idl_version.h"
+
+#include "ace/OS_NS_stdlib.h"
+#include "ace/OS_NS_string.h"
+#include "ace/OS_NS_stdio.h"
+
+#ifndef ACE_LACKS_IOSTREAM_TOTALLY
+# include "ace/streams.h"
+#endif
+
+#include "utl_identifier.h"
+#include "ast_generator.h"
+#include "utl_scope.h"
+#include "fe_declarator.h"
+#include "ast_field.h"
+#include "ast_annotation_decl.h"
+#include "ast_annotation_member.h"
+#include "ast_typedef.h"
+#include "ast_sequence.h"
+#include "ast_union.h"
+#include "ast_enum_val.h"
+#include "utl_string.h"
+#include "ast_array.h"
+
+void
+BE_version ()
+{
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("annotest_idl version ") ACE_TEXT (TAO_VERSION)
+ ACE_TEXT ("\n")));
+}
+
+int
+BE_init (int &, ACE_TCHAR *[])
+{
+ ACE_NEW_RETURN (be_global, BE_GlobalData, -1);
+
+ // Enable Annotations
+ idl_global->default_idl_version_ = IDL_VERSION_4;
+
+ // Disable Trying to Parse File Arguments and creating File Output
+ idl_global->ignore_files_ = true;
+
+ return 0;
+}
+
+/// Test Statistics
+///{
+static unsigned failed_test_count = 0;
+static unsigned total_test_count = 0;
+///}
+
+struct Failed {};
+
+class Annotation_Test {
+public:
+ const char *name_;
+ const char *idl_;
+ bool failed_;
+ int error_count_;
+ UTL_Error::ErrorCode last_error_, last_warning_;
+
+ explicit Annotation_Test (const char *name)
+ : name_ (name),
+ idl_ (0),
+ failed_ (false),
+ error_count_ (0),
+ last_error_ (UTL_Error::EIDL_OK),
+ last_warning_ (UTL_Error::EIDL_OK)
+ {
+ total_test_count++;
+ }
+
+ ~Annotation_Test ()
+ {
+ if (idl_global->err ()->last_error == UTL_Error::EIDL_SYNTAX_ERROR)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("Annotation Test: %C: ")
+ ACE_TEXT ("FAILED because of syntax error in:\n%C\n")
+ ACE_TEXT ("Check Syntax Error Message Above For More Infomation\n"),
+ name_, idl_));
+ ++failed_test_count;
+ }
+ else if (!failed_)
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("Annotation Test: %C: PASSED\n"), name_));
+ }
+ }
+
+ void failed (const char *message = 0)
+ {
+ if (message)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Annotation Test Error: %C: %C\n"),
+ name_, message));
+ }
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("Annotation Test: %C: FAILED\nFailed IDL:\n%C\n"),
+ name_, idl_));
+ failed_test_count++;
+ failed_ = true;
+ throw Failed ();
+ }
+
+ Annotation_Test &error_count (int error_count)
+ {
+ error_count_ = error_count;
+ return *this;
+ }
+
+ Annotation_Test &last_error (UTL_Error::ErrorCode last_error)
+ {
+ last_error_ = last_error;
+ return *this;
+ }
+
+ Annotation_Test &last_warning (UTL_Error::ErrorCode last_warning)
+ {
+ last_warning_ = last_warning;
+ return *this;
+ }
+
+ Annotation_Test &run (const char *idl)
+ {
+ // Reset Error State
+ idl_global->set_err_count (0);
+ idl_global->err ()->last_error = UTL_Error::EIDL_OK;
+ idl_global->err ()->last_warning = UTL_Error::EIDL_OK;
+
+ // Eval IDL
+ idl_ = idl;
+ idl_global->eval (idl);
+
+ // Look at Results
+ if (idl_global->err_count () != error_count_)
+ {
+ failed_ = true;
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Annotation Test Error: %C:\nError Count: expecting %d, got %d!\n"),
+ name_, error_count_, idl_global->err_count ()));
+ }
+ if (idl_global->err ()->last_error != last_error_)
+ {
+ failed_ = true;
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Annotation Test Error: %C:\n")
+ ACE_TEXT ("Last Error Code (UTL_Error::ErrorCode): expecting "),
+ name_));
+ if (last_error_ == UTL_Error::EIDL_OK)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("OK")));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("%d"), last_error_));
+ }
+ ACE_ERROR ((LM_ERROR, ACE_TEXT (", got ")));
+ if (idl_global->err ()->last_error == UTL_Error::EIDL_OK)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("OK")));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("%d"),
+ idl_global->err ()->last_error));
+ }
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("!\n")));
+ }
+ if (idl_global->err ()->last_warning != last_warning_)
+ {
+ failed_ = true;
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Annotation Test Error: %C:\n")
+ ACE_TEXT ("Last Warning Code (UTL_Error::ErrorCode): expecting "),
+ name_));
+ if (last_warning_ == UTL_Error::EIDL_OK)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("OK")));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("%d"), last_warning_));
+ }
+ ACE_ERROR ((LM_ERROR, ACE_TEXT (", got ")));
+ if (idl_global->err ()->last_warning == UTL_Error::EIDL_OK)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("OK")));
+ }
+ else
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("%d"),
+ idl_global->err ()->last_warning));
+ }
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("!\n")));
+ }
+ if (failed_)
+ {
+ failed ();
+ }
+
+ return *this;
+ }
+
+ AST_Decl *assert_node (const char *name, UTL_Scope *from = 0)
+ {
+ AST_Decl *node = 0;
+ UTL_ScopedName *scoped_name = FE_Utils::string_to_scoped_name (name);
+
+ UTL_Scope *scope = from ? from : idl_global->scopes ().bottom ();
+
+ if (scoped_name)
+ {
+ node = scope->lookup_by_name (scoped_name);
+ }
+
+ if (!node)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Annotation Test Error: %C:\n")
+ ACE_TEXT ("Failed to Find AST Node named %C!\n"),
+ name_, name));
+ failed ();
+ }
+
+ delete scoped_name;
+ return node;
+ }
+
+ AST_Annotation_Decl *assert_annotation_decl (const char *name)
+ {
+ AST_Annotation_Decl *node = dynamic_cast<AST_Annotation_Decl *>(
+ assert_node (name));
+
+ if (node->node_type () != AST_Decl::NT_annotation_decl)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Annotation Test Error: %C:\n")
+ ACE_TEXT ("AST Node named %C is not an AST_Annotation_Decl!\n"),
+ name_, name));
+ failed ();
+ }
+
+ return node;
+ }
+
+ void assert_annotation_appl_count (
+ AST_Decl *node, size_t count)
+ {
+ AST_Annotation_Appls &annotations = node->annotations ();
+ if (annotations.size () != count)
+ {
+ char *node_name = node->name ()->get_string_copy ();
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Annotation Test Error: %C:\n")
+ ACE_TEXT ("asserting %C has %d annotations, but there are %d!\n"),
+ name_, node_name, count, annotations.size ()));
+ delete [] node_name;
+ failed ();
+ }
+ }
+
+ AST_Annotation_Appl *assert_annotation_appl (
+ AST_Decl *node, size_t index, AST_Annotation_Decl *anno_decl)
+ {
+ if (!anno_decl)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Annotation Test Error: %C:\n")
+ ACE_TEXT ("assert_annotation_appl: annotation decl is null!\n"),
+ name_));
+ failed ();
+ }
+
+ AST_Annotation_Appls &annotations = node->annotations ();
+ if (!annotations.size ())
+ {
+ char *node_name = node->name ()->get_string_copy ();
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Annotation Test Error: %C:\n")
+ ACE_TEXT ("can not access %C annotation %d, ")
+ ACE_TEXT ("it has no annotations!\n"),
+ name_, node_name, index));
+ delete [] node_name;
+ failed ();
+ }
+
+ if (index >= annotations.size ())
+ {
+ char *node_name = node->name ()->get_string_copy ();
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Annotation Test Error: %C:\n")
+ ACE_TEXT ("can not access %C annotation %d, ")
+ ACE_TEXT ("it only has %d annotation(s)!\n"),
+ name_, node_name, index, annotations.size ()));
+ delete [] node_name;
+ failed ();
+ }
+
+ AST_Annotation_Appl *anno_appl = annotations[index];
+ if (!anno_appl)
+ {
+ char *node_name = node->name ()->get_string_copy ();
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Annotation Test Error: %C:\n")
+ ACE_TEXT ("%C annotation %d is null!\n"),
+ name_, node_name, index));
+ delete [] node_name;
+ failed ();
+ }
+ if (anno_appl->annotation_decl () != anno_decl)
+ {
+ char *anno_appl_name = anno_appl->name ()->get_string_copy ();
+ char *anno_decl_name = anno_decl->name ()->get_string_copy ();
+ char *node_name = node->name ()->get_string_copy ();
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Annotation Test Error: %C:\n")
+ ACE_TEXT ("%C annotation %d is a %C, looking for a %C!\n"),
+ name_, node_name, index, anno_appl_name, anno_decl_name));
+ delete [] anno_appl_name;
+ delete [] anno_decl_name;
+ delete [] node_name;
+ failed ();
+ }
+
+ return anno_appl;
+ }
+
+ void assert_annotation_member_count (
+ AST_Annotation_Decl *anno_decl, size_t count)
+ {
+ if (!anno_decl)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Annotation Test Error: %C:\n")
+ ACE_TEXT ("assert_annotation_member_count: annotation decl is null!\n"),
+ name_));
+ failed ();
+ }
+
+ size_t actual_count = anno_decl->member_count ();
+ if (actual_count != count)
+ {
+ char *anno_decl_name = anno_decl->name ()->get_string_copy ();
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Annotation Test Error: %C:\n")
+ ACE_TEXT ("%C should have %d members, but it actually has %d!\n"),
+ name_, anno_decl_name, count, actual_count));
+ delete [] anno_decl_name;
+ failed ();
+ }
+ }
+
+ void assert_annotation_member_count (
+ AST_Annotation_Appl *anno_appl, size_t count)
+ {
+ assert_annotation_member_count (
+ dynamic_cast<AST_Annotation_Decl *>(anno_appl), count);
+ }
+
+ AST_Annotation_Member *get_annotation_member (
+ AST_Annotation_Decl *anno_decl, const char *name)
+ {
+ AST_Decl *decl = (*anno_decl)[name];
+ AST_Annotation_Member *member = decl ?
+ AST_Annotation_Member::narrow_from_decl (decl) : 0;
+ if (!member)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Annotation Test Error: %C:\n")
+ ACE_TEXT ("Could not get annotation member %C!\n"),
+ name_, name));
+ failed ();
+ }
+ return member;
+ }
+
+ AST_Annotation_Member *get_annotation_member (
+ AST_Annotation_Appl *anno_appl, const char *name)
+ {
+ return get_annotation_member(
+ dynamic_cast<AST_Annotation_Decl *>(anno_appl), name);
+ }
+
+ void assert_annotation_member_type (
+ AST_Annotation_Member *member, AST_Expression::ExprType type)
+ {
+ if (member->expr_type () != type)
+ {
+ char *member_name = member->name ()->get_string_copy ();
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Annotation Test Error: %C:\n")
+ ACE_TEXT ("For Annotation Member %C, ")
+ ACE_TEXT ("expecting it to be a %C, but it is a %C!\n"),
+ name_, member_name,
+ AST_Expression::exprtype_to_string (type),
+ AST_Expression::exprtype_to_string (member->expr_type ())));
+ delete [] member_name;
+ failed ();
+ }
+ }
+
+ void assert_annotation_member_value (
+ AST_Annotation_Member *member, AST_Expression *expected)
+ {
+ AST_Expression *member_value = member->value ();
+ if (!member_value)
+ {
+ char *member_name = member->name ()->get_string_copy ();
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Annotation Test Error: %C:\n")
+ ACE_TEXT ("For Annotation Member %C, ")
+ ACE_TEXT ("expecting it to have a value, but it doesn't!\n"),
+ name_, member_name));
+ delete [] member_name;
+ failed ();
+ }
+
+ if (!expected)
+ {
+ char *member_name = member->name ()->get_string_copy ();
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Annotation Test Error: %C:\n")
+ ACE_TEXT ("For Annotation Member %C, ")
+ ACE_TEXT ("expected value is null, can't compare!\n"),
+ name_, member_name));
+ delete [] member_name;
+ failed ();
+ }
+
+ bool equal;
+ if (member_value->ev ()->et == AST_Expression::EV_ulong &&
+ expected->ev ()->et == AST_Expression::EV_ulong)
+ {
+ // For Enums
+ equal = expected->ev()->u.ulval == member_value->ev()->u.ulval;
+ }
+ else
+ {
+ equal = (*expected) == member_value;
+ }
+
+
+ if (!equal)
+ {
+ char *member_name = member->name ()->get_string_copy ();
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Annotation Test Error: %C:\n")
+ ACE_TEXT ("For Annotation Member %C, ")
+ ACE_TEXT ("expecting "),
+ name_, member_name));
+ delete [] member_name;
+ expected->dump (*ACE_DEFAULT_LOG_STREAM);
+ ACE_ERROR ((LM_ERROR, ACE_TEXT (", got ")));
+ member_value->dump (*ACE_DEFAULT_LOG_STREAM);
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("!\n")));
+ failed ();
+ }
+ }
+
+ template <typename T1, typename T2>
+ void assert_annotation_member_value (
+ AST_Annotation_Member *member, T1 expected_value)
+ {
+ AST_Expression expected (static_cast<T2> (expected_value));
+ assert_annotation_member_value (member, &expected);
+ }
+
+ void assert_annotation_member_no_value (AST_Annotation_Member *member)
+ {
+ AST_Expression *member_value = member->value ();
+ if (member_value)
+ {
+ char *member_name = member->name ()->get_string_copy ();
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Annotation Test Error: %C:\n")
+ ACE_TEXT ("For Annotation Member %C, ")
+ ACE_TEXT ("expecting it to not have a value, but it does!\n"),
+ name_, member_name));
+ delete [] member_name;
+ failed ();
+ }
+ }
+};
+
+void
+BE_post_init (char *[], long)
+{
+ /*
+ * Notes About These Tests
+ * =========================================================================
+ *
+ * - They are in the same IDL namespace, so they can conflict with each
+ * other.
+ *
+ * - You can't test for a syntax error really because tao_idl throws an
+ * exception for them. Even if the exception was caught, the AST might be
+ * in an invalid state afterwards.
+ *
+ * - Annotations local names internally start with @ so that they don't
+ * conflict with other non-annotation names. See below for examples.
+ *
+ * - Some of these tests intentionally cause errors.
+ */
+
+ /* -------------------------------------------------------------------------
+ * Annotations Declarations
+ * -------------------------------------------------------------------------
+ * These tests assert that annotations can be declared.
+ */
+
+ AST_Annotation_Decl *test_annotation_1 = 0;
+ try {
+ Annotation_Test t ("Annotation Declaration with No Members");
+ test_annotation_1 = t.run (
+ "@annotation test_annotation_1 {\n"
+ "};\n"
+ ).assert_annotation_decl ("::@test_annotation_1");
+ t.assert_annotation_member_count (test_annotation_1, 0);
+ } catch (Failed const &) {}
+
+ try {
+ Annotation_Test t ("Annotation Declaration with Members");
+ AST_Annotation_Decl *test_annotation_2 = t.run (
+ "@annotation test_annotation_2 {\n"
+ " short short_value;\n"
+ " char char_value;\n"
+ " long long_value;\n"
+ " boolean boolean_value;\n"
+ "};\n"
+ ).assert_annotation_decl ("::@test_annotation_2");
+ t.assert_annotation_member_count (test_annotation_2, 4);
+
+ AST_Annotation_Member *short_value =
+ t.get_annotation_member (test_annotation_2, "short_value");
+ t.assert_annotation_member_type (short_value, AST_Expression::EV_short);
+ t.assert_annotation_member_no_value (short_value);
+
+ AST_Annotation_Member *char_value =
+ t.get_annotation_member (test_annotation_2, "char_value");
+ t.assert_annotation_member_type (char_value, AST_Expression::EV_char);
+ t.assert_annotation_member_no_value (char_value);
+
+ AST_Annotation_Member *long_value =
+ t.get_annotation_member (test_annotation_2, "long_value");
+ t.assert_annotation_member_type (long_value, AST_Expression::EV_long);
+ t.assert_annotation_member_no_value (long_value);
+
+ AST_Annotation_Member *boolean_value =
+ t.get_annotation_member (test_annotation_2, "boolean_value");
+ t.assert_annotation_member_type (boolean_value, AST_Expression::EV_bool);
+ t.assert_annotation_member_no_value (boolean_value);
+ } catch (Failed const &) {}
+
+ try {
+ Annotation_Test t ("Annotation Declaration with Defaulted Members");
+ AST_Annotation_Decl *test_annotation_3 = t.run (
+ "@annotation test_annotation_3 {\n"
+ " short short_value default 1;\n"
+ " char char_value default '&';\n"
+ " long long_value default -1;\n"
+ " boolean boolean_value default FALSE;\n"
+ "};\n"
+ ).assert_annotation_decl ("::@test_annotation_3");
+ t.assert_annotation_member_count (test_annotation_3, 4);
+
+ AST_Annotation_Member *short_value =
+ t.get_annotation_member (test_annotation_3, "short_value");
+ t.assert_annotation_member_type (short_value, AST_Expression::EV_short);
+ t.assert_annotation_member_value<short, ACE_CDR::Short> (short_value, 1);
+
+ AST_Annotation_Member *char_value =
+ t.get_annotation_member (test_annotation_3, "char_value");
+ t.assert_annotation_member_type (char_value, AST_Expression::EV_char);
+ t.assert_annotation_member_value<char, ACE_CDR::Char> (char_value, '&');
+
+ AST_Annotation_Member *long_value =
+ t.get_annotation_member (test_annotation_3, "long_value");
+ t.assert_annotation_member_type (long_value, AST_Expression::EV_long);
+ t.assert_annotation_member_value<int, ACE_CDR::Long> (long_value, -1);
+
+ AST_Annotation_Member *boolean_value =
+ t.get_annotation_member (test_annotation_3, "boolean_value");
+ t.assert_annotation_member_type (boolean_value, AST_Expression::EV_bool);
+ t.assert_annotation_member_value<bool, ACE_CDR::Boolean> (boolean_value, false);
+ } catch (Failed const &) {}
+
+ AST_Annotation_Decl *test_annotation_4 = 0;
+ try {
+ Annotation_Test t ("Annotation Declaration with Mixed Members");
+ test_annotation_4 = t.run (
+ "@annotation test_annotation_4 {\n"
+ " short x;\n"
+ " short y default 0;\n"
+ "};\n"
+ ).assert_annotation_decl ("::@test_annotation_4");
+ t.assert_annotation_member_count (test_annotation_4, 2);
+
+ AST_Annotation_Member *x =
+ t.get_annotation_member (test_annotation_4, "x");
+ t.assert_annotation_member_type (x, AST_Expression::EV_short);
+ t.assert_annotation_member_no_value (x);
+
+ AST_Annotation_Member *y =
+ t.get_annotation_member (test_annotation_4, "y");
+ t.assert_annotation_member_type (y, AST_Expression::EV_short);
+ t.assert_annotation_member_value<short, ACE_CDR::Short> (y, 0);
+ } catch (Failed const &) {}
+
+ AST_Annotation_Decl *test_annotation_in_module = 0;
+ try {
+ Annotation_Test t ("Annotation Declaration In Module");
+ test_annotation_in_module = t.run (
+ "module module_with_annotation_decl {\n"
+ " @annotation test_annotation {\n"
+ " };\n"
+ "};\n"
+ ).assert_annotation_decl (
+ "::module_with_annotation_decl::@test_annotation");
+ t.assert_annotation_member_count (test_annotation_in_module, 0);
+ } catch (Failed const &) {}
+
+ AST_Annotation_Decl *enum_annotation = 0;
+ AST_Expression *enum_annotation_a = 0;
+ AST_Expression *enum_annotation_b = 0;
+ AST_Expression *enum_annotation_c = 0;
+ try {
+ Annotation_Test t ("Annotation Declaration with Enum");
+ enum_annotation = t.run (
+ "@annotation enum_annotation {\n"
+ " enum Enum_t {\n"
+ " A,\n"
+ " B,\n"
+ " C\n"
+ " };\n"
+ " Enum_t value default A;\n"
+ "};\n"
+ ).assert_annotation_decl ("@enum_annotation");
+ t.assert_annotation_member_count (enum_annotation, 1);
+ UTL_Scope *scope = dynamic_cast<UTL_Scope*>(enum_annotation);
+ AST_Annotation_Member *value =
+ t.get_annotation_member (enum_annotation, "value");
+
+ AST_EnumVal *a = AST_EnumVal::narrow_from_decl(
+ t.assert_node ("A", scope));
+ enum_annotation_a = a->constant_value();
+
+ AST_EnumVal *b = AST_EnumVal::narrow_from_decl(
+ t.assert_node ("B", scope));
+ enum_annotation_b = b->constant_value();
+
+ AST_EnumVal *c = AST_EnumVal::narrow_from_decl(
+ t.assert_node ("C", scope));
+ enum_annotation_c = c->constant_value();
+
+ t.assert_annotation_member_value (value, enum_annotation_a);
+ } catch (Failed const &) {}
+
+ AST_Annotation_Decl *string_annotation = 0;
+ try {
+ Annotation_Test t ("Annotation Declaration with String");
+ string_annotation = t.run (
+ "@annotation string_annotation {\n"
+ " string value default \"This is some text\";\n"
+ "};\n"
+ ).assert_annotation_decl ("@string_annotation");
+ t.assert_annotation_member_count (string_annotation, 1);
+ AST_Annotation_Member *value =
+ t.get_annotation_member (string_annotation, "value");
+
+ UTL_String test_string("This is some text");
+ t.assert_annotation_member_value<UTL_String*, UTL_String*>
+ (value, &test_string);
+ } catch (Failed const &) {}
+
+ AST_Expression *constant_annotation_x = 0;
+ AST_Expression *constant_annotation_y = 0;
+ AST_Annotation_Decl *constant_annotation = 0;
+ try {
+ Annotation_Test t ("Annotation Declaration with Constant");
+ constant_annotation = t.run (
+ "@annotation constant_annotation {\n"
+ " const short X = 4;\n"
+ " const short Y = 5;\n"
+ " short value default X;\n"
+ "};\n"
+ ).assert_annotation_decl ("@constant_annotation");
+ t.assert_annotation_member_count (constant_annotation, 1);
+ UTL_Scope *scope = dynamic_cast<UTL_Scope*>(constant_annotation);
+ AST_Annotation_Member *value =
+ t.get_annotation_member (constant_annotation, "value");
+
+ AST_Constant *x = AST_Constant::narrow_from_decl(
+ t.assert_node ("X", scope));
+ constant_annotation_x = x->constant_value();
+
+ AST_Constant *y = AST_Constant::narrow_from_decl(
+ t.assert_node ("Y", scope));
+ constant_annotation_y = y->constant_value();
+
+ t.assert_annotation_member_value (value, constant_annotation_x);
+ } catch (Failed const &) {}
+
+ /* -------------------------------------------------------------------------
+ * Annotations Applications
+ * -------------------------------------------------------------------------
+ * These tests assert that annotations can be applied to various IDL
+ * constructs.
+ */
+
+ try {
+ Annotation_Test t ("Module Annotation Application");
+ AST_Decl *module1 = t.run (
+ "@test_annotation_1\n"
+ "module module1 {\n"
+ " struct struct_in_module1 {\n"
+ " short member;\n"
+ " };\n"
+ "};\n"
+ ).assert_node ("::module1");
+ t.assert_annotation_appl_count (module1, 1);
+ t.assert_annotation_appl (module1, 0, test_annotation_1);
+ } catch (Failed const &) {}
+
+ try {
+ Annotation_Test t ("Struct Annotation Application");
+ AST_Decl *struct1 = t.run (
+ "@test_annotation_1\n"
+ "struct struct1 {\n"
+ " short member;\n"
+ "};\n"
+ ).assert_node ("::struct1");
+ t.assert_annotation_appl_count (struct1, 1);
+ t.assert_annotation_appl (struct1, 0, test_annotation_1);
+ } catch (Failed const &) {}
+
+ try {
+ Annotation_Test t ("Typedef Annotation Application");
+ t.run (
+ "@enum_annotation\n"
+ "typedef short short_int;\n"
+ "@string_annotation\n"
+ "typedef short_int small_int;\n"
+ "@test_annotation_1\n"
+ "typedef small_int i16;\n"
+ "struct struct6 {\n"
+ " i16 member;\n"
+ "};\n"
+ );
+
+ // Assert short_int has enum_annotation
+ AST_Decl *short_int = t.assert_node ("short_int");
+ t.assert_annotation_appl_count (short_int, 1);
+ t.assert_annotation_appl (short_int, 0, enum_annotation);
+
+ // Get type of member
+ AST_Decl *member_decl = t.assert_node ("struct6::member");
+ AST_Field *member = AST_Field::narrow_from_decl (member_decl);
+ if (!member)
+ {
+ t.failed ("Could Not Get member");
+ }
+ AST_Decl* type = dynamic_cast<AST_Decl *> (member->field_type ());
+
+ // Assert type has enum_annotation, string_annotation, and
+ // test_annotation_1.
+ t.assert_annotation_appl_count (type, 3);
+ t.assert_annotation_appl (type, 0, enum_annotation);
+ t.assert_annotation_appl (type, 1, string_annotation);
+ t.assert_annotation_appl (type, 2, test_annotation_1);
+ } catch (Failed const &) {}
+
+ try {
+ Annotation_Test t ("Sequence Type Parameter Annotation Application");
+ AST_Decl *value_decl = t.run (
+ "typedef sequence<@test_annotation_1 short, 5> test_seq_t;\n"
+ "struct struct7 {\n"
+ " test_seq_t value;\n"
+ "};\n"
+ ).assert_node ("::struct7::value");
+
+ // Get Sequence
+ AST_Field *value = AST_Field::narrow_from_decl (value_decl);
+ if (!value)
+ {
+ t.failed (
+ "Could Not Convert struct7::value from AST_Decl into AST_Field");
+ }
+ AST_Typedef *typedef_node =
+ dynamic_cast<AST_Typedef *> (value->field_type ());
+ if (!typedef_node)
+ {
+ t.failed (
+ "Could Not Convert test_seq_t from AST_Decl into AST_Typedef");
+ }
+ AST_Decl *seq_decl = dynamic_cast<AST_Decl *>(typedef_node->base_type ());
+ AST_Sequence *seq = AST_Sequence::narrow_from_decl (seq_decl);
+ if (!seq)
+ {
+ t.failed (
+ "Could Not Convert test_seq_t from AST_Typedef in AST_Sequence");
+ }
+
+ // Verify Annotation on Base Type
+ AST_Annotation_Appls *annotations = seq->base_type_annotations ();
+ if (!annotations)
+ {
+ t.failed ("base_type_annotations() for test_seq_t returned null!");
+ }
+ size_t count = annotations->size ();
+ if (count != 1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Annotation Test Error: %C:\n")
+ ACE_TEXT ("expected one annotation on test_seq_t base type, ")
+ ACE_TEXT ("it has %d annotations!\n"),
+ t.name_, count));
+ t.failed ();
+ }
+ AST_Annotation_Appl *annotation = (*annotations)[0];
+ if (!annotation)
+ {
+ t.failed ("annotation for test_seq_t base type is null!");
+ }
+ if (annotation->annotation_decl () != test_annotation_1)
+ {
+ UTL_ScopedName *scopedname = annotation->name ();
+ const char *name = scopedname ?
+ scopedname-> get_string_copy () : "UNKNOWN";
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Annotation Test Error: %C:\n")
+ ACE_TEXT ("expected annotation for test_seq_t base type to be ")
+ ACE_TEXT ("test_annotation_1, but it was %C\n"),
+ t.name_, name));
+ if (scopedname)
+ {
+ delete [] name;
+ }
+ t.failed ();
+ }
+ } catch (Failed const &) {}
+
+ try {
+ Annotation_Test t ("Constant Declarations Annotation Application");
+ AST_Decl *test_const = t.run (
+ "@test_annotation_1\n"
+ "const short test_const = 5;\n"
+ ).assert_node ("test_const");
+ t.assert_annotation_appl_count (test_const, 1);
+ t.assert_annotation_appl (test_const, 0, test_annotation_1);
+ } catch (Failed const &) {}
+
+ try {
+ Annotation_Test t ("Multiple Annotation Applications");
+ AST_Decl *struct3 = t.run (
+ "@test_annotation_1\n"
+ "@test_annotation_1\n"
+ "struct struct3 {\n"
+ " short test_member_1;\n"
+ "};\n"
+ ).assert_node ("struct3");
+ t.assert_annotation_appl_count (struct3, 2);
+ t.assert_annotation_appl (struct3, 0, test_annotation_1);
+ t.assert_annotation_appl (struct3, 1, test_annotation_1);
+ } catch (Failed const &) {}
+
+ try {
+ Annotation_Test t ("Annotation Application with a Single Parameter");
+ AST_Decl *struct4 = t.run (
+ "@test_annotation_4 (100)\n"
+ "struct struct4 {\n"
+ " short test_member_1;\n"
+ "};\n"
+ ).assert_node ("struct4");
+ t.assert_annotation_appl_count (struct4, 1);
+ AST_Annotation_Appl *appl =
+ t.assert_annotation_appl (struct4, 0, test_annotation_4);
+ t.assert_annotation_member_count (appl, 2);
+
+ AST_Annotation_Member *x = t.get_annotation_member (appl, "x");
+ t.assert_annotation_member_value<short, ACE_CDR::Short> (x, 100);
+
+ AST_Annotation_Member *y = t.get_annotation_member (appl, "y");
+ t.assert_annotation_member_value<short, ACE_CDR::Short> (y, 0);
+ } catch (Failed const &) {}
+
+ try {
+ Annotation_Test t ("Annotation Application with Named Parameters");
+ AST_Decl *struct2 = t.run (
+ "@test_annotation_4 (x = 101, y = 102)\n"
+ "struct struct2 {\n"
+ " short test_member_1;\n"
+ "};\n"
+ ).assert_node ("struct2");
+ t.assert_annotation_appl_count (struct2, 1);
+ AST_Annotation_Appl *appl =
+ t.assert_annotation_appl (struct2, 0, test_annotation_4);
+ t.assert_annotation_member_count (appl, 2);
+
+ AST_Annotation_Member *x = t.get_annotation_member (appl, "x");
+ t.assert_annotation_member_value<short, ACE_CDR::Short> (x, 101);
+
+ AST_Annotation_Member *y = t.get_annotation_member (appl, "y");
+ t.assert_annotation_member_value<short, ACE_CDR::Short> (y, 102);
+ } catch (Failed const &) {}
+
+ try {
+ Annotation_Test t ("Annotation Applications with Scoped Names");
+ AST_Decl *struct5 = t.run (
+ "@module_with_annotation_decl::test_annotation\n"
+ "@::module_with_annotation_decl::test_annotation\n"
+ "struct struct5 {\n"
+ " short test_member_1;\n"
+ "};\n"
+ ).assert_node ("struct5");
+ t.assert_annotation_appl_count (struct5, 2);
+ t.assert_annotation_appl (struct5, 0, test_annotation_in_module);
+ t.assert_annotation_appl (struct5, 1, test_annotation_in_module);
+ } catch (Failed const &) {}
+
+ try {
+ Annotation_Test t ("Annotation Applications on/in Unions");
+ AST_Decl *test_union_decl = t.run (
+ /* Annotations on the union and the discriminator */
+ "@test_annotation_1\n"
+ "union test_union switch (@test_annotation_1 short) {\n"
+ "case 0:\n"
+ "case 1:\n"
+ /* Annotation on a Union Member */
+ " @test_annotation_1 short union_member_1;\n"
+ "default:\n"
+ " short union_member_2;\n"
+ "};\n"
+ ).assert_node ("test_union");
+ AST_Union *test_union = AST_Union::narrow_from_decl (test_union_decl);
+ if (!test_union)
+ {
+ t.failed ("failed to get test_union!");
+ }
+
+ // Annotation On Union
+ t.assert_annotation_appl_count (test_union_decl, 1);
+ t.assert_annotation_appl (test_union_decl, 0, test_annotation_1);
+
+ // Annotation On Discriminator
+ AST_Annotation_Appls *annotations = test_union->disc_annotations ();
+ if (!annotations)
+ {
+ t.failed ("test_union discriminator annotations is null!");
+ }
+ size_t count = annotations->size ();
+ if (count != 1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Annotation Test Error: %C:\n")
+ ACE_TEXT ("expected one annotation on test_union discriminator, ")
+ ACE_TEXT ("it has %d annotations!\n"),
+ t.name_, count));
+ t.failed ();
+ }
+ AST_Annotation_Appl *annotation = (*annotations)[0];
+ if (!annotation)
+ {
+ t.failed ("annotation for test_seq_t base type is null!");
+ }
+ if (annotation->annotation_decl () != test_annotation_1)
+ {
+ UTL_ScopedName *scopedname = annotation->name ();
+ const char *name = scopedname ?
+ scopedname-> get_string_copy () : "UNKNOWN";
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Annotation Test Error: %C:\n")
+ ACE_TEXT ("expected annotation for test_union discriminator to be ")
+ ACE_TEXT ("test_annotation_1, but it was %C\n"),
+ t.name_, name));
+ if (scopedname)
+ {
+ delete [] name;
+ }
+ t.failed ();
+ }
+
+ // Annotation on Union Member
+ AST_Decl *union_member_1 =
+ t.assert_node ("test_union::union_member_1");
+ t.assert_annotation_appl_count (union_member_1, 1);
+ t.assert_annotation_appl (union_member_1, 0, test_annotation_1);
+ } catch (Failed const &) {}
+
+ try {
+ Annotation_Test t ("Annotation Applications on/in Enums");
+ AST_Decl *Test_Enum = t.run (
+ /* Annotation on the enum */
+ "@test_annotation_1\n"
+ "enum Test_Enum {\n"
+ " TEST_ENUM_MEMBER_1,\n"
+ /* Annotation on a enumerator */
+ " @test_annotation_1 TEST_ENUM_MEMBER_2,\n"
+ " TEST_ENUM_MEMBER_3\n"
+ "};\n"
+ ).assert_node ("Test_Enum");
+
+ // Annotation on Enum
+ t.assert_annotation_appl_count (Test_Enum, 1);
+ t.assert_annotation_appl (Test_Enum, 0, test_annotation_1);
+
+ // Annotation on Enum Member
+ AST_Decl *TEST_ENUM_MEMBER_2 =
+ t.assert_node ("Test_Enum::TEST_ENUM_MEMBER_2");
+ t.assert_annotation_appl_count (TEST_ENUM_MEMBER_2, 1);
+ t.assert_annotation_appl (TEST_ENUM_MEMBER_2, 0, test_annotation_1);
+ } catch (Failed const &) {}
+
+ try {
+ Annotation_Test t ("By Default, Unknown Annotation Application Causes Warning");
+ t.last_warning (UTL_Error::EIDL_LOOKUP_ERROR);
+ t.run (
+ "struct struct11 {\n"
+ " @fake_annotation(fake_param=FAKE_CONSTANT)\n"
+ " short member;\n"
+ "};\n"
+ );
+ } catch (Failed const &) {}
+
+ try {
+ idl_global->unknown_annotations_ =
+ IDL_GlobalData::UNKNOWN_ANNOTATIONS_ERROR;
+ Annotation_Test t ("Optionally, Unknown Annotation Application Causes Err");
+ // Any mention of "Error" will be picked up by scoreboard ^^^
+ t.last_error (UTL_Error::EIDL_LOOKUP_ERROR).error_count (1);
+ t.run (
+ "struct struct10 {\n"
+ " @fake_annotation(fake_param=FAKE_CONSTANT)\n"
+ " short member;\n"
+ "};\n"
+ );
+ // Restore Default Behaivor
+ idl_global->unknown_annotations_ =
+ IDL_GlobalData::UNKNOWN_ANNOTATIONS_WARN_ONCE;
+ } catch (Failed const &) {}
+
+ try {
+ Annotation_Test t ("Annotation Application with Enum");
+ AST_Decl *value = t.run (
+ "struct struct8 {\n"
+ " @enum_annotation\n" // A
+ " @enum_annotation(B)\n"
+ " @enum_annotation(value=C)\n"
+ " short value;\n"
+ "};\n"
+ ).assert_node ("struct8::value");
+ t.assert_annotation_appl_count (value, 3);
+ AST_Annotation_Member *member;
+
+ AST_Annotation_Appl *first =
+ t.assert_annotation_appl (value, 0, enum_annotation);
+ member = t.get_annotation_member (first, "value");
+ t.assert_annotation_member_value (member, enum_annotation_a);
+
+ AST_Annotation_Appl *second =
+ t.assert_annotation_appl (value, 1, enum_annotation);
+ member = t.get_annotation_member (second, "value");
+ t.assert_annotation_member_value (member, enum_annotation_b);
+
+ AST_Annotation_Appl *third =
+ t.assert_annotation_appl (value, 2, enum_annotation);
+ member = t.get_annotation_member (third, "value");
+ t.assert_annotation_member_value (member, enum_annotation_c);
+ } catch (Failed const &) {}
+
+ try {
+ Annotation_Test t ("Annotation Application with String");
+ AST_Decl *value = t.run (
+ "struct struct9 {\n"
+ " @string_annotation\n" // A
+ " @string_annotation(\"Something else\")\n"
+ " @string_annotation(value=\"One last thing\")\n"
+ " short value;\n"
+ "};\n"
+ ).assert_node ("struct9::value");
+ t.assert_annotation_appl_count (value, 3);
+ AST_Annotation_Member *member;
+ AST_Annotation_Appl *annotation;
+
+ UTL_String first_string("This is some text");
+ annotation = t.assert_annotation_appl (value, 0, string_annotation);
+ member = t.get_annotation_member (annotation, "value");
+ t.assert_annotation_member_value <UTL_String *, UTL_String *>
+ (member, &first_string);
+
+ UTL_String second_string("Something else");
+ annotation = t.assert_annotation_appl (value, 1, string_annotation);
+ member = t.get_annotation_member (annotation, "value");
+ t.assert_annotation_member_value <UTL_String *, UTL_String *>
+ (member, &second_string);
+
+ UTL_String third_string("One last thing");
+ annotation = t.assert_annotation_appl (value, 2, string_annotation);
+ member = t.get_annotation_member (annotation, "value");
+ t.assert_annotation_member_value <UTL_String *, UTL_String *>
+ (member, &third_string);
+ } catch (Failed const &) {}
+
+ try {
+ Annotation_Test t ("Annotation Application with Constant");
+ AST_Decl *value = t.run (
+ "struct struct12 {\n"
+ " @constant_annotation\n" // A
+ " @constant_annotation(Y)\n"
+ " @constant_annotation(100)\n"
+ " short value;\n"
+ "};\n"
+ ).assert_node ("struct12::value");
+ t.assert_annotation_appl_count (value, 3);
+ AST_Annotation_Member *member;
+ AST_Annotation_Appl *annotation;
+
+ annotation = t.assert_annotation_appl (value, 0, constant_annotation);
+ member = t.get_annotation_member (annotation, "value");
+ t.assert_annotation_member_value (member, constant_annotation_x);
+
+ annotation = t.assert_annotation_appl (value, 1, constant_annotation);
+ member = t.get_annotation_member (annotation, "value");
+ t.assert_annotation_member_value (member, constant_annotation_y);
+
+ annotation = t.assert_annotation_appl (value, 2, constant_annotation);
+ member = t.get_annotation_member (annotation, "value");
+ t.assert_annotation_member_value<short, ACE_CDR::Short> (member, 100);
+ } catch (Failed const &) {}
+
+ try {
+ Annotation_Test t ("Annotate Array Base Type");
+ AST_Typedef *thetypedef = AST_Typedef::narrow_from_decl (t.run (
+ "typedef struct12 struct12Array @test_annotation_1 [12];\n"
+ ).assert_node ("::struct12Array"));
+ AST_Array *struct12Array =
+ dynamic_cast<AST_Array *> (thetypedef->base_type ());
+
+ // Verify Annotation on Base Type
+ AST_Annotation_Appls *annotations =
+ struct12Array->base_type_annotations ();
+ if (!annotations)
+ {
+ t.failed ("base_type_annotations() for struct12Array returned null!");
+ }
+ size_t count = annotations->size ();
+ if (count != 1)
+ {
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Annotation Test Error: %C:\n")
+ ACE_TEXT ("expected one annotation on struct12Array base type, ")
+ ACE_TEXT ("it has %d annotations!\n"),
+ t.name_, count));
+ t.failed ();
+ }
+ AST_Annotation_Appl *annotation = (*annotations)[0];
+ if (!annotation)
+ {
+ t.failed ("annotation for struct12Array base type is null!");
+ }
+ if (annotation->annotation_decl () != test_annotation_1)
+ {
+ UTL_ScopedName *scopedname = annotation->name ();
+ const char *name = scopedname ?
+ scopedname-> get_string_copy () : "UNKNOWN";
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Annotation Test Error: %C:\n")
+ ACE_TEXT ("expected annotation for struct12Array base type to be ")
+ ACE_TEXT ("test_annotation_1, but it was %C\n"),
+ t.name_, name));
+ if (scopedname)
+ {
+ delete [] name;
+ }
+ t.failed ();
+ }
+ } catch (Failed const &) {}
+
+ /* -------------------------------------------------------------------------
+ * Annotation Names
+ * -------------------------------------------------------------------------
+ * These tests assert various aspects of how annotations work in regards to
+ * naming.
+ */
+
+ try {
+ Annotation_Test t ("Annotation and Non-Annotation Names Can't Clash");
+ t.run (
+ "@annotation samename {\n"
+ "};\n"
+ "struct samename {\n"
+ " short member;\n"
+ "};"
+ );
+ } catch (Failed const &) {}
+
+ try {
+ Annotation_Test t ("Annotation Names Can't Be \"annotation\"");
+ t.last_error (UTL_Error::EIDL_MISC).error_count (1);
+ t.run (
+ "@annotation annotation {\n"
+ "};\n"
+ );
+ } catch (Failed const &) {}
+
+ try {
+ Annotation_Test t ("Annotation Names Can Start with \"annotation\"");
+ t.run (
+ "@annotation annotationannotation {\n"
+ "};\n"
+ "@annotationannotation\n"
+ "struct annotationannotation_struct {\n"
+ " short member;\n"
+ "};\n"
+ ).assert_annotation_decl ("::@annotationannotation");
+ } catch (Failed const &) {}
+
+ /* -------------------------------------------------------------------------
+ * Struct Field Visibility Must be vis_NA
+ * -------------------------------------------------------------------------
+ * Test for: https://github.com/DOCGroup/ACE_TAO/issues/784
+ *
+ * In the bison file, visibility for valuetype state members (which are the
+ * same class as normal fields) was being passed through the bison stack.
+ * When adding support for annotations, the grammar was changed and it was
+ * broken, causing bogus data to be passed to regular struct field as their
+ * visibility.
+ *
+ * This is a test to assert that struct fields have vis_NA. This can't be put
+ * anywhere else at the moment because this is the only test that's an
+ * instance of the idl compiler.
+ */
+ try {
+ Annotation_Test t ("Struct Field Visibility Must be vis_NA");
+ AST_Decl *member_decl = t.assert_node ("struct1::member");
+ AST_Field *member = AST_Field::narrow_from_decl (member_decl);
+ if (!member)
+ {
+ t.failed ("Could Not Get member");
+ }
+ if (member->visibility() != AST_Field::vis_NA)
+ {
+ char buffer[100];
+ ACE_OS::snprintf (&buffer[0], 100,
+ "struct field visibility is %u, which is not equal to vis_NA",
+ static_cast<unsigned> (member->visibility ()));
+ t.failed (&buffer[0]);
+ }
+ } catch (Failed const &) {}
+
+ // Done, Print Overall Results
+ if (failed_test_count)
+ {
+ ACE_ERROR ((LM_ERROR,
+ ACE_TEXT ("Annotation Test: %d out of %d subtests failed!\n"),
+ failed_test_count, total_test_count));
+ }
+ else
+ {
+ ACE_DEBUG ((LM_DEBUG,
+ ACE_TEXT ("Annotation Test: All %d subtests passed\n"),
+ total_test_count));
+ }
+ idl_global->set_err_count (failed_test_count);
+}
diff --git a/TAO/tests/IDLv4/annotations/be_produce.cpp b/TAO/tests/IDLv4/annotations/be_produce.cpp
new file mode 100644
index 00000000000..fc34f55a20a
--- /dev/null
+++ b/TAO/tests/IDLv4/annotations/be_produce.cpp
@@ -0,0 +1,21 @@
+#include "global_extern.h"
+#include "be_extern.h"
+
+void
+BE_cleanup ()
+{
+ idl_global->destroy();
+}
+
+void
+BE_abort ()
+{
+ ACE_ERROR ((LM_ERROR, ACE_TEXT ("Fatal Error - Aborting\n")));
+ BE_cleanup ();
+ ACE_OS::exit (1);
+}
+
+void
+BE_produce()
+{
+}
diff --git a/TAO/tests/IDLv4/annotations/be_util.cpp b/TAO/tests/IDLv4/annotations/be_util.cpp
new file mode 100644
index 00000000000..02ae81c5de1
--- /dev/null
+++ b/TAO/tests/IDLv4/annotations/be_util.cpp
@@ -0,0 +1,29 @@
+#include "be_util.h"
+#include "be_extern.h"
+
+#include "ast_generator.h"
+
+#include "ace/OS_NS_strings.h"
+
+void
+be_util::prep_be_arg (char * /*arg*/)
+{
+}
+
+void
+be_util::arg_post_proc ()
+{
+}
+
+void
+be_util::usage ()
+{
+}
+
+AST_Generator *
+be_util::generator_init ()
+{
+ AST_Generator *gen = 0;
+ ACE_NEW_RETURN(gen, AST_Generator, 0);
+ return gen;
+}
diff --git a/TAO/tests/IDLv4/annotations/be_util.h b/TAO/tests/IDLv4/annotations/be_util.h
new file mode 100644
index 00000000000..001cdffddee
--- /dev/null
+++ b/TAO/tests/IDLv4/annotations/be_util.h
@@ -0,0 +1,25 @@
+#ifndef ANNOTEST_IDL_BE_UTIL_HEADER
+#define ANNOTEST_IDL_BE_UTIL_HEADER
+
+class TAO_OutStream;
+class be_module;
+class AST_Decl;
+class AST_Generator;
+
+class be_util
+{
+public:
+ /// Special BE arg call factored out of DRV_args.
+ static void prep_be_arg (char *s);
+
+ /// Checks made after parsing args.
+ static void arg_post_proc ();
+
+ /// Display usage of BE-specific options.
+ static void usage ();
+
+ /// Create an AST node generator.
+ static AST_Generator *generator_init ();
+};
+
+#endif
diff --git a/TAO/tests/IDLv4/annotations/drv_args.cpp b/TAO/tests/IDLv4/annotations/drv_args.cpp
new file mode 100644
index 00000000000..6e6175034d7
--- /dev/null
+++ b/TAO/tests/IDLv4/annotations/drv_args.cpp
@@ -0,0 +1 @@
+#include "TAO_IDL/driver/drv_args.cpp"
diff --git a/TAO/tests/IDLv4/annotations/drv_prepoc.cpp b/TAO/tests/IDLv4/annotations/drv_prepoc.cpp
new file mode 100644
index 00000000000..9a6127d4355
--- /dev/null
+++ b/TAO/tests/IDLv4/annotations/drv_prepoc.cpp
@@ -0,0 +1 @@
+#include "TAO_IDL/driver/drv_preproc.cpp"
diff --git a/TAO/tests/IDLv4/annotations/run_test.pl b/TAO/tests/IDLv4/annotations/run_test.pl
new file mode 100755
index 00000000000..1f58b600d6b
--- /dev/null
+++ b/TAO/tests/IDLv4/annotations/run_test.pl
@@ -0,0 +1,27 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+use strict;
+use Env qw(ACE_ROOT);
+use lib "$ACE_ROOT/bin";
+use PerlACE::Run_Test;
+
+my $annotest_idl = new PerlACE::Process("annotest_idl", "");
+print $annotest_idl->CommandLine ();
+$annotest_idl->Spawn ();
+my $annotest_idl_result = $annotest_idl->WaitKill (10);
+if ($annotest_idl_result > 0) {
+ print STDERR "ERROR: annotest_idl returned $annotest_idl_result\n";
+}
+
+my $status = 1 if $annotest_idl_result;
+
+if ($status) {
+ print STDERR "test FAILED";
+}
+else {
+ print "test PASSED";
+}
+
+exit $status
diff --git a/TAO/tests/Oneway_Buffering/README b/TAO/tests/Oneway_Buffering/README
index bbe599550e6..3240e312e15 100644
--- a/TAO/tests/Oneway_Buffering/README
+++ b/TAO/tests/Oneway_Buffering/README
@@ -1,10 +1,8 @@
/**
-
-
@page Oneway_Buffering Test README File
- A regression test for oneway buffering. The test verifies
+A regression test for oneway buffering. The test verifies
that the TAO::BufferingConstraint policies are respected by the
ORB. Three separate tests are possible:
@@ -17,11 +15,11 @@ ORB. Three separate tests are possible:
- TAO::BUFFER_MESSAGE_BYTES: The buffer should not be flushed until
enough bytes are in the queue.
- To run the test use run_test.pl script:
+To run the test use run_test.pl script:
$ ./run_test.pl
- the nightly regression builds impose severe constraints on the
+The nightly regression builds impose severe constraints on the
maximum time allowed for a single test. Three separate scripts are
used to stay within those bounds:
@@ -29,6 +27,6 @@ $ ./run_message_count.pl
$ ./run_timeout.pl
$ ./run_message_bytes.pl
- each script returns 0 if the test was successful.
+each script returns 0 if the test was successful.
*/
diff --git a/TAO/tests/POA/TIE/run_test.pl b/TAO/tests/POA/TIE/run_test.pl
index 533926a4430..a4bee9c2726 100755
--- a/TAO/tests/POA/TIE/run_test.pl
+++ b/TAO/tests/POA/TIE/run_test.pl
@@ -65,14 +65,14 @@ $SV = $server->CreateProcess ("server", "-ORBdebuglevel $debug_level " .
"-f $server_iorfile6");
$CL1 = $client1->CreateProcess ("client", "-ORBdebuglevel $debug_level " .
- "-a $client1_iorfile1 " .
- "-b $client1_iorfile2 " .
- "-c $client1_iorfile3 " .
- "-d $client1_iorfile4");
+ "-a file://$client1_iorfile1 " .
+ "-b file://$client1_iorfile2 " .
+ "-c file://$client1_iorfile3 " .
+ "-d file://$client1_iorfile4");
$CL2 = $client2->CreateProcess ("client", "-ORBdebuglevel $debug_level " .
- "-e $client2_iorfile5 " .
- "-f $client2_iorfile6");
+ "-e file://$client2_iorfile5 " .
+ "-f file://$client2_iorfile6");
$server_status = $SV->Spawn ();
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 4c50aa9a791..3cac229bae9 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -10,42 +10,56 @@ resources:
jobs:
- job: VisualStudio2017
- timeoutInMinutes: 90
+ timeoutInMinutes: 120
pool:
vmImage: vs2017-win2016
strategy:
- maxParallel: 4
matrix:
Debug64:
BuildPlatform: x64
BuildConfiguration: Debug
+ vcpkgarch: x64-windows
+ vcpkglibdir: debug\lib
Release64:
BuildPlatform: x64
BuildConfiguration: Release
+ vcpkgarch: x64-windows
+ vcpkglibdir: lib
Debug32:
BuildPlatform: Win32
BuildConfiguration: Debug
+ vcpkgarch: x86-windows
+ vcpkglibdir: debug\lib
Release32:
BuildPlatform: Win32
BuildConfiguration: Release
+ vcpkgarch: x86-windows
+ vcpkglibdir: lib
+ variables:
+ XERCESCROOT: $(Build.SourcesDirectory)\vcpkg\packages\xerces-c_$(vcpkgarch)
+ SSL_ROOT: $(Build.SourcesDirectory)\vcpkg\packages\openssl-windows_$(vcpkgarch)
+ SSL_LIBDIR: $(SSL_ROOT)\$(vcpkglibdir)
+ XERCESC_LIBDIR: $(XERCESCROOT)\$(vcpkglibdir)
steps:
- - powershell: |
- $client = new-object System.Net.WebClient
- $client.DownloadFile("http://strawberryperl.com/download/5.28.0.1/strawberry-perl-5.28.0.1-64bit.zip","strawberry-perl.zip");
- displayName: Download perl
- - task: ExtractFiles@1
- displayName: Extract perl
- inputs:
- archiveFilePatterns: strawberry-perl.zip
- destinationFolder: perl
+ - powershell: git clone --depth 1 git://github.com/Microsoft/vcpkg.git $(Build.SourcesDirectory)\vcpkg
+ displayName: git clone vcpkg
+ - script: .\vcpkg\bootstrap-vcpkg.bat
+ displayName: Bootstrap vcpkg
+ - script: .\vcpkg\vcpkg.exe install --recurse --triplet $(vcpkgarch) openssl xerces-c
+ displayName: vcpkg install dependencies
- powershell: |
'#include "ace/config-win32.h"' > $(ACE_ROOT)/ace/config.h
displayName: Create config.h file
+ - powershell: |
+ echo "xerces3=1" | out-file -encoding ASCII $(ACE_ROOT)\bin\MakeProjectCreator\config\default.features
+ echo "ssl=1" | out-file -append -encoding ASCII $(ACE_ROOT)\bin\MakeProjectCreator\config\default.features
+ echo "versioned_namespace=1" | out-file -append -encoding ASCII $(ACE_ROOT)\bin\MakeProjectCreator\config\default.features
+ displayName: Create default.features file
- powershell: git clone --depth 1 git://github.com/DOCGroup/MPC.git $(MPC_ROOT)
displayName: git clone MPC
- - powershell: perl $(ACE_ROOT)/bin/mwc.pl -type vs2017 $(TAO_ROOT)/TAO_ACE.mwc
+ - powershell: perl $(ACE_ROOT)/bin/mwc.pl -type vs2017 $(TAO_ROOT)/TAO_ACE.mwc -workers 4
displayName: Run script mwc.pl on $(TAO_ROOT)/TAO_ACE.mwc
- - powershell: perl $(ACE_ROOT)/bin/mwc.pl -type vs2017 $(ACE_ROOT)/tests/tests.mwc
+ - powershell: perl $(ACE_ROOT)/bin/mwc.pl -type vs2017 $(ACE_ROOT)/tests/tests.mwc -workers 4
displayName: Run script mwc.pl on $(ACE_ROOT)/tests/tests.mwc
- task: VSBuild@1
displayName: Build solution TAO/TAO_ACE.sln
@@ -81,9 +95,9 @@ jobs:
displayName: Create config.h file
- powershell: git clone --depth 1 git://github.com/DOCGroup/MPC.git $(MPC_ROOT)
displayName: git clone MPC
- - powershell: perl/perl/bin/perl $(ACE_ROOT)/bin/mwc.pl -type vc14 $(TAO_ROOT)/TAO_ACE.mwc
+ - powershell: perl/perl/bin/perl $(ACE_ROOT)/bin/mwc.pl -type vc14 $(TAO_ROOT)/TAO_ACE.mwc -workers 4
displayName: Run script mwc.pl on $(TAO_ROOT)/TAO_ACE.mwc
- - powershell: perl/perl/bin/perl $(ACE_ROOT)/bin/mwc.pl -type vc14 $(ACE_ROOT)/tests/tests.mwc
+ - powershell: perl/perl/bin/perl $(ACE_ROOT)/bin/mwc.pl -type vc14 $(ACE_ROOT)/tests/tests.mwc -workers 4
displayName: Run script mwc.pl on $(ACE_ROOT)/tests/tests.mwc
- task: VSBuild@1
displayName: Build solution TAO\TAO_ACE.sln
@@ -100,18 +114,74 @@ jobs:
timeoutInMinutes: 90
pool:
vmImage: ubuntu-16.04
+ strategy:
+ matrix:
+ GCC4:
+ CC: gcc
+ CXX: g++
+ platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
+ GCC6:
+ CC: gcc-6
+ CXX: g++-6
+ PackageDeps: g++-6
+ platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
+ GCC7:
+ CC: gcc-7
+ CXX: g++-7
+ PackageDeps: g++-7
+ platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
+ GCC8:
+ CC: gcc-8
+ CXX: g++-8
+ PackageDeps: g++-8
+ platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
+ CLANG5:
+ CC: clang-5.0
+ CXX: clang++-5.0
+ PackageDeps: clang-5.0
+ Repo: llvm-toolchain-$(lsb_release -cs)-5.0
+ platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU
+ CLANG6:
+ CC: clang-6.0
+ CXX: clang++-6.0
+ PackageDeps: clang-6.0
+ Repo: llvm-toolchain-$(lsb_release -cs)-6.0
+ platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU
+ CLANG7:
+ CC: clang-7
+ CXX: clang++-7
+ PackageDeps: clang-7
+ Repo: llvm-toolchain-$(lsb_release -cs)-7
+ platform_file: include $(ACE_ROOT)/include/makeinclude/platform_linux_clang.GNU
steps:
+ - script: |
+ wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add -
+ sudo apt-add-repository "deb http://apt.llvm.org/$(lsb_release -cs)/ $(Repo) main"
+ displayName: Add repository ($(Repo))
+ condition: and(succeeded(), ne(variables['Repo'], ''))
+ - script: |
+ sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
+ sudo apt-get --yes update
+ sudo apt-get --yes install libxerces-c-dev libssl-dev $(PackageDeps)
+ displayName: install system package dependencies
- powershell: |
'#include "ace/config-linux.h"' > $(ACE_ROOT)/ace/config.h
displayName: Create config.h file
- powershell: |
- 'include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU' > $(ACE_ROOT)/include/makeinclude/platform_macros.GNU;
+ 'xerces3=1' > $(ACE_ROOT)/bin/MakeProjectCreator/config/default.features
+ 'ssl=1' >> $(ACE_ROOT)/bin/MakeProjectCreator/config/default.features
+ 'versioned_namespace=1' >> $(ACE_ROOT)/bin/MakeProjectCreator/config/default.features
+ displayName: Create default.features file
+ - powershell: |
+ 'xerces3=1' > $(ACE_ROOT)/include/makeinclude/platform_macros.GNU
+ 'ssl=1' >> $(ACE_ROOT)/include/makeinclude/platform_macros.GNU
+ "$(platform_file)" >> $(ACE_ROOT)/include/makeinclude/platform_macros.GNU
displayName: Create platform_macros file
- powershell: git clone --depth 1 git://github.com/DOCGroup/MPC.git $(MPC_ROOT)
displayName: git clone MPC
- - powershell: perl $(ACE_ROOT)/bin/mwc.pl -type gnuace $(TAO_ROOT)/TAO_ACE.mwc
+ - powershell: perl $(ACE_ROOT)/bin/mwc.pl -type gnuace $(TAO_ROOT)/TAO_ACE.mwc -workers 4
displayName: Run mwc.pl on $(TAO_ROOT)/TAO_ACE.mwc
- - powershell: perl $(ACE_ROOT)/bin/mwc.pl -type gnuace $(ACE_ROOT)/tests/tests.mwc
+ - powershell: perl $(ACE_ROOT)/bin/mwc.pl -type gnuace $(ACE_ROOT)/tests/tests.mwc -workers 4
displayName: Run mwc.pl on $(ACE_ROOT)/tests/tests.mwc
- bash: make -j 6 -C TAO
displayName: Build TAO project
@@ -131,9 +201,9 @@ jobs:
displayName: Create platform_macros file
- powershell: git clone --depth 1 git://github.com/DOCGroup/MPC.git $(MPC_ROOT)
displayName: git clone MPC
- - powershell: perl $(ACE_ROOT)/bin/mwc.pl -type gnuace $(TAO_ROOT)/TAO_ACE.mwc
+ - powershell: perl $(ACE_ROOT)/bin/mwc.pl -type gnuace $(TAO_ROOT)/TAO_ACE.mwc -workers 4
displayName: Run mwc.pl on $(TAO_ROOT)/TAO_ACE.mwc
- - powershell: perl $(ACE_ROOT)/bin/mwc.pl -type gnuace $(ACE_ROOT)/tests/tests.mwc
+ - powershell: perl $(ACE_ROOT)/bin/mwc.pl -type gnuace $(ACE_ROOT)/tests/tests.mwc -workers 4
displayName: Run mwc.pl on $(ACE_ROOT)/tests/tests.mwc
- bash: make -j 6 -C TAO
displayName: Build TAO project